September 24th, 2009
Don’t get me wrong: I love software engineering. I love developing applications and the challenges that we face when we have a complex problem and we have to model it and make it work. I really like the creative and technological aspects of programming. But talking as someone that has been for three years on some corporate companies, several projects and a few teams, that isn’t really what we do, is it?
From my point of view, here’s the cycle of generic corporate work:
- We enter a project, that may be starting or not and we meet the team
- We start by analyzing the project’s structure, learning how it works and what it does, during this time we may get some documents to read
- Then we get small tasks, like some bug fixes, minor development details and such
- Soon we start getting bigger tasks, and in time we’ll feel more confident on the project, we’ll know it well and start making ourselves profitable
- After the learning stage we become very valuable for the team, we’ll fix bugs faster, we’ll deploy faster, we’ll implement faster, and we’ll help the junior members of the team
- At some point we leave the project… maybe the project is finished, maybe we’re needed elsewhere, and we go back to step number one
Looking at these steps, I’d say that the best ones are 1,2,3 and 4. Learning is very important to keep me motivated. When I’m on a new project, I have to learn new technologies, new concepts, and the structure of the project. I’ll also get to know my team and I’ll learn a lot from them.
Step number 5 is the boring one. When we already know everything related to the project is when we’re most profitable for the company. At that time we mainly get to fix bugs, support the production environment, write documentation and maybe handle customers. We’ll also get new developments and changes, but often these new developments will collide with something already done that wasn’t expecting the new features. This may mean architectural changes that may prove quite annoying to accomplish.
When I’m at step 5, I feel my motivation getting lower every day. And the problem is, I spend the majority of my time at step 5. It comes a time when I get tired and start talking to management to get back to step 1, but management can’t allow that. Now that we’re important on the project, it isn’t easy to take us away, so we need to hang on, for the company’s sake.
Not all programmers dislike step 5. At step 5 developers have won a place on the team and are an important asset for the company: they reached the comfort zone. They may like it there, and sometimes step 5 provides some interesting challenges. Different people get motivated by different things. I’m not a step 5 type of people, but I know a lot that are, that really like what they do and they’re good a it.
This is, of course, my own point of view, and does not reflect the truth for other developers. For me, change is important, and the degree of different things I get to do everyday contributes to my motivation as a developer.