There are software developers that love to start projects. Especially in the Rails ecosystem. And for good reason. It’s easy. It’s fun. It’s low risk and high reward. There isn’t any technical debt. And they look like a superhero. Business people love them. Just look at all the work that was done in such a short amount of time. What’s not to love?
Of course, we know that this is because of a clean slate. It’s easy to make amazing progress when there isn’t anything in your way.
Build up some technical debt. Add the need to stop and think about breaking the app. And the velocity and superheroism starts to fade.
I’ve spent the majority of my career coming in post-superhero. It’s no where near as glorious as the fresh start, but multitudes more important and difficult. In my opinion, this is where the term engineer fits a little better.
There is a lot to think about at this stage. Maintain existing functionality while extending the application to new ground. And debt must be paid here.
A developer will often be compared to the previous developer that seemed so fast. Clearly the previous developer must have been smarter, better. Probably one of those 10x developers we hear about.
Oliver Eidel has written a really good article comparing pioneers and process people. Where pioneers are the developers that can throw caution to the wind, move fast, and make something great. And process people come in behind them and stick to processes.
What I got from the article is that these two roles are distinctly different. I agree. And that once an app hits the process phase, it’s time for the pioneer to move on to build something else. I disagree.
The best developers I know are a hybrid. Builder when needed. (Everyone loves to hack a solution together.) And a more thoughtful engineer when needed.
These are two different roles, but you are far more valuable to your team and your company if you can do both.