Christian is a Principal Middleware Specialist/Architect at Red Hat specializing in developing enterprise software applications with an emphasis on software integration and messaging. His strengths include helping clients build software using industry best practices, Test Driven Design, ActiveMQ,Apache Camel, ServiceMix, Spring Framework, and most importantly, modeling complex domains so that they can be realized in software. He works primarily using Java and its many frameworks, but his favorite programming language is Python. He's in the midst of learning Scala and hopes to contribute to the Apache Apollo project. Christian is a DZone MVB and is not an employee of DZone and has posted 53 posts at DZone. You can read more from them at their website. View Full User Profile

Serious About Your Software Career? Leave your job

  • submit to reddit

Just a few months back, I resigned my position as senior software engineer and technical lead for a middleware services group at Wells Fargo. The job was great: work from home, great immediate manager, respected among the team members, trusted to explore new technologies when justified, boss stood up for us and got us the tools, training, and working environments we needed, etc, etc. Something still prompted me to move, and it’s not the first time I’ve done so. I’ve opted to resign jobs that had great setups in the past, either as a full-time or consultant, and in this blog I try to articulate why.

I believe to be successful and well-rounded in the technology/software space, you have to change jobs every few years or so. Ultimately, as a software engineer, your job is to solve problems using technology. In most cases, a problem can be solved in many different ways, but not all solutions are created equal. The more problems and solutions you’ve seen and experienced, the more apt you are to solve the problem with a “better” or “elegant” solution. In my opinion, you have to experience how problems are solved in different groups, and different companies using different methods, different approaches, etc etc to really become proficient at problem solving and weigh the benefits and tradeoffs that come with a solution. Otherwise, the traditions and customs of a single company crush your mind from thinking “outside the box” or evaluate how similar problems have been solved in the past by similar companies.

Another part of the equation is ability to learn and your exposure to new technologies. Big companies offer the “this is the way we’ve always done it and we’re not going to change” mentality which is really a career killer for a software engineer. If you’re career goals involve trying to climb the corporate ladder, then by all means embrace the corporate mindset but if you want to stay in the technology space and excel, you will have to seek out opportunities to expose yourself to new technologies and problems..

I feel at this point in my career, I can’t settle for all the comforts of a cushy corporate job. I am still young enough and interested enough in technology to the point that I want to push myself. I want to get out and be exposed to new problems. I crave learning and the challenges of doing so. I honestly feel that if you’re not learning and not solving new problems and not thinking outside of the box you’re going to end up like those technology folks complaining about not having a job because the technology they cling to is slowly going away or drying up. I don’t want to end up complaining about something that I have control over right now. In the end, the technology industry is about problem solving, ability to learn, and pushing yourself to not get comfortable. Maybe I’m cynical in this respect, but the longer you stay at a big company, the more locked-in you get and the more dependent you become on that company (pension, retirement, tenure, job-security, whatever). The longer you stay, the less motivated you get to learn the new technologies that aren’t being used at your company. The longer you stay, you *think* you become critical to their operations, but before you know it the operations themselves are being phased out and your chances of being kept around are becoming slimmer and slimmer. I believe times have changed, and trying to stay at a corporate job in a company for 30 years is a career killer for a software engineer. I want my resume to be my job security, not the number of years I’ve had the corporate mentality beaten into me.

Who knows, though. My wife and I are expecting our first child in the next few weeks, and I know my priorities will shift big time. My focus will be on her and my family. Maybe I’ll do a 180 change of opinion about staying at a big company. But while I’m still motivated, I have to explore other options and opportunities that I know will solve all three of those items mentioned above: exposure to problem solving, learning, and staying hungry. So I continue my journey in the software craft by taking on the role of Principal Consultant at an open-source subscription company, FuseSource, who is the support company behind Apache Camel, ActiveMQ, ServiceMix, CXF, and a few others. I will be helping different companies use these open-source projects, facilitate proper design of their architecture, deliver training, and i’m sure much more. It seems to be a good balance of exposure to new problems, learning opportunities, and working with some of the smartest people in the open-source space which will drive me to stay hungry. Wish me luck!

Published at DZone with permission of Christian Posta, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)


Jammer Man replied on Wed, 2012/05/23 - 10:22am

Agree with the author 100%.  I see resumes of people who have been "Software Engineers" for 10+ years with the same company and have been laid off for one reason or another.  They were never exposed to new technologies, never took any initiative on their own to expand their knowledge.  They will have a hard time finding a job.  The longest I have ever stayed with one company is 3 years in my 20+ year career.


