|
Don't develop in
your day job and you will be a better developer
By Nemanja Kostic
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. I
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 an
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 the JDK
tutorial, keep up to date by following InfoQ/DZone posts and start
producing. I figured out that I was missing 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.
Another benefit is that you don’t code for a 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 how your architect tells you
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 high 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 a 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 a 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 my 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. The world
is a huge place with lots of opportunities. Go for it…”
Until next time,
Nemanja Konem
To
read more of Nemanja's work, visit his blog.
|