Christian Posta — Software Blog

Become the best you can be at your profession. If you've stopped learning, you've given up.

Serious about your software career? Leave your job

I recently 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!

Tags: , ,

21 Responses to “Serious about your software career? Leave your job”

  • SME says:

    I think so, your best job security is your resume, get paid to work on open source projects is a great opportunity to stay in touch with the smartest guys out there.

    Try to leave your zone of comfort and expose your self to new challenges is a good attitude to keep growing

    Hope you’re enjoying your new journey and I wish you a goooood luck! :)

  • HB says:

    All basically right but

    The longer you stay, the less motivated you get to learn the new technologies that aren’t being used at your company

    is not true. If you truly have a programmer’s spirit, then you ALWAYS want to do things better. Even if you are on a job for 20 years, you will STILL want to rewrite that old COBOL application in Haskell :)

    Also

    my wife and I are expecting our first child

    THAT will be your biggest challenge to learn new stuff, or rather, the lack of available time that comes with it. :)

    Good luck!

  • Bon says:

    Couldn’t agree more. I know so many Java and C# developers in their $110K-$150K salaries, who, if you threw a COMPLETELY different problem at them, would panic / flail / thrash.

    Whenever I feel myself getting too comfortable, I shake things up. I have a wife & 3 kids, it can be scary, but my gigs pay well, so in the end it works out fine.

    I see so much human “middleware”, bolting this framework to this application, blah blah blah… nothing wrong with it, but many of them would have their asses handed to them if you threw them into Project Euler or a Google Code Jam.

    If your livelihood depends on solving problems through code, and you’re not doing what the author of this posts suggests, you’re either dumb, unmotivated, in denial or just plain lazy.

  • In general, I agree with the tone of your essay. But the thing is, there’s no “one true way” to live this life. You may believe that programming is the only way while in some part of the earth, programming is just 10% of the activities and the rest are communication, collaboration, or understanding business needs (domain knowledge).

    @Bon: the same can be said against people who competes in these “math” based problem solving competitions: they may not be good software designer. The problem lies in specializing and ignoring the other part of the software development activities.

    In my case, I chose to learn the business part: be it marketing, accounting (financial), or sales.

    The point here is to keep on learning.

  • oldfart says:

    Taking a chance on a new job is the wrong thing to do before you have to deal with the stresses of your first baby. You may think you can afford the risk if your wife works, but you should wait to see if her priorities change. If you are (rare these days) the only breadwinner, consider what happens if your new, intriguing, demanding job does not work out.

    The economy is still shaky. There are lots of hungry competitors out there. Are you that much better than they are?

    I do not disagree with your basic premise. Shift around every 3 to 4 years if you can, to stay sharp in pure software engineering. But remember that you will probably be obsolescent by age 45.

    • calenti says:

      You know, if someone posted on a forum that a developer was useless until they reached age 30, there would be howls of outrage. Why then do you get to state that a developer is obsolescent at age x? The obsolescence happens when a person loses interest in excelling in their field, and that can happen at any age. I know 28 year old developers who don’t think they have much else to learn and 48 year old developers who are still entering programming competitions and piloting new technology at their corporate jobs.

      This internet echo chamber tends to repeat memes without considering their implications. You become obsolete when you stop trying to fit into the present, not when you hit a certain anniversary on the calendar.

      • oldfart says:

        What part of PROBABLY don’t you understand? People wear out. It is hard to be on the engineering cutting edge at 45.

        Someone 45 today was 25 before the Internet became the dominant mode for business programming. If he has stayed sharp and fresh, he has made a really significant investment of effort. How LIKELY is it that he will continue to invest that same level of energy as he shifts from company to company as a techical speciaist, probably managed by people younger than himself?

        It’s not just about the talent, you know. The technology keeps changing rapidly (although not necessarily improving functionally). Will other people BELIEVE that he can keep learning new languages, coding styles, and OSes? If he knows how to write efficiently to disk, will he still be able to write to exabyte hyperspatial st orage? Can he design an interface for genetically-improved chimpanzees? Can he handle one job interview in Mandarin and the next in Tagalog?

        Businesses AS A RULE no longer care about loyalty from or to employees. Their concern is just imagined input to the bottom line (not necessarily the true input). What he was a hotshot at last year is of no value right NOW. As Michael Corleone says, “It’s not personal, it’s just business.”

        If you have never read “The Jungle” by Upton Sinclair, take a look. A strong, well-intentioned, capable young man is chewed up and spat out. It’s just business.

  • Toni says:

    One way to keep things interesting is to join a company that does projects for different customers and ask for a new project every 1-2 years. In the past four years (working with .NET) I have done: desktop development (WPF), web development (Silverlight), cloud (Azure), integration project against system written 15 years ago, calling web services from excel using msxml.

  • Dan says:

    I worked in the healthcare arena for almost 10 years and had a cool work-from-home gig for about 18 months before I realized that I had a lot of the same thoughts that you presented in your post. The company was pushing me into more of a managerial position, which I have tried and failed a few times.

    Thank you for reaffirming my decision to not only stay in technology by switching jobs, but also to change industries to financial services with BOA.

    Totally different world than having root on every machine in the company. :)

  • JBR says:

    From the headline, I thought the theme of this article was going to be, “work for yourself and then you don’t have to worry about it.”

    My advice:

    Work for yourself and then you don’t have to worry about it. Companies today are not looking out for you… Finding another company owned by someone else won’t change that. So you need to look out for you. The model of the future is self-employment – create your own job. Go follow your dream and do that thing you’ve always imagined. Build and run your own enterprise and then you will call the shots and set your own agenda.

  • jeff says:

    Having been doing software development since 1988, I could not agree more. I have changed jobs, on average every three years since 1988. I would never have had the experiences with technology I have had otherwise.
    I just left a company where the majority of the decision makers had been there for 10+ years and they continued to make the same mistakes. Add in developers that have been there 10 years and think they are the best and you have a recipe for disaster. The best thing that could happen to those developers is to get laid off.
    I have a family as well, if you know the risks, and you are good, then changing jobs is not a problem, I once quit at 11am and had another job by 11:30, people call me to work with them.

    New job = new challenges = what makes me love getting up every morning for work.

    When job = boring = time to move on.

  • Mike C says:

    Agree. I turn 48 in a few months, and I’m nowhere near wanting to sit still and rot in some cushy job, no matter how high the pay. I’m not sure I imagine ever wanting to do that.

  • Reginaldo Russinholi says:

    Great article Christian.
    Two years ago my wife was pregnant and I had to choose between stay on a company where there was no chanIlenge and move to a new company on another city. It was very difficulty to me to make this choice, but I decided that I had to change and I did.
    So I agree with you and you make sure that as soon as your kid born, your priorities will change and you will think much more before decide to change, but I believe that what matters is to keep moving foward and as you said “staying hungry”.

  • arul kumaran says:

    Very true and good points. That is why I like being a contractor. Good pay and good variety. Always learn how things should be done and how things should not be done.

    I have blogged on similar aspects relating to Java at my site.

  • James says:

    I agree, if a job is boring you must change. No point doing that same boring stuff repeatedly. But what if the place you work continue to offer good challenges (of course with decent increments :-) ) . Should you move on? If you still move on, I think that’s a selfish motive. That means you either don’t care about your company but only your “self”.

    Put yourself in the employer’s shoes and think. If your employees keep changing jobs inspite of you providing the best possible environment, how would you feel? You need find a right candidate to fill his place.

  • Jack says:

    @JBR

    I was thinking the same thing. Working for yourself presents opportunities to learn technologies and solve problems that you could not at your full time job. There is the added risk of your product’s success, but most folks are aware of that risk.

    Good luck with your new job Christian.

  • chigs says:

    Yp… in the case of your technical career… It also require to think “Out Of BOX”…. Wish you good luck. :)

  • Jinson says:

    Thanks for your motivation.. I was same like your situation, and I resigned my job last week :)

  • All the Best. And Thanks for the good motivation given to us.

  • nitin says:

    Nice Article

  • John says:

    Good points! I am a senior .NET developer (C#, WPF, WCF, SQL-Server) and I am serving notice period. I would really appreciate if you could email me of how I could work as a consultant who could take up .NET projects and deliver from home in Asia. Could you also let me know of .NET open-source jobs? Thanks a lot!


Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>