Setting clear goals to help guide your career decisions

For the sake of argument, let’s say that you’ve been working as a software developer for a while and you’ve been able to advance in your career. You’ve gotten a few raises and maybe a promotion or two. If someone were to ask you how your career is going, what would you answer? Better yet, how would you answer? You might say that it’s going well considering that you’ve been able to advance financially and have been promoted to a more senior position. Is this a good enough answer? Are promotions and raises the only measures of success and failure for our careers. If you’ve been following the DREAM principles and have taken the time to DISCOVER who you are and REFINE your goals, then you have a lot more data points at your disposal to answer these kind of questions. Most importantly, you have the career goals that you’ve established and can use to quantify your success and measure how much progress you have, or have not, made towards them.

If someone were to ask you how your career is going, what would you answer? Better yet, how would you answer?

As I’ve mentioned in previous posts, when I came out of college I didn’t really have an idea of what I was going to do with my career.  I was not really prepared to be a professional software developer at all. Nothing in my youth or schooling had gotten me ready for the real world. In fact, for the first few years after school, I just did whatever was in front of me and took every opportunity I was presented with without much regard to career path or any other personal goals.

At first glance, you could say that this was working well for me. I was progressing rather quickly at work and I had become pretty good at my job. In the first 5 years or so, I had switched jobs once, gotten several raises and had already been promoted into a management position. To a certain extent, these minor successes had blinded me to the shortsightedness of my career choices. It took me a while to realize that although I was advancing, I wasn’t really doing well in terms of my career.

You see, the first job I took after college consisted mostly of writing backend applications in Perl. Then, I switched over to a job working at a small Cold Fusion shop.  Neither of these programming languages were what I considered cutting edge and, in fact, I could see that there was no future in them for me. Yes, I was gainfully employed, but I was losing a lot of ground with respect to the changes that were happening in the software development industry. There were new programming languages, tools, technologies and process that were taking off and I wasn’t getting any exposure to them. This realization hit me like a ton of bricks. I knew that if I didn’t do something about it quickly I would soon become pigeon holed into the niche programmer that I was becoming and it would be really difficult to regain all the ground that I had already lost.

I realized that if I did not set these goals for my career I ran the risk of digging myself into a hole that I would not be able to climb out of.

So, what happened? How did I get to this point? How could I have gone for so long without realizing that I was falling behind and coding myself into irrelevance? After thinking about this for a while, I realized that I had never really set any career goals for myself. Up until then, I had been reactive. I would only ever consider the opportunities that fell into my lap. I wasn’t proactively looking to take the next step to better my career or progress towards a goal. This was a HUGE eye opener for me. I realized that if I did not set these goals for my career I ran the risk of digging myself into a hole that I would not be able to climb out of.

goals-signI immediately pivoted and started working towards what I felt were more appropriate career goals. I decided that I would go back to working in the C# .NET programming language that I had started looking into a few years before. I would use that to try to get my career back on track. After realizing that this was not going to be possible at my existing position, I decided to leave my management role and take a developer position with a different company that was using C# and other leading edge technologies, tools and processes. I knew that it was a very risky move. I was essentially giving myself a demotion but I also knew that it was the right move for me in the long run. I was banking heavily on my ability to learn and excel at anything that I set my mind to. In hindsight, I know I was very fortunate that my gamble paid off in the end.

At this point, you might be thinking “Wait, what’s so wrong with being a Perl or Cold Fusion programmer?” Well, nothing really. I could have stayed at the same job or even gone somewhere else and continued working in either of those programming languages. Maybe I would still be working somewhere in that space today. In fact, I have a couple of friends that are still doing really well as Cold Fusion developers. The problem wasn’t that I didn’t think I could make a career out of Cold Fusion or Perl. The problem was that I didn’t want to…and I had never intended to. I had ended up there because I had not been focused on my career and had made decision without setting or considering my long term goals.  I knew there were other things out there that I wanted to do and I realized that the only thing keeping me from doing them was myself. I had never really focused on my career or set any goals that I could work towards. So I just took what was available and didn’t really consider where I wanted to be in 5, 10 or 15 years.

Things that I didn’t think I was interested in when I was in my 20’s have become a lot more appealing to me now that I’m in my late 30’s

successAfter having refocused and refined my career goals, I took the necessary steps to align my career with them and start making progress in that direction. Soon, I was advancing just as I had at the onset of my career but this time it was more in sync with my long term goals. As it turns out, this wasn’t the only time I had to reset goals for myself. In fact, I’ve found that I have to do this fairly frequently. This isn’t necessarily a bad thing. We are all growing every day – changing as developers and human beings. Things that I didn’t think I was interested in when I was in my 20’s have become a lot more appealing to me now that I’m in my late 30’s. At the same time, our young industry is changing at an extremely rapid pace. New technologies, tools and processes are being developed every day that might make us reconsider our goals from time to time.

The key takeaway from all of this is that we should always be working towards some goal. That goal might change over time, but it’s crucial that we always have one to help guide us as we navigate through our careers. How can we really quantify our progress if we don’t know what we’re supposed to be progressing towards?

Without [goals], it is difficult to determine if you are heading in the right direction or not. In fact, goals are what will determine that direction.

In order to know whether you’re making progress in your career, you need to establish the goals that you are attempting to reach. Without them, it is difficult to determine if you are heading in the right direction or not. In fact, goals are what will determine that direction. Setting goals is not an exact science, so don’t expect to get it right the first time around. The key is to always have a goal that you’re working towards so that you can remain focused and make career decisions based on whether the outcome gets you closer to achieving these goals. So remember to stay focused on your career and frequently reevaluate your goals so that you are always working towards something.

