Why changing jobs every few years is good for your career

 

I recently quit my job.   My letter of resignation was short and to the point:   I had accepted an offer at another company and was giving my two weeks notice.   I read and reread my email a few times, took a deep breath, and hit send.    I was now officially a short timer, and before I knew it, my last day had come.    It was a bittersweet occasion for me.    I had already said my heartfelt goodbyes, gave hugs, shook hands, and parted ways with coworkers who had become friends.   I shed a tear as I walked off into the sunset, but not once did I look back.

There are pros and cons when it comes to changing jobs.     The benefits of staying in one place for the long haul are pretty self explanatory.      The awkward time spent floundering about at the start is now a distant memory.    Having built up credibility, your input is actually valued.   You find yourself entrusted with critical projects, given more freedom and flexibility in execution, climbing the corporate ladder with every success.    The sky is the limit.     So I’m going to talk about the flip side and why you would ever want to give all that up voluntarily.

The obvious reason is unhappiness.    Maybe the opportunities for growth and advancement aren’t really there.    Perhaps the work life balance is non-existent.     You could have a pointy haired boss.     The technology stack could suck.     The company could be on a downward spiral.   It lost its VC funding and now the employees are leaving in droves.      There’s a whole myriad of issues that would make you want to leave.

But why would you ever want to leave a place where you are quite comfortable and content?    Well, there’s a fine line between contentment and complacency, and the longer you stay at a place, the easier it is for complacency to become complete stagnation.     A change of jobs can shake things up and expose you to new ideas.    Every place has its own way of doing things.   Ideally, the goal should be to learn new languages, design patterns, tools, and frameworks wherever you go.    It can also be quite instructive to pay close attention to the org chart.     For example, how do people report up the chain command?    Do they use horizontal integration, vertical integration, or a combination of both?   Also, observe the processes put into place by the company.    What is the product release cycle?    When there are blocking issues or showstopper bugs, how are these problems escalated?     Where are the bottlenecks?     There is no one size fits all when it comes to structuring and running a corporation, so by examining these things closely, you can figure out what works well and what doesn’t given a specific set of circumstances.    This will allow you to assist the company by suggesting improvements and sharing your own experiences.      Furthermore, this experience can refine your future job searches by helping you identify the well run companies.

On a similar note, by experiencing a wide range of different work environments, you can quickly learn what is tolerable and what is not.    For me personally, I’d never work anywhere that required a suit and tie.    Outdated and obsolete technologies like classic ASP are also a complete dealbreaker.    Free coffee and soda are a perk, but not a necessity.     Again, this helps you narrow down your search criteria when it comes to finding a new job.     In a way, this is similar to dating.     Much in the same way that you cannot know what you are looking for in a significant other until you have been in at least a few relationships, you cannot really know what companies will be a good fit for you, until you’ve worked for at least a few of them.

Which brings me to my final point.    Gone are the days where an employee joins a company and works there until retirement.      It is best to get used to changing jobs, because there are things out of your control, such as mass layoffs, budget cuts, and the collapse of the US real estate market, that can lead to unemployment.        To the uninitiated, finding a new job can be very stressful.   The mad scramble to update the resume, apply for positions, talk to recruiters, and run an interview gauntlet can be completely overwhelming*.       Starting a new job is even more stressful.    The ramp up process can be unforgiving, especially in the tech industry, where one is expected to be self-sufficient and be able to adapt on the fly.    In my first week at a consulting gig I did at Microsoft, I had no cubicle (we had to work in the atrium until we found enough office space for the whole team), no developer image on my laptop (we had to set up our dev environment from scratch), and no account in source control (we had to email our code in zip files so other devs who did have access could check our files in).     Oh and the project was already behind schedule so we needed to work weekends too.    By having gone through multiple job changes early on in life, hectic starts like this will no longer faze you later on in life, when the stakes are higher and you have a family to feed.      This will make your job transitions go much more smoothly and successfully.

 

*Luckily, there are many great books and resources on this.   Land the Tech Job You Love is one.    It contains a lot of great advice.   For example, you don’t want to make a disaster preparedness kit after an earthquake hits.   Likewise, you want to update your resume at least once a year, so that if a layoff or other disaster strikes, you’ll be ready.   Better yet, if a great opportunity arises, you’ll be ready to respond immediately.

 

 

Why every developer should work for a startup at least once in their lives

Shortly before I graduated from the University of Washington, I joined the startup company Twango as a software development intern. We were a web 2.0 company whose premise was to provide a centralized place on the web where users could upload, manage, and share all their digital media with friends. Our tagline was “Share your life”. Think of a more advanced version of flickr that catered toward power users and also had support for video, audio, and office documents. I was offered a full time job there after completing my degree in computer science, which I gladly accepted. Looking back, it was one of the best decisions I ever made in my life.

I got to experience a truly hands on learning environment that was far more in depth and educational than any of the projects that I had worked on in school. This is not a knock on the University of Washington, as there is only so much you can do in a quarter system and when you are constrained by the course material itself. The professor is not going to deviate much from her carefully prepared course plan*. The “curriculum” at a startup is much more fluid and dynamic. Because the team itself is so small, everyone actively participates in every aspect of running the company, from development, testing, design, operations, customer support, and even marketing. I had to master many different technologies and learn on the fly. This helped foster a “can do” attitude that has served me well over the years. It didn’t matter what language, tool, framework, or API was needed. I was willing and able to learn whatever was necessary to get the job done.

This amazing learning experience is free from the constraints of bureaucratic processes and red tape found in larger corporations. I am not saying that processes and development methodologies are bad, only that corporations tend to adhere to these things religiously, rather than exercising flexibility and common sense. At a startup, you are given a lot more freedom in what features you work on and how you will design and build them. For instance, Twango was missing a private messaging feature, so I went ahead and built one. At a giant corporation, something so simple would have required multiple meetings, requirements gathering, functional specifications, and a whole lot of other hurdles. That’s even assuming the higher ups would even OK the feature in the first place. At a startup, you can pitch your idea directly to the founders. At a corporation, you as a developer are typically pigeon holed into a narrow role working on a small subset of the functionality. At a startup, you have the freedom and the responsibility over the entire code base. It sounds daunting, but it’s actually quite empowering.

Of course, the best part about working for a startup? It’s a lot of fun! Sadly, most people forget that work can and should be enjoyable. Older, grizzled veterans of the development industry tend to become cynical over the years, and view their jobs as a way to collect their monthly paycheck. They forget the passion and enthusiasm that got them excited about computers in the first place. I’m lucky that I got to experience the startup culture straight out of school Otherwise, I wouldn’t really know what I was missing out on. As a result, I can screen the companies that I interview for, and tailor my search toward the types of places that evoke the same happy feelings I had when I was at Twango.

This is why I’d recommend anyone who recently graduated from school to go find a startup to work for. The pay will not be as competitive. You might never IPO or get bought out. But it is better to take that kind of risk when you are young. There will be plenty of time later on down the line to find a high paying job. Trust me, the skills you acquire at a startup will allow you to easily find one later. Not to mention, there will be other perks. The Twango founders constantly took us out for lunch, movies, and even the occasional ski trip. These are the sort of warm fuzzy memories that are truly priceless.

*To be fair, many of the University of Washington capstone courses do a good job of giving the student more freedom over their own projects.