The Different Types of Development
I figure that there are 4 different types of development:
- Create something new
- Add features
- Maintenance
- Tie two programs together
Most of what I've done at work is 2, 3, and 4. Most of what I do at home is 1 and 2.
When I'm at home, I write programs from scratch or add to the ones I've already written. I get to be creative in what, when, why, and how. This is fun. If I need to maintain old software, generally I'll wipe it away and start from scratch with a new tech stack. I have a list of projects that would be interesting to work on, but most of the ideas that have been on the list for a while require me to interface with other programs - I can't just go and make something without any care about how it works with the rest of the world; I have to think about how other people have written their code and how I am constrained by that.
At work, I don't have the freedom to (completely) choose what, when, why, and how:
- The what is what PM/PO/etc. determine should be done
- The when is both "during work hours, generally", and "before so and so deadline"
- The why is because I'm getting paid
- The how is determined by the existing tech stack that the company/BU/Org/group/team uses
I don't have most of the freedom of working on my own projects at home, but I do generally have the ability to influence, question, and assist with the software that's around what I'm responsible for working on. If I have a question, I can ask. If I find a problem, I can either offer help to fix it, or just tell others to do so. If I need help, I can ask for it.
They're two very different environments, each with their pros and cons. Generally, the more programming I do at work, the less I do at home, and the opposite is also true.