In a previous job, I was part of a campus recruiting team. What that meant was that on a regular basis the company recruiters would reach out to me and ask for my help at some campus event or convention. Meet and greet the students about to graduate, assess their skills from a brief convo, take resumes, and sometimes hold on-site interviews. My dev manager at the time would grumble about losing me for half a day, but ultimately it looked good on the team if we offered people up for these kinds of things, so it was a normal part of my responsibilities.
Surprisingly, I noticed a question from the candidates that popped up more commonly than others: “What’s it like?”
Not, what was it like working at the specific company I was representing, but the career as a whole. What’s it like to be a software developer/engineer? What do you actually do all day? What’s the office like? How stressful is it? When did you actually get to contribute code? How much were you expected to know out of the gate?
These are all good questions. I found that answering them one by one usually didn’t provide much satisfaction to the people asking them. What I realized is that they were actually looking for a more holistic description of the early stages of a career in software. They were nervous, unsure of themselves and how they’d perform doing this job that they just spent four years trying to earn. In essence, they were me just a few years prior. Another commonality I noticed with most of the people asking is that they were starting out much like I did – blind to the industry. No friends or family who currently worked for tech companies, no internships, etc. It was all bewilderingly new.
Answering that holistic question isn’t exactly easy, because there are so many variables. But, I’ll give it a whack here, just like I did for those candidates.
Getting Hired
This is often the trickiest part to generalize. How hiring is conducted at the dev shop in an insurance company versus how Google hires its engineers is night and day. There are some common threads though, so here are few important takeaways.
Prepare, Prepare, Prepare
I wish I would’ve known just how much this matters when I graduated. Listen, I know you’ve been doing nothing but taking classes and coding assignments for the past four years. I get it. But that doesn’t mean you’re prepared to complete a coding interview well enough to get hired over other qualified graduates. It’s like this, if you were to compete as a sprinter in a track and field competition, you wouldn’t say, “Oh, I’ve been doing distance running for years, so I’m good.” You wouldn’t take that attitude because it would set you up for failure. Sprinting and distance running are similar in some respects, but the differences become more pronounced as the competition becomes fiercer. It’s the same concept here. Just because you got an A in your Algorithms class doesn’t mean you’ll be ready to nail a whiteboard coding problem.
This isn’t meant to be a post about coding interview prep. In brief, I’d say to start by checking out resources like Gayle Lackmann McDowell’s Cracking the Coding Interview. Take it seriously. Prepare for the interview like you’d prepare for a final.
Soft Skills Do Matter
By nature, I’m an introvert. Over the years I’ve worked hard to break out of my shell and put myself “out there.” Frankly, it’s fucking exhausting. But, I do it. And if you want to make a good show of it, you’ll have to as well.
Your ability to code, to be an engineer, is important, no doubt. But don’t underestimate how important you present yourself is during the hiring process. I’m not saying this to make you nervous, or to tell you that you need to be someone you’re not. What I’m saying is that this first impression with your interviewers will be your one and only chance to show them why they should pick you over other candidates. And here’s a secret from the other side of the interview table – it’s not always the person with the best tech skills that gets the offer.
You’ll hear a term bandied about these days: Culture Fit. What people really mean when they say this is, “Would I want to work with this person?” Because most of the time, the people interviewing you are going to be working right alongside you through feature development, bugfixes, and late-night death marches. For my money, if it’s a choice between a competent dev who seems easy to work with versus a super-genius who rubs everyone the wrong way, I’m going to go with the easygoing dev every single time.
That may sound strange when we’ve all had this image presented to us that the tech world is dominated by stubborn geniuses. My experience as a dev and a tech lead, however, is that a dev with a bad personality is going to reduce the productivity of a team far more than they enhance it. Pointless arguments, the need to always be right, the drain on morale, lack of collaboration, these things kill a team’s throughput and cohesiveness.
If you know that you have a tendency to be a bit of dickhead, my advice is to work on it. Even if you don’t give a flip about your teammates or the company’s product, think about your career. I once had boss who said to me, “You can be well liked, or great at your job. One of the other will keep you employed. Do both, and the sky’s the limit for you.”
Unfortunately, It’s Not a Meritocracy
This is a little bit of a downer, but I feel the need to say it, because it can affect a person’s morale when they first get out there and look for a job. Being the best and the brightest doesn’t guarantee you a fair shake at job. I’m just being a realist. If the last open position came between you and a Senior Vice President’s kid, guess who’s getting the shaft? Sorry. I wish it wasn’t like that. But I’ve seen it too many times to pretend otherwise. Nepotism, favoritism, whatever name you want to give to the homey-hook-up, it’s alive and well.
I say this because I don’t want you to lose heart if your job search takes longer than those new graduates who are already well connected. You can and will make it in. Trust yourself and keep at it.
Know the Market
This bit is important. When I graduated, the economy was terrible. Most non-tech companies had outsourced almost all of their development work to off-shore companies. Tech companies had slowed hiring and raised the bar of entry very high. At the time, Google wouldn’t even talk to a new grad unless they had a Ph.D. or maybe a Masters. For a young applicant looking for work, the pickins, they were slim, and most of had to take what we could get rather than the jobs we had hoped for.
Knowing the market when you’re job hunting is just as important as when you’re house hunting. With real estate, the trend of market forces leaning in favor of buyers or sellers drastically affects home value. It’s the same thing in the job market. If the demand for developers is high, you will have more options for employment and you can negotiate better compensation. You can afford to keep your options open a little longer and go for the job of dreams.
If it’s turned the other way, as it was for me, you’ll need to adjust your expectations in the reverse. You may have to take a lower salary, a less appealing position, or work for a company you’d rather not. We have to roll with the times, but being aware of market forces allows you to ride the current as best as possible. The goal is to get the best possible job without overplaying your hand and not getting any offers at all.
Communicating Experience (even if you think you have none)
We’ve all seen the ridiculous job advertisements: Wanted – entry level developer. Requirements – three years experience.
It’s so frustrating to see that when you’re looking for your first job. Take a breath, and let’s walk through this, because it’s really not as bad as it sounds.
Most job advertisements are not written by engineers or engineering managers. They’re written by folks in human resources offices, who often have a lot of legal requirements to contend with. That’s why they can be a little confusing and obtuse.
I can’t speak for every company, but at every company I’ve worked for, the HR folks screening applications and resumes will count your years at school as experience. So if you see an ad with that kind of poor wording, take heart. You most likely still qualify.
The follow up I heard once I told prospective candidates this bit was, “But what if I really don’t have any real experience? All I’ve been is a student. I haven’t had any internships or anything.”
That’s okay. My guess is that you’ve got more experience than you realize. This sort of goes back to soft skills. How would you best present what you have done as real experience? Think about the projects you’ve worked on in college. That huge team project where you and your teammates learned how to write a compiler, for example. What were the pain points, what did it teach you? These don’t even have to be technical lessons that you learned. What did being a team leader teach out about leadership? Did you have a teammate who didn’t pull their weight (of course you did, we all did) and how did you deal with it?
When you think about your time in college in terms of lessons learned rather than classes taken, you’ll see that you did gain a lot of valuable experience.
When The Dream Job is Just a Dream
This is a bit of a hard pill to swallow, but you might not get the job you’ve been dreaming about these past four years. For one reason or another you didn’t get it. Maybe they weren’t hiring new grads. Maybe your GPA was too low to get an interview. Maybe you had an interview and it just didn’t go well. These things happen.
Most of life is, in the words of a Colonel I once worked for, “Taking chicken shit and making chicken salad.” Disappointments happen. The important thing is to not give up, because things can always get better.
When I graduated, I didn’t get the tech job I wanted. Hell, I didn’t even get a job at a tech company. I landed a dev gig for a lowball salary at a non-tech company, and many of my classmates didn’t even get that. A lot of them just went back for their Masters and hoped the market would get better. Well, it did.
The silver lining here is that you don’t get just one chance to get a job at Apple, Google, or at HipGuyStartUp. If your GPA wasn’t great, don’t worry. Take the best offer you can and work hard. After you’ve got real work experience no one will even ask about your GPA. Just take it off your resume. If you didn’t do well on your interview, or if DreamCompany.com wasn’t hiring, follow the same advice. Work hard, learn everything you can at your less-than-ideal job. Make the most of it. Who knows, it may turn out better than you think. It did for me. While working for that non-tech company I met a lot of great people, and my enthusiasm and hard work opened up opportunities to work on new technologies that the company was piloting. In turn, that helped me move my career forward when it was time to move on.
Starting Your New Job
There’s a lot of trepidation about starting a new gig. I’m always a bundle of nerves when starting a new job, even more so when it was my first job out of college. Here are a few points that may help alleviate some of that stress.
No one expects you to be perfect. Unless your manager and senior devs are absolute butt nuggets, no one is going to expect you to be able to recite obscure algorithms off the top of your head, or start day one writing a new feature. A good team will make sure you get settled in, that you know who the senior devs are, that you know who to turn to for what, and they’ll start getting you familiar with the code base and how the team operates. The members of your new team should have a good idea of your skill level and should work with you accordingly. That’s not to say you won’t be pushed to learn and do more – expect that. Just, probably not on day one.
The length of time that it takes before your code is making it into production will vary based on company, team, and application. Facebook is famous for making devs commit code to production on day one. However, if you’ve been hired at a non-tech company to work on an incredibly complex and sensitive app that could lose the company big sums of money should it malfunction, you’ll probably be given a longer ramp up period. In short, it varies, but the expectation should be communicated during the hiring process. If it’s not, ask. That’s actually a pretty astute question to throw out to your interviewers.
First jobs in a new career field can be intimidating. But remember that they hired you for a reason. Ditch the Impostor Syndrome and come to work with an open mind and a willingness to learn.
When It’s Time to Move On
Tech has always had a high turnover. And one day, your first job will be just that – the first job of many. These days, with demand for devs being higher than the ready supply, it’s not uncommon for people to change jobs every year or two. There’s no blanket advice on when it’s time to move on. That’s a personal decision that everyone has to make. Some people get itchy feet after a year on the same team no matter where they work. Other guys have done thirty years working on the same Cobol app and have no plans on going anywhere.
Here’s my general advice about moving and when it’s probably time to go.
If you find that the work is no longer challenging and you’re often bored. This happens. You’ve been on the same team, working on the same product of a couple of years. You know the codebase back and forth. New features aren’t challenging you or teaching you new skills. Debugging is trivial. You’re in a cycle of break and fix, and it’s mind-numbing. Probably time to find a new job.
If you’re ready for a move up and your current team or company isn’t offering advancement. Surprisingly, with all the work companies do to recruit talent, many don’t seem too worried about retaining it. It’s not uncommon for a company to provide ‘entry level’ compensation to devs right out of college, then resist bringing them up to industry-standard pay after they’ve proven themselves ready for a promotion in a year or two. This baffles me. If a dev likes being there, and they’ve done well, why wouldn’t you pay them what they’re worth? Alas, if you hear excuses as to why your employer can’t pay you what you’re worth, that’s a good sign that it’s time to move on.
If you are generally unhappy. Do you dread going in to the office? Does coming to work require you to sit in the car and psyche yourself up for a few minutes? Have you started viewing the office as a prison? Terrible managers, lackluster facilities, awful commutes, these things matter and add up over time. Look, if you have the option to be happier somewhere else, then take it. You spend eight of your waking hours (at least) each day at your job. Don’t make them miserable hours.
The opportunity of your dreams is now available. Have you been applying to Google for years only to finally get hired and placed? Do you finally have enough experience under your belt to land that role at Netflix? Then go for it! Don’t hold yourself back.
Overall
Tech jobs, when you boil it down, are like most other jobs. You go to work, you do the best you can, eventually you leave for something new. The hiring process is a bit grueling, and the personalities are interesting, but the basic elements are the same as other industries. It’s not perfect. The jobs are desirable, currently, because the demand for our skillsets is outstripping the supply. The won’t always be the case, as it wasn’t in 2008, or in 2001. Doing well in any profession requires a person to try their best, never stop learning, and be a team player. Do that, and you’ll find yourself in a good place.