Post Footer automatically generated by Add Post Footer Plugin for wordpress.

Read More


Climb the Right Ladder

Once in a job you will quickly discover that a broad array of technical career roles exist. At a high level, do you want to be a programmer or manage programmers? If you want to remain in a hands-on role developing software, do you want to go with the architect or engineer track?

In short, many ladders exist for you to climb, and you need to choose the one that aligns best with your interests and strengths. Fortunately, you can often leap from one ladder to another, so you are not stuck forever on one of them if your desires change over time.

The Technical Climb

Most companies offer a technical track for software developers that may branch into sub-tracks as you move along. Typically the levels are engineer, staff engineer, senior engineer, principal, chief, distinguished engineer, and then fellow or CTO. Not all companies have (or need) all these levels, but this categorization is common.

Somewhere up the track, usually at the principal level, the track splits into architect vs. engineer sub-tracks.

track1Architects excel at high-level design and structure. While they also are often excellent coders and deep in technical knowledge, they are capable of understanding customer needs at a high level and architecting solutions to them. For example, the architect of a large website may be juggling in his or her mind the website design itself, the web backend, the scaling and deployment stories, and even specific technologies used in each part (database types, buses, messaging frameworks, and so on).

Engineers like to deep-dive into specific technical implementations, solve difficult problems, and are willing to get into the low-level details of issues. Their minds are drawn to such problems, and they derive satisfaction from finding and implementing solutions to them. If a skilled developer gets placed in an architect role–which happens oftentimes out of necessity–you will quickly know he is an engineer if he gravitates right back down into the guts of a problem and has a hard time pulling his head back up to look at the big picture.

Typically you will discover early on whether you are more of an architect or an engineer. Some people can do both almost equally well, but most people favor or the other. It’s important to recognize which sub-track you most fit in as that will guide your career decisions later.

Companies may also have other technical tracks, ones like QA engineer, product support engineer, systems engineer, and applications engineer. These roles are usually not straight coding ones but instead involve test suite design and test writing, advanced customer support on technical topics, or creating proof-of-concepts for potential customers.

You want to climb the ladder, but how do you do it? Quite simply, find out how your company defines the responsibilities for the different roles, and then begin to do those responsibilities in your current position. In doing so, you make the decision to promote you a no-brainer. You are already working at the next level.

The Student Becomes the Teacher

I worked with a young guy named Adam when he was fresh out of school. I was the senior engineer on a large backend system, and he joined under me to help implement features and fix bugs. He was quite skilled and did well, but due to misunderstandings at our company, he ended up leaving.

He left as a staff software engineer but joined his next company as a senior engineer–this was due to our company promoting people at an abominably slow rate–and soon he was promoted to principal engineer and was leading the development of a large part of his new company’s flagship application.

I lost touch with Adam for a few years, but I reconnected with him and another mutual friend to find out what he was up to. He had moved to a hit startup company and was the director of software development. Within the year, he was offered a CTO position. Young Adam had strategically defined and refined his goals and worked toward them. In the time I remained at one company as a senior software engineer, he had jumped to several companies and gone from staff engineer to CTO!

Far from being jealous of him, I admired what he had accomplished and reflected on my own stagnation. His example was an important factor in my decision to move to a different company and push my boundaries.

Professional Cat Herder

After gauging your strengths and interests, you may decide to go to the dark side and try management. Hey, someone’s got to manage all the programmers, and you may have the aptitude for it.

Being a manager of programmers is a very different beast than being a programmer. I have seen (and endured) many managers who were once programmers and decided to cross the divide. Some were quite good; others were awful.

cathe1Ideally you can find a company that allows you to try out management on a trial basis, with the understanding that if you don’t like it or do well at it, you can go back to being an individual contributor as a programmer without your career being harmed. I have worked at companies like that and seen developers go to management and back again without any problem. Most mature companies recognize that some programmers just don’t make good managers, but you don’t know until you try.

Management has its own track, typically avoiding the “staff” title and moving from group manager to senior manager to section manager and so on up to director and vice-president. Once you reach that big wig status–uh, I mean “senior management level”–you have gone beyond the scope of our help. True story, we used to refer to the big wigs as “the higher ups” and the higher ups took offense and sent out a memo to all employees that the appropriate way to refer to them was “senior management.”

Where Do You Excel?

As you try out different roles or move up in level, seek to identify the conditions under which you work best. For example, after several years I discovered that I am an engineer, not an architect, and more importantly that I do best when working under a strong architect or engineering lead. I naturally tend to find positions where an existing strong technical leader has already blazed the trail.

You may discover that you excel most when you can do the trail-blazing yourself, and chafe at having to follow in another’s footsteps. Or you may realize that you enjoy working closely together with at least one other person, doing pair programming and test-driven development together. These are important markers to take mental note of, as you can deliberately seek out positions and companies where you can thrive.

Of course, you need to balance this out with the need to push yourself beyond your comfort zone. Sometimes you need to take that role that stretches you outside your boundaries. Doing so acts as a forcing function for personal growth. The worst outcome isn’t failure but never trying in the first place.

As you work, be mindful of which track you are on and whether it is the right one. Should you consider jumping to a different ladder? Are you making steady progress up your current ladder? Are you finding fulfillment in the technical track you have chosen? These are the questions to regularly ask yourself as you refine your career goals.

Post Footer automatically generated by Add Post Footer Plugin for wordpress.

Read More