--- /dev/null
+# When to code
+
+Our job as programmers is to solve real-world problems in a satisfactory manner.
+As we are coders, our first instinct is to jump in and write some code.
+This is often a mistake, consider:
+
+* Coding is very expensive.
+It takes a lot of time, not just coding, but gathering requirements from the business people, deploying it to a production environment, doing end-user testing, maintaining it...
+* There is a massive amount of software out there- chances are, someone had the need before and paid someone to do it.
+If it is a common problem, there is a chance that there is something that will fit exactly your needs (and if it doesn't fit exactly, you might need to rethink your requirements- someone went over the full process and probably you have not- they might have figured out something you have not).
+Perhaps it's got a price tag on it, and maybe you think it's excessive, but if they are commercializing it and they have a few customers, consider that the cost of development will be divided among all customers- and you might not have this advantage.
+* Even if there is no specific off-the-shelf software which solves your needs, some generic software such as an spreadsheet or a content management system, or some specific features such as a word processor's mail merge functionality might come close enough to your needs.
+It is likely that at some point you will outgrow it (and software such as spreadsheets are specially amenable to being twisted and stretched terribly beyond their intended use case, resulting in terrible monsters which you should be wary of), but starting with them might help you frame the problem better than starting with code.
+
+Still, there are lots of uncharted territories- there are needs for which no decent off-the-shelf software exists, or you might have already examined all possibilities and they truly don't fit you.
+Or maybe you want to create a competing product, or doing something truly innovative.
+Or (this is a common scenario) you are not able to convince someone to use an off-the-shelf solution.
+In that case, you will have to code.