How to Improve Efficiency
(without dying while trying)
by Sergio Tomás (Badoo)
Common problem: You are working on something and the requirements change, forcing you to throw away all your nice code.
Defining the Problem
When doing a big project, you need to know where to start. Here your preparations are important. The bigger the project, the bigger the risk of requirements changes are.
The main issue here is the large amount of requirement changes. Things will change every day, until the project is done.
If you don't work efficiently, this will lead to a lot of wasted effort and work.
How to fight inefficiency
- Define the big picture (Planning, don't just go straight to coding)
- Create a skelton (Since you;ve akreay planned out what you need you can now create a skeleton for the whole project)
- Defe your views (Rough definition of the designs/layouts but don't do pixel perfect yet! Otherwise you will waste time when you have to change things later)
- Divide & conquer (Choose between a tiger or a lot of kittens! Break down into many simple tasks. Get something working as soon as possible so you can get feedback and iterate)
- Abstract your problems (Keep iterating from the most abstract level down to the fine details (last), start with mocking).
- Final polishing (This takes a lot of time so you only want to do it once! 20% of the work, taking 80% of the time).
- (Pixel perfect is expensive), only do it once, last thing you do
- YAGNI (You are not going to need it), don't implement stuff you don't need!
- Blockages: Face blockages as soon as possible. These are not productive, just a waste of yir time, fix asap! Try to never be blocked for more than an hour!
- Raise issues as soon as possible. If you think what your are implementing does not make sense then let people know as soon as possible!
- Don't improve unfinished things (e.g don't spend time polishing before the feature is done)