# Efficiency (without dying while trying) - Sergio

## (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).

### Extra tips

* (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)

## Slides

<http://www.slideshare.net/SergioTomas2/how-to-improve-47453280>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://droidcon.gitbook.io/2015-berlin-barcamp/efficiency-without-dying-while-trying-sergio.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
