The Road To Developer Jobs
It's hard out there.
I think nothing has shown me that more than following and reading the heart breaking updates from recent boot camp grads. They don't know it, but I've seen them. I've read their portfolios. I've read their posts on LinkedIn, which are alternating in bravery and despair. I feel for them.
I'm a lucky one. I taught myself to code while working an office job. I never used a boot camp, but I thought about it. I was personally invited to join one by the founder of The Odin Project. He had just started his Viking School and was looking at promising students in his free online course. I was tempted! He seemed like he could help me achieve my dream of being a developer.
The point is that it was harder to acquire the base skills, but easier to get a job.
Now, it's different. Coding has become a symbol of upward mobility and people have flocked to the craft. This has naturally made the junior level jobs a little more scarce.
So what to do? I've been thinking about that.
The Easiest Way
Lets start with the easiest possible way to get a job. If you come from an office environment then the best thing is to network back into that company. Get in touch with people you know and try to find a way to reach the ears of a hiring manager in an IT department. Even if you're not in an office environment, say you come from a warehouse or a factory - there are still office staff there and you should definitely network in that direction.
You are now a triple threat to secure any open coding position. Not only do you have that base knowledge of coding (hopefully in the stack your company uses), but you also have knowledge about how the business operates and you're already accepted into the culture of the company. From a hiring manager's perspective this could be a slam dunk. It's way easier to bring in someone who kind of already knows their way around than someone who's completely fresh. You immediately put yourself on par with an experienced junior developer or even a mid-level.
If you were wise in your previous position and made friends and had a decent network then that makes you even more valuable. With a little time you can be someone who knows where to get that requirement clarified, or steers a coworker ( or even the team! ) around a critical detail that only someone experienced in business operations would know. This is particularly true if you work in a field with complicated processes, like insurance or finance. You are made of gold if you've already got insight into existing systems and processes.
Of course that's not for everyone. Also, many people turn to code to flee their old job, not to return and conquer it. In fact, even though I label this as "easy" few people lay the ground work necessary to make this a reality. It does require a fair amount of networking. It does require you not hate your old employer. It is easier for people with office backgrounds. These differences add up to a big advantage. However, if this is you then you should definitely try this route.
Use every advantage at your disposal.
The Traditional Way
It's harder, but the boot camps are geared around this. This is the path of job fairs and competitive interviewing. If you are a super personable confident outgoing person who excelled in boot camp then you'll tie this up. No problem!
However, if you have self-doubt and uncertainty and occasionally self-sabotage or if you didn't do so great in boot camp (just well enough). Then you'll struggle here. But you can still pull it through by following the advice of your instructors and going all in studying and working on boosting your confidence.
The profiles of companies that target boot camp graduates vary. Some are Startups seeking inexpensive but promising junior developers. Some are enterprise companies trying to modernize their legacy applications and compete with more nimble companies. Some are companies afflicted with huge amounts of attrition and are trying to find more developers to maintain and build their applications while not increasing pay or improving working conditions. (You'll know who these companies are by the uneasy rumors that precede them. Also checkout Glassdoor!) And lastly, some seek talent from a wide array of places and will gladly take a boot camp graduate or a CS graduate based on who they think will do the job well and, of equal importance, who they personally want to work alongside.
Second career or military veteran boot camp students are appealing. Many of them have already worked in professional environments. They know how to dress, how to speak, and how to deal with adverse conditions. This something your average college grad will spend the next 2-3 years learning. Not only that, but boot camp students are humble. They've been on the sweaty side of employment negotiations almost every time. Part of the fun of hiring them is watching them grow as engineers and begin to understand their value to companies.
People can find themselves hovering along the traditional route for a long time. Especially candidates who seek 100% remote work or are in a locale already saturated with top talent. It's harder for people who don't easily fit in with others or who feel different. Folks who have struggled with the third rail of software development ("soft" skills) will find this much more difficult. They have to work three times as hard because they need to acquire and master the base coding skill and also acquire some of the important people skills.
So what do you do if the easy way isn't so easy and the traditional way has you circling the runway for an indefinite amount of time?
If a month or two goes by and you can't find a position then it's reasonable to start thinking of alternatives.
I like people who are self-starters who will find a different game with rules that favor them. I value this skill and I'm not the only one.
Consider that keeping a portfolio of pretty but otherwise not useful projects can only get you so far. Why not try for real experience on your own terms?
I suggest looking around on Upwork or similar sites for a contract you think you can do for a price that suits you. Yes, I am suggesting going for real work. I know you're not experienced. But what if you tried anyway? What could you learn?
Also, what the hell, if nothing else is working what will you lose if you fail?
Upwork might be too intimidating at first, but what about churches? What about professional groups or charities? If you're already doing portfolio work then why not do work that's meaningful and for a good cause. Yes it's free or low paid work, but what's your portfolio paying? Also, you might ask if you could include the work you do as part of your portfolio. If you do good work you might ask them for references too.
But listen, and this is important, do this work because you want to do it, because you believe in their cause or you like them or whatever. Never allow anyone to brow beat you into doing free work. If you get an offer for free work and your emotional reaction is "meh". Pass. It's not worth it.
You know what, if put in the time to do something cool for a cause or people you like - you might as well form your own LLC. (Congrats you're hired!)
Also, those people you just did good work for have a friend at BigCo who needs a new developer on their team. Can they introduce you?
This is how it works. It makes it super easy to get hired by a bigger company if you already have successful projects and you have experience talking to business people. People who do this successfully are leaders in our industry. They are sought after. It's not easy and it's not for everyone. From what I've seen, people who try this and fail are still miles ahead of people who go into interviews with only a portfolio and hope.
Patience, Practice, and People
Ultimately though, patience, skill, and your network will be your friends in this initial stage as well as throughout your career.
- Yes, get into those interviews and put your best face forward.
- Yes, practice at the craft and build up to showcase your skill.
- Yes, build up your network on LinkedIn and elsewhere.
That third point is the most important. And what do I really mean? I mean you should be trying to schedule chats with people who interest you. The goal from these chats is not to get an interview, but to learn. Ask about their business. Ask about what they like in their job. Ask about the culture. Listen to their responses and build follow up questions. Be respectful of their time and try not to keep them longer than 15-30 minutes.
You're not going to be good at this right away. You'll make mistakes and feel foolish from time to time. You'll make gaffes. Embrace that awkwardness! I try to do this three times a week even being fully employed. If you are not otherwise employed then you might try to do this three times a day. Don't exhaust yourself. If it feels like you're going through the motions then take the day off. Being genuine and authentic is important. If you're tired it makes it a lot harder!
I think it's reasonable to ask, what's the point of all that? The point is to build relationships with people. You'll want to start conversations and contribute thoughts toward any problems they might have. People who get good at this are super valuable and can get jobs anywhere.
If starting conversations up with strangers is not your thing then that's completely okay. This worked for me, but I know that we're all different. In a more general sense my advice is to find a way to sharpen your people skills. If you're not naturally a people person it will be hard, but it's incredibly important.
The Right Job Matters
Indeed, when you're first getting started it can seem like any job sounds great. I believe this. Getting that first year or so of experience is critical for setting up the rest of your career. But if you have options, I recommend consulting.
Working for a small homegrown consulting firm like HMB transformed me. I've been exposed to amazing and talented people. I've worked on interesting and engaging projects. I've been exposed to a wide variety of company cultures and discovered what works best for me. I've been challenged to become a better communicator, a better engineer, and a better person. I've even been challenged to be a leader. All of this and without the chilling bureaucracy of a larger company.
It means a lot when what you do matters to the success of the company in a tangible way.
Moreover, working with smaller companies and startups you are encouraged to steer your own success. Your success is their success and vice versa. It helps when your mission is more than providing value to faceless shareholders. Instead the mission of the business is something you shape with your own hands. It's something you can believe in. That matters to me.
But there are downsides as well. The benefits might not be as good as a big company. Large enterprise companies are stable. Changes are incremental at those places. Shakeups of an entire company do not occur over the course of one or two weeks, for example. There is value in that. Even though big enterprise employment is not my favorite (although I do enjoy working on a contract basis for such companies), I do recognize that such companies provide safety and stability for their employees. There is nothing wrong with seeking safety and stability!
There is another downside to big national and multinational companies to watch out for though. I mention it here briefly as I intend to expand on this in a future post. Big companies will disappoint you. It's slow, over the course of years at times. The rewards will never seem to be quite right. There will always be a little more red tape, an extra caveat, a "gotcha" that always works against you. Be cautious.
No matter where you go one thing will be true. It is up to you to seize control of your future. Do not let time and fate dictate your path. Listen to advice and learn from your mistakes but also invest time into finding the right advice and learning the right lessons. Many people will seek to influence you. Some will have agendas that include your best interest and some will not. And if this is your second career and you already know all of this then please forgive this gentle reminder.
We are a community of engineers and we want to encourage and promote each other. I want you to feel encouraged and hopeful. I want you to succeed.
Most of all, I am glad to welcome you into the community of developers.
Someday, when you've become established, I want you to remember this time and help a newbie out. Do something, an introduction, encouragement, mentorship - something.
All of those senior engineers, the people who don't quite seem to hear you. As they are so shall you be.
Remember where you came from and who helped you. Remember to help the people who come after you. This is the way.