Sounds crazy right? Keep on reading, maybe it won’t be by the end of the story…
For the last 8 years I was a hardcore Java developer. Worked on many different projects, various kinds and various positions – from junior to senior, team leader, project manager, lead developer and architect. But all in all, every working day of my life contained in average 80% of pure coding.
Then I decided that it’s time for a career change. I quit my job, moved away from software development companies and became a solution architect in an insurance company.
Why? Mostly because anyone can be a Java developer these days. You don’t need a Master degree to be a code monkey. Just read JDK tutorial, keep up to date by following InfoQ/DZone posts and start producing. I figured out that I was missing a real business know-how and that I am not a subject area expert in any business-related field.
Being an architect in a non-software company has benefits. You work for internal clients and don’t bring money into the company. You just spend it.
Other benefit is that you don’t code for living anymore! It took me a while to realize why that is actually a benefit. Well, I am a developer by nature and I missed it naturally. When you are developing something all day at work, you don’t have much nerves/energy/enthusiasm to do the same at home in the evening. No matter what software company you work for (Google, IBM, Oracle etc.) you will always do what your boss tells you to do and what your architect tells you how to do it. It will never be exactly the way you want it.
When you are not programming during the day (and we all know that architects just throw documents over the wall for somebody else to develop it) then you have a wish to program something at home. But this time it’s different. There is no time pressure. No clients. You develop your way, what you want and how you want it. That exciting feeling I had long time ago, came again. It didn’t burn out, but was just pushed down under every-day-heavy-weight-high-pressure-development work. I did things that I always wanted to do. Read “Design Patterns”, “Effective Java”, “Beyond Software Architectures”, “Java Puzzlers”, “Java Concurrency in Practice” etc. and started implementing some ideas I had pending long time ago but never had time/energy to work on them. Now I have enough time and energy to think about every implemented class, to test it properly, to document it, to play around with different performance tuning options etc. I want to be proud of every line of code I make. Life is too short to waste it on something that you don’t like or despise or are ashamed of later.
Suddenly I figured out that I did many things wrong just because of time pressure. I knew they were wrong, but had to take short cuts to meet tight deadlines. And that sucks! That is what is killing your will to continue coding and what makes you a terrible developer.
Some of you probably work on nice projects and completely disagree with previous statements. Fair enough. I envy you guys. There are others that probably feel the same way I did before.
My advice to this latter group is: “find a job that brings you a financial stability but doesn’t kill your desire to develop your stuff in your free time”. That job can still be with some software company but don’t be afraid to let it go in case it’s not. World is a huge place with lots of opportunities. Go for it…