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.