This story is about oursourcing to our neighboring country. However it does not really tell the whole things about every agencies there. This is an experience that I heard from my friend that outsource a project to them.
It's an IT app project. iPhone + back-end. Generously have an admin page as well.
So months after months, the team keeps delaying the project. However the progress is not improving. The performance of the task is below the par. It's somewhat unaccepted to publish if you particular about quality.
There are problems with the result.
- They don't use the correct components to build stuff. It might looks like the mockup but it's not right. It can be deceiving, or ineffiicencies for user experience. Yes there is in the world that we call it custom, but when you custom things, things behave better not the way around. I saw this on multiple scenes. Some are okay but are not. For example to displaying a dynamic notifications you cannot use hard design a text, a view on a specific position. There is right way to do that which is using UITableView. On this issue, it can be considering as 'cover up', or cheating. It's the eye candy where you can show it to your client but on the back side it's just a cover up. Which is not going to working on the real situation.
- API design is broken. They didn't think about the project in whole. The UI on the iPhone is there but the API call is not exist.
The important of have CRUD for many related stuff.
- The client as designer also not really do well, because not giving the right asset. Thus make the result does not look at best because of asset bluriness.
What I can learn from it:
- I somewhat can see to be at the client side. I am a developer, but being on the shoes of a client who pay money to get things done.
- Analyze the specifications. Know what really matters for them. In short what solution we want to provide, how well it is. Is your client care about UI, design or user experience. It does matter because in the end of the day when you deliver the result those things they want to test it.
Knowing the hardest thing on the development. This need to be studied and identify as early as you can. Break the hard thing first. Really. If it's not possible, I prefer to refer to another developer that can help with the project. I pass it out when you possibly can not do it. We have speciality and limitation.
I know we can learn. But not everything and it may take so much time that you will might delaying the project. Client have date that they want to publish and do some marketing to let people know. Even investing on ads or what not. So not be on time can be hurtful.
- Teach client. Client is not in IT background. Bad thing can happen, and this not working, that is not working on certain condition. Teach them. They might think that you are actually did not do anything because they don't see the result. But actually, there is a lot of code and testing were involved. Teach in the way that normal people could understand. Give analogy for example, use common + jargon word. Now jargon at all cannot tell the deep inside the engineering stuff. Using common words make them able to relate, and somewhat understand.
So that's it from what I summarize today. Every experience we go throught we can learn from it, and we can do things in a better way in the future or today.
I feel satisfied when make good thing so, that is me. Sometime it turn out that product is not good enough it might be because of laziness and lack of motivation or inspiration.
Other way around is to embodied a system in the workflow so that we are forced to make thing at acceptable level.