Dave Co replied on Thu, 2012/05/24 - 12:48pm

I respectfully disagree with this assessment.  Leaving a job puts your employer in a really bad spot.  The cost of losing a good employee is significantly higher than retaining them.  

"When an employee leaves, he takes with him all the skills and knowledge which were acquired at the cost of great time and expense to the company.  In addition, when the IT department is running understaffed while management searches for a replacement, the loss of productivity comes at a huge price.  If the company chooses to hire consultants to help with the workload in the interim, there is a hefty cost involved as well."

Don't get me wrong, I definitely think that people have to always strive to learn new things and push their technological boundaries or else they will be left with an outdated skill set very quickly.  If your place of employment is a good one though, it behooves all parties involved to find a way to stay with the company but doing something new.

I think people take for granted the money actually being invested in you as an employee. 

Wal Rus replied on Thu, 2012/05/24 - 3:51pm

“The mind is sharper and keener in seclusion and uninterrupted solitude. No big laboratory is needed in which to think. Originality thrives in seclusion free of outside influences beating upon us to cripple the creative mind. Be alone, that is the secret of invention; be alone, that is when ideas are born.” - Nikola Tesla

Gordon Milne replied on Thu, 2012/05/24 - 5:10pm

Being a software engineer is not about always using the most recent technologies. It is about solving real world problems with software. This can be done (just as well) with FOTRAN as with Java/C#/Ruby/whatever-takes-your-fancy.

If it is important to you to work with the latest and greatest technologies then you will have to change jobs every few years because most businesses cannot afford to  have expensive human beings churning existing products to "make them better" when that act of making them better is not helping the business achieve its goals.

And technology is not everything.

There are people working with C++ that have been in the same organisation for years and they are still learning. Now, in my more sarcastic moments, I might speculate that this language ensures the people remain newbies but today I put my sarcasm aside and move onto more important matters.

People that stay around in organisations for years are a MAJOR asset. Organisations that can retain their staff for extended periods of time keep doing well. The organisation might not be a stellar performer. They might not be the next Facebook or Google but they persist and their people keep adding value.

Retaining institutional knowledge is important otherwise everything needs documenting and we know how many HATE doing documentation. Much work in the area of business processes is about ignoring people and forcing straight-jacket processes on them so that people are unimportant. This undervalues what makes people a business' greatest asset.

So, job hopping every few years may look and feel good to you now but as you gain experience, and get more expernsive, you might find it harder and harder for you to get an interesting gig because all the really interesting stuff isn't about the technology any more but about the business use of it.

Gordon Milne replied on Thu, 2012/05/24 - 7:57pm in response to: Wal Rus

Well, I certainly find it hard to think when I have other people chipping their two pennyworth in every other second as I try to think. In case you didn't recognise my description I am talking about brain storming.

However, when you need to get something done you generally need the help of others. Sitting alone, on a mountaintop[(?) as you come up with the next best thing may be all well and good if you fancy a profession as a navel gazer but if you want any of your brilliant ideas to get a wider audiance or even make it into a product you need to involve others at some stage.

So, off to your hideaway in the mountains to come up with your great ideas. The rest of us in the real world will be happy to look them over when you get back and see if he want to help you "make them real"


Jammer Man replied on Thu, 2012/05/31 - 10:44am in response to: Gordon Milne

Totally wrong.  You cannot depend on a company to have your back, so you've got to fend for yourself.  How one fends for themselves is to stay current with technology.  If moving on to another job every 2-3 years is the way you aqcuire new skills, then so-be-it. 

Joe Wezensky replied on Thu, 2012/05/31 - 11:38am in response to: Dave Co

Who cares about the company?  They certainly don't "care" about you.  As soon as they abandon their "build vs buy" strategy, have a bad year, switch to a new vendor, rebuild with newer technology... you become an expensive employee with very little value.  Moving into management and leaving technical work behind is the only choice that may save you.

You really should care more about your welfare rather than your company's.  They certainly care more about their bottom line than they care about you.

This is what I've learned by doing this for over 25 years.




Jaffa Wify replied on Fri, 2013/06/21 - 2:37am

 The importance of this document cannot be understated. Its foremost function is to record the client's business needs and requirements in written form and become the foundation for the rest of the software development process. Once these requirements are compiled, the document becomes the record of both the client's and developer's understanding of what the software should accomplish. Thank you.
ottawa best criminal lawyer

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.