Feeling Stuck & Unclear?
I spent almost a decade in a non-tech career. I had done well, but hated it. It was time for a change... but how?Going back to the University would be great... if I had that kind of time or money, but I had missed that window in life.
I was eager to become a software engineer, but there was no clear roadmap. The web had plenty of stuff to sell me with big promises, but it was pretty easy to see the snake-oil behind the wrapper.
How do I move forward assuredly? Without a roadmap, it was hard to tell if I was spending my time well or throwing it away. I didn't have "extra time" to be throwing away.
These were some of my questions. I'm now on the "other side", having transitioned successfully and quickly.
I get asked about my transition often, so I have laid out my successful approach to help others (like yourself?) get "un-stuck" too.
Getting Un-Stuck
If you can get a degree in Computer Science (CS), DO THAT. If you’re going to switch into the software engineering industry without pursuing a degree in CS, then I'll give you my recommended approach in light of my experience doing just that.This is a fast way to switch careers, but without sacrificing building the practical skills you will need to succeed in a job. This approach will help you get into software engineering quickly, and will bolster you with key knowledge and competence that you can use to accelerate your career faster than your peers (both without degrees, and even many with degrees).
If you simply want the fastest approach, skip Phase 1. Just be forewarned, if you skip Phase 1, your experience will be harder, less beneficial, and your career may progress more slowly.
Without further ado, here’s my recommended approach in 3 Phases:
Phase I: Build Your Core Knowledge Base
10: Landing Your First Job
The purpose of Phase I is to give you a foundational knowledge. This will enable you to avoid learning everything at once later - which is overwhelming. The Phase I foundation will help you reduce stress, move faster, and get more out of later learnings.
After much research, I chose a book called “Think Python - How to Think like a Computer Scientist”. It is written for people with no tech background. Additional bonus, it is available free online.
It uses the Python language. This is strategic. Python allows you to focus on the concepts and not worry as much about the code syntax.
if Python isn't your language of choice, no worries. It wasn’t mine either. Python parallels other languages well, so it makes switching to another language easy (plus, then you know two languages!). Plus, Python experience looks good.
I really only used Python to learn the core concepts and then never used it again. ...technically that's not true, I just used Python on a project at work to configure a new cutting-edge software.
It's an awesome book, and will equip your mind with a strong foundation for your journey ahead.
CodeWars.com and LeetCode.com are great places to get this training. These will not be easy, but these are the kinds of things you will get in interviews. They will seem extremely challenging and super broad at first. Stick with it.
With time and practice, you’ll see some patterns emerge. Solving these kinds of challenges will eventually become easier.
When I started, on a difficulty scale of 1-10 (10 being the most difficult), these were a 10. After a few weeks of doing them, they came down to about a 7. Keep it up, and they will get easier and easier.
After doing enough, you'll find that new questions are just different versions of ones you’ve seen before. The answers will use similar approaches. It's not bad questions, it's how the industry works. This CS pony only had a few tricks.
It’s best to start learning algorithms early, even if you only give it a small percentage of your time.
Some popular languages are: JavaScript, Swift, Python, SQL, HTML/CSS, Java, etc. You may likely want/need to learn more than one for your area of interest.
Take some free online tutorials/courses/trainings on those languages. Get comfortable with the syntax. Seeing how much you can learn to do in your language.
Take plenty of notes and make sure to TYPE OUT ALL CODE - each character, even when it's repetitive (no copy paste!).
Muscle memory is a KEY principle of coding. Your mind learns to build second-nature knowledge by repetition, so make sure you don’t short-change your learnings by copy-pasting things that seem long.
Take the time - you're doing this to learn, so don't cut short your learnings.
I personally typed everything in my notes (with comments on how they work and what I was learning) before I would ever type them out in my program to run them. This ensured that everything was typed out a minimum of 2x. This helped solidify the concepts in my mind and muscle-memory.
By the end of this phase of learning, you will have a LOT of notes and knowledge on a lot of different types of syntax and languages.
Keep in mind, in learning these languages and their syntax, you won’t know how to build a real system. You won't likely even know how the languages can work together. But that’s OK… for now.
I have seen nothing else in the industry that provides the level of quality training, insights, comprehensiveness, best-practices, and professional-level experience on full-stack web development that you’ll get in LaunchSchool’s courses. The curriculum is expertly crafted for career success.
Everyone I've talked to who has completed LaunchSchool and become a developer has said the same thing. Best training ever. You won't get this kind of training in your job.
The only drawback to learning at LaunchSchool is they are not well networked in the industry. You’ll have to spend a little more effort on making connections and overcoming the lack of local industry connections.
Do some research to find a good local bootcamp (hopefully close to you). Choose on that offers the area of your interest - web, big-data, machine-learning, etc.
See if you can talk to some of the graduates of the program to get their opinions on it - its strengths and weaknesses. You can probably find these bootcamp graduates in local Meetups focused on the skills they would have just learned (i.e.: JavaScript bootcamp grads at a local JavaScript Meetup).
I wanted both a strong bootcamp reputation and industry networking benefits. I found the most reputable and networked bootcamp in the Seattle area and enrolled there. It was a great choice for what I needed.
It also had a course on full stack JavaScript web development. Since JavaScript was not taught in most Universities at that time, it helped my attractiveness to potential employers.
Even in a hot market, it’s not likely that your job applications will generate instant response. You’ll probably have some waiting time to work on interview prep before the interview schedules start rolling in.
Because of that, I would recommend first getting together your resume, doing your self-marketing (at least LinkedIn), and filling out job applications. Get your resume and self-marketing looking amazing. (If there’s interest, I can post my simple but effective recommendations for resumes and self-marketing.) Now, it's time to apply.
I applied through my Bootcamp’s partner network. I also looked at job listings on job sites (indeed.com, glassdoor.com, Craigslist.org).
My best results were from the Bootcamp’s partner network (landed one offer) and from Craigslist (landed two offers). The Craigslist responses were from smaller companies. These sectors were the most likely to respond to a junior-dev eager to work hard and learn on the job.
In the end, it mostly depends on the company, hiring manager, and your ability to present yourself well.
Once you get those applications in, put three alerts/reminders in your calendar:
First Reminder: 1-2 days after you send the application. Touch-base with the hiring manager and make sure they received your resume. You can also inquire if there's an ETA on interviews starting. It's OK to ask such questions and be ambitious. Just don't be annoying or demanding.
Second Reminder: 1 week after you send the application. Follow up with your "touch base" contact email. Note that the timeline may need to shift in accordance with what you learn from any prior discussion (ie: if they say they'll contact you in 2 weeks, make sure you adjust for that schedule not clear how to coordinate here...do you mean tell the company contact you will call/email on a specific day?; this will respect their plan and keep you in their ear). Be professional, not desperate.
Third reminder: 3 weeks after you send the application. This reminder to follow up with them should continue every week or two onwards. You want to let them know you're eager (again, not desperate). This indicates you'll be an engaged employee, not just a warm body.
"Technical interview" means they’ll be asking you to solve and code algorithms questions. You’ll need to have your algorithms skills down - the ones I recommended you start training on early (see Step 2).
When not applying/interviewing, you’ll want to spend most of your time focusing on practicing solving algorithms. This is what the majority of the interviews will focus on in evaluating you. Make sure you get good at the challenges on LeetCode.com and/or CodeWars.com (or whatever practice problems you use to prepare).
In your interviews, you'll likely be handed a marker, given a question, and asked to code your solutions free-hand on a whiteboard. University grads will be very good at this.
You need to make sure you are not caught off guard when you are asked to free-hand code out an algorithm puzzle on a whiteboard during an interview. I recommend doing practice coding challenges first in a notebook with paper/pen (so you can reference later), then on computer.
It took me a while to learn that the best place to boost my skills quickly was doing these sorts of online challenges (I used CodeWars.com). After spending some days focused on those algorithm puzzles, I performed SIGNIFICANTLY better in interviews.
By improving my familiarity with doing algorithms, my competence increased, along with my speed and comfort.
But most importantly, I started getting offers.
HANDS DOWN the best way to stand out to a company is to either know the hiring manager OR have someone in the company toss in a good word/reference for you. Simply mentioning your name or recommending an interview is often all it takes. But how do you get these contacts?
Sometimes you can use an exiting social network to get these contacts. Do so if you are able. For the rest of us, you’ll need to meet some people in the industry - likely through involvement in local Meetups.
I met some great people in the Meetups. It also helped me get perspective and stay engaged while landing me a few interviews at companies that would not have otherwise considered me.
Many event-based Meetups in Seattle will announce if there are any companies there looking to meet potential hires - get their business card and follow up with them about opportunities.
Some of the best experience I have gotten has been when I’ve been working on building my own projects. You’ll run into issues that you have to overcome by searching and reading. Maybe you can even use or contribute to an existing open source project. Contributing to open-source projects can look good to some employers.
I've heard people tell me that personal side-projects will help you land a job. I'm sure they can, but I have yet to see it in most cases.
None of my interviews (or any I have conducted) have focused on side-projects. Maybe a couple of questions. Any bootcamp project you designed and launched should suffice.
The exception to this is if you launch an app or project that gets a lot of attention, users, success, etc. In this case, that kind of success can totally land you a job. I wouldn't put my focus there, unless you are already in that situation.
So, if you get sick of just doing algorithms training, interview prep, and sending job applications, maybe working on a fun side-project will help keep you reminded of why you went into this industry in the first place - because it’s FUN!
In the end, you should expect the interviewing process to take between 3 - 9 months to land your first job as a software developer. It will also take you interviewing at likely 10-20 companies before you’ll get an offer.
Once you get that first offer, YOU’VE MADE IT!
After my first offer, I breathed a sign of relief. Then I requested a week to make the decision. A week is a reasonable request.
I used that week to notify outstanding companies that I had an offer and would need to make a decision by my deadline day. This made me seem more “in demand” (I literally was). This landed me offers I would not have otherwise received.
But it’s up to you, you can accept the first offer and be done with it, or try to see if your first offer can drum up any other offers before your offer response deadline.
In either case, you’ve done it - you’ve SWITCHED CAREERS! All of the frustrations of your old career can fade - thankfully in the past.
What once was a dream has become reality. What was daunting is now done. And you are set up for success. Keep your passion and your drive to learn more, and you'll go far (possibly much farther than many of your CS-degree peers).
Enjoy your new life.
Thanks for reading. I hope this was helpful.
Tech is an amazing field to be in. Tons of fun. See you in the industry.
#clintofalltrades #clintonjnelson #learnprogramming
Phase I: Build Your Core Knowledge Base
The purpose of Phase I is to give you a foundational knowledge. This will enable you to avoid learning everything at once later - which is overwhelming. The Phase I foundation will help you reduce stress, move faster, and get more out of later learnings.
Step 1: Core Computer Science Fundamentals Training
First, you need to build a foundation of the fundamental CS concepts. You are not going to get as broad of CS fundamentals training as you would in a University, but you should start with this so you have something to build on.After much research, I chose a book called “Think Python - How to Think like a Computer Scientist”. It is written for people with no tech background. Additional bonus, it is available free online.
It uses the Python language. This is strategic. Python allows you to focus on the concepts and not worry as much about the code syntax.
if Python isn't your language of choice, no worries. It wasn’t mine either. Python parallels other languages well, so it makes switching to another language easy (plus, then you know two languages!). Plus, Python experience looks good.
I really only used Python to learn the core concepts and then never used it again. ...technically that's not true, I just used Python on a project at work to configure a new cutting-edge software.
It's an awesome book, and will equip your mind with a strong foundation for your journey ahead.

Step 2: Core Algorithms Training
This is probably a good time to start doing a few side trainings in algorithms challenges. You'll need your algorithms muscles to be well-trained, so start early.CodeWars.com and LeetCode.com are great places to get this training. These will not be easy, but these are the kinds of things you will get in interviews. They will seem extremely challenging and super broad at first. Stick with it.
With time and practice, you’ll see some patterns emerge. Solving these kinds of challenges will eventually become easier.
When I started, on a difficulty scale of 1-10 (10 being the most difficult), these were a 10. After a few weeks of doing them, they came down to about a 7. Keep it up, and they will get easier and easier.
After doing enough, you'll find that new questions are just different versions of ones you’ve seen before. The answers will use similar approaches. It's not bad questions, it's how the industry works. This CS pony only had a few tricks.
It’s best to start learning algorithms early, even if you only give it a small percentage of your time.

Step 3: Core Language Syntax Training
After you get the fundamentals down well, you should learn a language that's popular in the tech-area that interests you. Whatever your area of interest is, do some searching/reading to figure out what those primary languages are.Some popular languages are: JavaScript, Swift, Python, SQL, HTML/CSS, Java, etc. You may likely want/need to learn more than one for your area of interest.
Take some free online tutorials/courses/trainings on those languages. Get comfortable with the syntax. Seeing how much you can learn to do in your language.
Take plenty of notes and make sure to TYPE OUT ALL CODE - each character, even when it's repetitive (no copy paste!).
Muscle memory is a KEY principle of coding. Your mind learns to build second-nature knowledge by repetition, so make sure you don’t short-change your learnings by copy-pasting things that seem long.
Take the time - you're doing this to learn, so don't cut short your learnings.
I personally typed everything in my notes (with comments on how they work and what I was learning) before I would ever type them out in my program to run them. This ensured that everything was typed out a minimum of 2x. This helped solidify the concepts in my mind and muscle-memory.
By the end of this phase of learning, you will have a LOT of notes and knowledge on a lot of different types of syntax and languages.
Keep in mind, in learning these languages and their syntax, you won’t know how to build a real system. You won't likely even know how the languages can work together. But that’s OK… for now.
Phase II: Bring Your Learnings Together
Not having graduated from a CS program, your value to a company will be in your practical ability to build real systems. Now it's time to start putting the pieces together to build real systems.
Step 4: [Optional Step] Online Web Developer Training
If your focus is on web-development and can afford to invest an additional six months, I would HIGHLY recommend you enroll in LaunchSchool. It is an online-based school with a level of quality and training I have not seen elsewhere. (and no, I don't get anything for saying that)I have seen nothing else in the industry that provides the level of quality training, insights, comprehensiveness, best-practices, and professional-level experience on full-stack web development that you’ll get in LaunchSchool’s courses. The curriculum is expertly crafted for career success.
Everyone I've talked to who has completed LaunchSchool and become a developer has said the same thing. Best training ever. You won't get this kind of training in your job.
The only drawback to learning at LaunchSchool is they are not well networked in the industry. You’ll have to spend a little more effort on making connections and overcoming the lack of local industry connections.

Step 5: On-Site Software Engineering "Bootcamp" Training
In Seattle, bootcamp graduate awareness is growing. You may find companies more welcoming to bootcamp grads in your area as well.Do some research to find a good local bootcamp (hopefully close to you). Choose on that offers the area of your interest - web, big-data, machine-learning, etc.
See if you can talk to some of the graduates of the program to get their opinions on it - its strengths and weaknesses. You can probably find these bootcamp graduates in local Meetups focused on the skills they would have just learned (i.e.: JavaScript bootcamp grads at a local JavaScript Meetup).
I wanted both a strong bootcamp reputation and industry networking benefits. I found the most reputable and networked bootcamp in the Seattle area and enrolled there. It was a great choice for what I needed.
It also had a course on full stack JavaScript web development. Since JavaScript was not taught in most Universities at that time, it helped my attractiveness to potential employers.
Phase III: Land Your First Software Engineering Job
You've trained well, now it's time to do some on-the-job training. This means you need a real job. One where you get paid. I'll walk you through what you need to do to make that leap.
Step 6: Applications & Self-Marketing
It's time to focus on applying for jobs and prepping for interview questions. These two are really tough to put in “order”, because they should be happening at the same time.Even in a hot market, it’s not likely that your job applications will generate instant response. You’ll probably have some waiting time to work on interview prep before the interview schedules start rolling in.
Because of that, I would recommend first getting together your resume, doing your self-marketing (at least LinkedIn), and filling out job applications. Get your resume and self-marketing looking amazing. (If there’s interest, I can post my simple but effective recommendations for resumes and self-marketing.) Now, it's time to apply.
I applied through my Bootcamp’s partner network. I also looked at job listings on job sites (indeed.com, glassdoor.com, Craigslist.org).
My best results were from the Bootcamp’s partner network (landed one offer) and from Craigslist (landed two offers). The Craigslist responses were from smaller companies. These sectors were the most likely to respond to a junior-dev eager to work hard and learn on the job.
In the end, it mostly depends on the company, hiring manager, and your ability to present yourself well.
Once you get those applications in, put three alerts/reminders in your calendar:
First Reminder: 1-2 days after you send the application. Touch-base with the hiring manager and make sure they received your resume. You can also inquire if there's an ETA on interviews starting. It's OK to ask such questions and be ambitious. Just don't be annoying or demanding.
Second Reminder: 1 week after you send the application. Follow up with your "touch base" contact email. Note that the timeline may need to shift in accordance with what you learn from any prior discussion (ie: if they say they'll contact you in 2 weeks, make sure you adjust for that schedule not clear how to coordinate here...do you mean tell the company contact you will call/email on a specific day?; this will respect their plan and keep you in their ear). Be professional, not desperate.
Third reminder: 3 weeks after you send the application. This reminder to follow up with them should continue every week or two onwards. You want to let them know you're eager (again, not desperate). This indicates you'll be an engaged employee, not just a warm body.

Step 7: "Technical" Interview Prep
Getting interest on your applications is awesome, but it’s just the first step. The next critical step is the interview, and it’s likely going to be a “technical interview”."Technical interview" means they’ll be asking you to solve and code algorithms questions. You’ll need to have your algorithms skills down - the ones I recommended you start training on early (see Step 2).
When not applying/interviewing, you’ll want to spend most of your time focusing on practicing solving algorithms. This is what the majority of the interviews will focus on in evaluating you. Make sure you get good at the challenges on LeetCode.com and/or CodeWars.com (or whatever practice problems you use to prepare).
In your interviews, you'll likely be handed a marker, given a question, and asked to code your solutions free-hand on a whiteboard. University grads will be very good at this.
You need to make sure you are not caught off guard when you are asked to free-hand code out an algorithm puzzle on a whiteboard during an interview. I recommend doing practice coding challenges first in a notebook with paper/pen (so you can reference later), then on computer.
It took me a while to learn that the best place to boost my skills quickly was doing these sorts of online challenges (I used CodeWars.com). After spending some days focused on those algorithm puzzles, I performed SIGNIFICANTLY better in interviews.
By improving my familiarity with doing algorithms, my competence increased, along with my speed and comfort.
But most importantly, I started getting offers.

Step 8: Building Industry Contacts
There are a massive amount of people applying to jobs. It can be hard to stand out.HANDS DOWN the best way to stand out to a company is to either know the hiring manager OR have someone in the company toss in a good word/reference for you. Simply mentioning your name or recommending an interview is often all it takes. But how do you get these contacts?
Sometimes you can use an exiting social network to get these contacts. Do so if you are able. For the rest of us, you’ll need to meet some people in the industry - likely through involvement in local Meetups.
I met some great people in the Meetups. It also helped me get perspective and stay engaged while landing me a few interviews at companies that would not have otherwise considered me.
Many event-based Meetups in Seattle will announce if there are any companies there looking to meet potential hires - get their business card and follow up with them about opportunities.

Step 9: Side Project to Stay Sharp
You’ll want to keep your focus on algorithms training and applying to jobs. It can’t hurt to also fit in a little for a side project and keep your recently acquired skills.Some of the best experience I have gotten has been when I’ve been working on building my own projects. You’ll run into issues that you have to overcome by searching and reading. Maybe you can even use or contribute to an existing open source project. Contributing to open-source projects can look good to some employers.
I've heard people tell me that personal side-projects will help you land a job. I'm sure they can, but I have yet to see it in most cases.
None of my interviews (or any I have conducted) have focused on side-projects. Maybe a couple of questions. Any bootcamp project you designed and launched should suffice.
The exception to this is if you launch an app or project that gets a lot of attention, users, success, etc. In this case, that kind of success can totally land you a job. I wouldn't put my focus there, unless you are already in that situation.
So, if you get sick of just doing algorithms training, interview prep, and sending job applications, maybe working on a fun side-project will help keep you reminded of why you went into this industry in the first place - because it’s FUN!

Step 10: Landing Your First Software Engineering Job
Stick with it. Just keep making steps, even if they seem totally useless.In the end, you should expect the interviewing process to take between 3 - 9 months to land your first job as a software developer. It will also take you interviewing at likely 10-20 companies before you’ll get an offer.
Once you get that first offer, YOU’VE MADE IT!
After my first offer, I breathed a sign of relief. Then I requested a week to make the decision. A week is a reasonable request.
I used that week to notify outstanding companies that I had an offer and would need to make a decision by my deadline day. This made me seem more “in demand” (I literally was). This landed me offers I would not have otherwise received.
But it’s up to you, you can accept the first offer and be done with it, or try to see if your first offer can drum up any other offers before your offer response deadline.
In either case, you’ve done it - you’ve SWITCHED CAREERS! All of the frustrations of your old career can fade - thankfully in the past.
What once was a dream has become reality. What was daunting is now done. And you are set up for success. Keep your passion and your drive to learn more, and you'll go far (possibly much farther than many of your CS-degree peers).
Enjoy your new life.
Thanks for reading. I hope this was helpful.
Tech is an amazing field to be in. Tons of fun. See you in the industry.
#clintofalltrades #clintonjnelson #learnprogramming
Comments
Post a Comment