Advice to a young developer
I got an interesting email from a young developer today asking for my advice. I’m quite flattered that someone thinks my advice is worth a damn and since flattery will get you everywhere, here goes…
The question (slightly redacted for confidentiality):
My role in the company is to lead the development of a big project here in FOO and I’m working as hard as I can to give the best impression in my first project as the lead developer. The problem is that I don’t feel like FOO is the way to go for me, there are so many bugs in their product and development it’s so painful, but the company management is totally committed to it because of the high prices of the projects with FOO, and they will keep selling FOO projects. The thing is that I feel that I should be preparing myself for a better thing, and the thing is I don’t know which steps to take. Do you think you can give an advice in order to have a successful career as a developer?
As far as I see, there are two paths to go here and it is up to you to choose your path. When faced with adverse development conditions, you can either work to change those conditions OR leave for greener pastures. Both paths can be either rewarding or frustrating, unfortunately and the “correct” answer will depend wholly on you and the situation.
On the one hand, leaving is in some ways easier. It is quite tempting (especially in excellent development markets) to simply jump ship and find greener pastures to tend (to mix my metaphors). What you will often find however is that greener pastures are not always so green once you get there. As it turns out, percentage-wise, most software development projects have a lot of bugs and are painful to work in, so you may just be starting over in the same situation with less knowledge and leverage. Or you may hit the jackpot and find a great challenging place to work. Unfortunately, it’s often hard to tell until you’re there.
On the other hand, working to change your current conditions is hard but also a fantastic way to become a leader. If you can learn about new ways to organize your processes (agile practices or methodologies), new tools to improve your code (unit testing, coverage, continuous integration, static analysis), or new ways to leverage technology (frameworks, etc), you may find this immensely rewarding. Those rewards extend not just to the company but also to your own personal growth as a developer. But as I say, this can be a tough hill to climb. You will have to fight political battles (above) and change behaviors among your peers, which can be really hard, especially without support from those above you.
Ultimately, the question at any point in your career is whether your current position is the right position for you across a variety of concerns (personal growth, responsibility, leadership, salary, benefits, flexibility, etc). If the answer is no on multiple dimensions, then you should probably look elsewhere.
Whatever you decide, I would urge you not to run from adversity. Tough times are when you learn the most so it’s very important to meet tough times head on, buckle down, and see what you’re capable of rather than choosing an “easier” path, at least some of the time.

Hi! My name is Alex Miller and I live in St. Louis. I write code for a living and currently work for
Wow, this sounds like something I could have said many times over my career.
One thing I’ve learned as I’ve aged is that choosing your battles is important, but choosing which battles not to fight is also important. So you project has no DAO layer, a naive threading model, no unit tests, huge classes, etc, etc, … a single person can’t possibly address all of these issues within a single year. I’ve found the best approach is to pick one area of focus and understand that the others might stagnate or even deteriorate. But, giving 100% of your energy attempting to force a DAO layer on a legacy codebase is going to give you a tremendous amount of insight… probably more than if you got to greenfield a persistence layer from scratch. But I’ve spread myself too thin in the past by trying to fix all the issues at once, meaning that, in the end, nothing really got fixed, all I did was stop any further deterioration.
Summary: Pick one issue and give your all to fix it, rather than taking on all the issues at once and simply stopping the deterioration.
And don’t forget… free advice is worth what you pay for it. ;)
That is an interesting advice.
But: the mess was always caused by _someone_, and he might still be lurking around.
Ending up to be one who cleans after them is not exactly a fun thing to do, and I speak from experience.
I read some american software-dev blogs.
Because of strict laws, it is practically impossible to ever fire anyone in Germany, and sometimes I wonder if that is the recipe for an accumulation of incompetence not found anywhere else (like the US of A).
Anyone who agrees?
Cool Advice Alex.
I will surely try to follow.
Thanks
Prashant
http://prashantjalasutram.blogspot.com/
This young developer seems to be fortunate that he/she is leading this project and can at least try to make his team stick to good methodology as they work away at the bugs. I think that if those above are too restricting I’m not sue I would stay myself.
I think the answer is it depends.
Hi,
Excellent article – I really appreciate your Advice’s to a young developer like us, I have bookmarked it for later viewing and forwarded it on.
Cheers.
The grass is always greener, but sometimes it’s astroturf :-).
Good comments!
Very nice article indeed! Your thoughts apply to young and old alike.
I went from a small start up to the freakin’ federal government! What was I thinking?!!
From the frying pan and into the Dark Ages! (I like to mix metaphors too.)
Thanks for the, uh, encouragement. As much as I hate to hear it, I think you’re right. You always learn the most from the painful moments, including about yourself.
I spent a number of years battling as the Lead Developer in the sort of environment described. I found myself in a position whereby I was passionate about my team and the work they did, but did not care for the work my employer did or if I kept the job at all. This turned out to be quite liberating and although I may have become the proverbial thorn in management’s side, I was able to really effect some change (I hope for the better).
I have since left this world behind and now work freelance. At the time my team probably felt that management had finally beaten me into submission. Perhaps they were right, though I prefer to think that I had achieved more than I had hoped to and stayed longer than I intended.
Despite the stress, frustration and pain, I look back on it as perhaps the most rewarding period of my career so far. It shaped who I am and convinced me that change is possible and worth striving for.
My advice would be to have an exit strategy, but to stick it out and see what you can do to make things better. It could be your legacy.
And I also echo the sentiment that free advice is worth what you pay for it! :)
Hi,
i really like this article. Nine Months ago i was also faced with this same issue. we had ancient app with a lot of bugs and was practically frustrating everyone in my Team.
i tried to change things, but the CTO and initial developer of the app was not flexible to change, he preferred a one way traffic.
i found out after all struggles, that my personal growth, responsibility, leadership, salary, benefits, flexibility, were not really improving, then i decided to leave and do things one at a time.
this has really help me and now i really am happy.
Here’s a trick: If the developer sticks with it and finds strategies for dealing with FOO’s deficiencies as a dev environment, he or she could be very valuable indeed. It could be a career maker, especially given the value of the projects as described – each project is high value and clearly it is very saleable.
So the trick is, find ways to work around the issues. Ask the team to help. Make heroes of all of you. The funny thing is that if you become valuable enough, you can then push to get other environments in the mix – I really want “xyz” Mr Boss as this is becoming popular in the market and it’s also important to retain staff. If seen as a leader who delivers, they’d be nuts not to listen to this.
I always try to explain this thing in a different way. Companies are like big zig-saw puzzles (most of the time), and people are like small pieces that fit together and complete the picture. My experience is, all of us have to find out right fitments, and its not as easy as it seems.
Exit is always not the only option, yeah your advice is very practical, if you get no on multiple dimensions, its better to exit. I had been in this situation myself, but rather than just calling it good bye, started thinking, is the problem in me or I am in wrong place? I gave myself a good one long year and finally concluded something :-)
You have to wait a couple of weeks before I can disclose that secret.