You Are Not Making Software
Published on 2016-07-10
You are not making software - you are making a product that will be used by people. The people is the most important part!
No matter how much effort you put into the code you are writing it might not matter if it is unusable - you can have written your smartest algorithms and commented them perfectly with perfect (tabbed - because it is the best way) indentation - but it still have to fit the purpose.
Every piece of software is written with a purpose. It might be to fulfil the need of a group of users, maybe a specific user - it might be because a client want the software - or you might write it in order to experiment, have fun, learn or to become a billionaire.
The clearer you specify the purpose before you start the greater the chance to actually hit the target - whatever it might be.
It is very easy to get lost when you start coding. I know I certainly do - a lot. When the keystrokes fly wild and the problem mode kicks in - being in the flow - there is no limit of the code streaming from my fingers. But it might all be in vain - if the software written during this flow state doesn't fit into the overall goal of the product and/or it doesn't match with the needs of the humans that are intented to use the product.
We - the developers - often have expectations of the technical abilities, needs and desires of our users that greatly exceed their actual ones. It is all natural to think positively off other peoples abilities etc. and somewhat try and see our own reflected in theirs - it is a great feeling to develop something for someone that you can actually use youself! Often though - it is not a match. Often I find that I've gone off a tangent and made something I thought would be cool or clever - but doesn't really fit the needs of my end users.
The agile methology is a great way to try and fix this. The focus on user stories - implementing on exact user need at a time - with nothing more than what is needed for only that feature - it keeps focus - it keeps all the code relevant.
However on my personal projects - or projects where I'm the only one developing I tend to get sloppy. This is often combined with programming that isn't directly tied to user stories - like refactoring etc. - it's a touch nut to crack but these situations require focus to keep all the output sharp and on point.
This might all seem pretty obvious - with no need to mention - but please keep it in mind when you make software - it is (most likely) written for a human out somewhere in the world - and they don't care about the code - they care about the product.