That’s me at my first job as a developer.
It’s been just over a year since I started an epic software development learning journey. In that time, I went from no experience in Los Angeles to moving to Seattle to work for Microsoft.
The most exciting part of this past year for me was the challenge. Setting a hard goal and working towards it using every technique I’ve learned over my entire life.
I’m talking about habit formation, focus, time management, mindset, people skills, sales and marketing, investing, entrepreneurship. I mean everything. This was a whole mind and body experiment.
If you’re deciding whether or not to change careers to get into tech, than this for you. I’m writing it to you and my future self for when I want to try another experiment or learn a new skill.
The Gut Check
Don’t listen to people who say coding is easy and everyone should learn how to code. It’s not easy and everyone shouldn’t learn how to code. These people are probably trying to sell you something.
Besides the psychological drain of learning how to code, you’re about to put your ass on the line. You’ll be going out into a job market that everyone wants to be in. That means lots of competition. These people have industry experience, computer science degrees, or they’ve been training at a bootcamp. There’s also been a steady increase in computer science students graduating every year.
People have this impression that the tech industry is in such demand for coders that they’ll hire anyone. You just have to go to a bootcamp for 3 months and you get a $80k salary, benefits, maternity leave for 12 months, massages, free tacos and beer. This is not true.
This is still capitalism and capital still pays for value. All those things I listed cost a company a lot of money, and they don’t just give that out for free. You as a new software developer will have to deliver above and beyond the value of your pay for the company to keep you.
Admit to yourself that this is going to be very hard. You’re going to sit at your computer like an idiot for hours and your code will not work. You’re going to be embarrassed. You’ll have to go back to knowing nothing about anything. You’ll have to meet a bunch of new people and have awkward conversations. You’ll bomb job interviews so bad that you’ll wonder if this dream is even possible. You’ll go through a period where you’re applying for jobs and no one is responding to anything and if you do get a response it’s a no.
Do you still want to keep going?
If you answered yes, I recommend reading So Good They Can’t Ignore You by Cal Newport.
Cal’s book was the final gut check in a long series of thoughts, conversations and many other books before I stepped off the cliff and fully committed. In the book, you’ll get a taste for what value is in a skill based, knowledge worker society and how to build your career capital, which you can then trade for a good job. I still review my notes from the book every 6 months.
You’ll also read about the downfall of people who have switched careers and have failed e.g. Your friend who quit her boring cubicle job to become a yoga instructor.
If You’re Old
If you’re old or you’ve been in the same industry for a long time, it will be even harder to become a coder. This is why it’s a good idea to always switch up your routine and learn new skills.
If you’re thinking about this transition because you’re not satisfied with your job, I want to encourage you to think out all other alternatives before quitting. It could be as simple as changing companies, or getting better at the job you already have.
Think about all the time and money you’ve put into your current career, and you’re about to dump it all. This is the yoga instructor I mentioned above. Maybe you can pick up part time work coding on the weekends, and keep the day job. An even better way is to figure out a way to start coding in your current job. If your company has an internal development team, start hanging out with them. Help them in your free time. Then figure out a way to have them hire you.
This is the Tarzan approach to changing careers, and is backed up by evidence and good old fashioned logic from So Good They Can’t Ignore You by Cal Newport.
Commit and Form New Habits
So you’ve committed to learning how to code and to changing careers to become a professional software developer. At least in your own head you have committed, but now it’s time to test that commitment.
This is the step where we’ll weed out the people who drank coffee and watched too many motivational videos on YouTube.
You probably have some energy and enthusiasm building up in your mind and body. You’re imagining the journey and at the end of it becoming a full time coder. You can smell the money of a nice bump in pay, having smart co-workers that you’d actually want to hang out with after work. Your dream job is in site.
Now that you’re thinking about that, stop, and start thinking about what you have to do RIGHT NOW to get what you want.
The answer is, you need to code. You need to start coding now… as in, you’d be better off if you just stopped reading and started coding.
You need to build a habit for coding. Get yourself addicted to coding.
Do this for as many hours per day as you can. I started at 2 hours and went up to 3 while I still had a full time job, and I did more hours on weekends. Do this everyday. Track your hours.
Right now you’re trying to build the habit of coding for a long period of time.
You’re also building your ability to focus on a single task. If you can’t focus like this or you’re constantly getting distracted while coding, you won’t become a professional.
Have your end goal in mind still, but it’s not what’s driving you anymore. You’re starting to just live for the process of coding and learning. That’s the ONE Thing you need to do right now to set yourself up for your dream job. It’s the only thing that matters.
Will the non-coding parts of your life become chaotic? Yes, of course they will be but who cares, you’re on this path now. You’re optimizing for coding, NOT six pack abs, NOT sex, NOT fashion, NOT a clean home, NOT reading books or blogs, and NOT even family or friends.
Is this being selfish? Yes, it is. Do you hear yourself starting to make excuses? If so, start small and keep taking more and more time for yourself to practice.
This is a good kind of selfish. You’re re-investing in yourself. This will pay off in the long run for you and everyone around you.
You’re not allowed to get frustrated when coding gets hard. All that matters is the timer. When it’s hard and things don’t work, you keep trying until your time is done and that’s good enough. Give yourself a pat on the back because you put the time in.
The number of hours coding is what matters NOT how good you’re becoming, NOT the language you’re learning, and NOT the learning resources you’re using.
Do this for 2-3 months. You know you’re addicted when you can’t imagine skipping a day. If you miss a day you feel shitty. Your priority is coding and your schedule has completely changed to accommodate it.
If you’re not coding for at least 7 hours a week by this point, I don’t think you’re serious about this coding career. It sounds really nice and rewarding, but the truth is you’re content enough in your current situation. This is good news though. You haven’t quit your job, lost money or committed career suicide.
You’ve started to gain momentum, and you’re starting to realize that you know some code.
Your tactics of learning how to code up to this point worked but to go to the next level you’ll have to change strategies.
What’s the new strategy? Practicing in isolation won’t get you hired. You don’t emerge from a cocoon as a software developer.
You need real life experience.
Coding lessons aren’t the same as launching products on the Internet for companies that pay. They’re completely different beasts. Practicing code will teach you the mechanics of code syntax but building a product from beginning to end shows you what it’s like to work in the industry.
This is the point where I decided to join a coding bootcamp.
Why did I decide to join a bootcamp?
I had a time constraint for myself. I was 28 years old, and I wanted to become a developer before I was 30. Time is money, and after researching what a coding bootcamp was, I knew that it would put my progress in the fast lane.
How did I know that a coding bootcamp was right for me?
I know how I learn best. Every time I did well in academics and sports, I had a tutor. It sounds obvious, but most people don’t have tutors.
I can’t believe my parents didn’t notice this pattern. Mom, I could have been in the NFL, or gone to Harvard – thanks a lot!
When I wasn’t getting coached or tutored, I was the most average human. In-person coaching works well for me because of the accountability, and instant feedback.
Here’re some examples from my personal life:
- Between my first year and second year of playing baseball, I did a baseball summer camp. I sucked my first year. In my second year, I became the starting pitcher.
- I’ve done strength training most of the time on my own, but only in the rare periods that I lifted with a partner or did CrossFit is when I reached my all time personal records.
- I always thought I was bad at math. I got a math tutor in high school and then I improved. I didn’t improve much but I passed.
This is a proven formula for me, and I didn’t see any reason to not try it again.
I chose a bootcamp that would give me the accountability, and created a real world work environment. My instructors were senior developers and they ran the bootcamp like a professional development team creating a product.
Start Talking Code
If we’re talking about time frame, this should be happening at the same time you’re starting to learn faster.
What do you mean… talking code?
Talking about code, software projects, and technology is even hard for experienced people. I have been in meetings where the senior managers couldn’t understand a simple web development concept.
I heard a form of, “What exactly is it though?” at least 4 times. After many drawings on a whiteboard and screen shares later, the concept was finally communicated.
I’m telling you this not to show you how dumb and silly this conversation was. The reason I tell you is to show you how difficult talking about code is. The sooner you start talking about code the more comfortable you’ll be and the more you’ll stand out. Explaining complicated abstract concepts is another skill you need to develop to be a professional software developer.
You’ll need to practice this for a long time to get good, so start now.
- Start explaining how your code works to your peers. It doesn’t have to be something cool or complicated. “Hey Meagan, this function I made, takes two numbers as arguments and returns their sum.”
- Explain how your code works to non coders. You should be able to do it even if they have no experience.
- Start writing your code and explaining it on a whiteboard or piece of paper. This also shows if you really know the language or not. Have you been copying and pasting everything or have you actually gotten to know the language and the libraries?
Don’t skip this step. It may be the most important step when it comes time to land a job and do well at your job once you’re hired.
Be Comfortable Looking Dumb
Over the past year I’ve said:
- I have no idea what that means.
- Sorry, can you repeat that a third time.
- Can we draw it out, so I can get it?
- I can test positive for a cognitive disability.
You’ve made it through all your life knowing nothing about code. Don’t be scared of looking dumb, you’ll still continue living.
Sometimes you’ll be dumb all day. Maybe the person you’re working with has trouble explaining things, or you’re just low energy because you haven’t been eating your vegetables or getting laid. Notice what you need to perform and get it.
One pattern I keep seeing is that the people who speak up, ask a lot of questions, and aren’t afraid of looking like an idiot are the ones who’re learning the fastest.
When a baby learns how to walk, do you think he gets embarrassed when he falls down, or practices in private to avoid anyone seeing him fall? No, so be like a baby.
Above I mentioned that if you’re older or have been in a career for a long time, this journey will be harder. I said that because this step is the hardest part for those types of people.
If you’ve built up a wall around yourself of situational confidence (e.g. your career), to protect yourself from looking stupid, this step will feel like ripping a scab off a wound.
I’ve flipped the script on myself and have taken not knowing and actively seeking knowledge as a badge of honor. At least I try to maintain this state most of the time.
A baby is learning how to walk and is smiling and giggling along the way. A baby is also smashing his head against coffee tables and crapping his pants in front of everyone. Be like the baby.
Sprinting Through the Finish Line
There are no special tactics or secrets here. I stuck to a plan and hammered on it everyday. After graduating from my bootcamp, I got a full time coding job a couple of weeks later, but I kept practicing like I was still in the bootcamp.
It’s easy to tell yourself that you did well, you deserve a break. Look at all you accomplished! You got a full time job as a coder now, queue teardrop rolling down cheek.
The fact is you still don’t know shit, and you most likely still suck as a coder. I know I did, and
maybe I still do.
Now is not the time to rest. You’ve just spent all this time and money, to get momentum. Getting momentum is hard. Think about the energy it takes to move your stalled car, and how once it’s moving, you just had to push a little to keep it going.
Don’t stop the good habits we’ve developed. Maintain a training schedule, keep talking about code, keep learning new technologies and code things that require you to learn. If you keep coding what you already know, you will plateau.
Do not create a protective shield of comfort around what you know.
You’ll feel this code blankey creep up every now and then. This protective shield feels like the fleece blanket you’re wrapped in while you waste away on a coach watching Netflix. You know you need to crawl out of this blanket to go potty, but you’d rather piss yourself instead of leave the couch.
Pissing yourself is exactly what you’re doing if you stop learning. I fall into this trap often. We all love comfort, but it will not help us in the long term.
To keep learning, I suggest:
- Learn the technologies that you work with in your job, but to an even deeper level than you need for your job.
- Does the rest of your team hate CSS? Good, now become the CSS master.
- Speak up during meetings (Talk about code).
- Practice computer science fundamentals. Know your data structures and algorithms. Give yourself a computer science degree.
- Get a coding side gig.
And by the way, there’s no finish line. This is all just a big game that you can keep playing until you die, so have fun and make friends along the way. Think of it as an experiment, not a pedestal that you’re putting your life and happiness on.