How to Learn to Code and Get a Developer Job [1]#
Chapter 1: How to Build Your Skills#
If you work for 10 years, do you get 10 years of experience or do you get 1 year of experience 10 times? You have to reflect on your activities to get true experience. If you make learning a continuous commitment, you’ll get experience. If you don’t, you won’t, no matter how many years you have under your belt.
—Steve McConnell, Software Engineer.
- Tutorial hell:
It is where you jump from one tutorial to the next, learning and then relearning the same basic things. But never really going beyond the fundamentals.
Always have a project. Then learn what you need to learn en route to finishing that project.
Together, we face the fundamental problems of our time:
Access to information,
Access to education, and
Access to the tools that are shaping the future.
There are three big reasons why learning to code is so hard, even today:
The tools are still primitive.
Most people aren’t good at handling ambiguity, and learning to code is ambiguous. People get lost.
Most people aren’t good at handling constant negative feedback. And learning to code is one brutal error message after another. People get frustrated.
How Not to Get Frustrated: The key, again, is practice.
People think software development is about typing code into a computer. But it’s really about learning.
Get comfortable with ambiguity and you will go far.
Tip #1: Know that you are not uniquely bad at this.
Tip #2: Breathe.
Tip #3: Use Rubber Duck Debugging (Rubber Duck Debugging is a method of debugging code by explaining it out loud, often to an inanimate object like a rubber duck).
Well, here’s a theory: what you learn in university is less important than whether you finished university. Employers are trying to select for people who can figure out a way to get through this rite of passage.
Computer science education cannot make anybody an expert programmer any more than studying brushes and pigment can make somebody an expert painter.
—Eric Raymond, Developer, Computer Scientist, and Author.
Chapter 2: How to Build Your Network#
If you want to go fast, go alone. If you want to go far, go together.
—African Proverb
First, let’s inventory all the people you know (start by creating a list of people you know). I recommend using a Kanban board tool like Trello, which is free.
You’re going to create 5 columns: to evaluate
, to contact
, waiting for reply
, recently in contact
, and don't contact yet
.
Then you’re going to want to create labels, so you can classify people by how you know them. Here are some label ideas for you: «Childhood friend», «Friend of the family», «Former colleague», «Classmate», «Friends from Tech Events».
Word to the wise: the best way to forge alliances is to help people.
Text for helping others:
Hey [name], congrats on the [new job / promotion / new baby]. I’ve been learning some programming, and am building my portfolio. You immediately came to mind as someone who gets a lot of things done. Is there any sort of tool or app that would make your life easier? I may be able to code it up for you, for practice.
Anyone who has begun to think places some portion of the world in jeopardy.
—John Dewey
Chapter 3: How to Build Your Reputation#
The way to gain a good reputation is to endeavor to be what you desire to appear.
—Socrates
As developers, we need proof that our skills are as strong as we say they are. We need proof that our work ethic is as steadfast as our employers need it to be. And if you send people to a website, they may not fully grasp what they’re looking at, and why it’s so special.
That’s why I recommend you use a screen capture tool to record 2 minute video demos. Two minutes should be long enough to show how the project works. And once you’ve done that, you can explain some of the implementation details, and design decisions you made.
Being able to demo your projects and present your code is a valuable skill you’ll use throughout your career. Time spent practicing pitching is never wasted.
Don’t rush into founding a project, company, or charity. Try to work for other organizations who are already doing work in your field of interest.
By working for someone else, you get paid to learn. You get exposure to the work, and the risks surrounding it. And you can build savings for an eventual entrepreneurial venture.
You can prove the existence of data, but there is no way to prove the absence of data.
You should assume, for all intents and purposes, that the cat is out of the bag. There’s no getting the cat back in the bag. Whatever you just said: that’s on your permanent record.
You can delete the remark. You can delete your account. You can even try to scrub it from Google search results. But someone has probably already backed it up on the Wayback Machine. And when one of those databases inevitably gets hacked years from now, those data will probably still be in there somewhere, ready for someone to resurface them.
It is a scary time to be a loud mouth. So don’t be. Think before you speak.
So that is my advice on using social media. Try to keep it positive.
Get Addictions Under Control Before They Damage Your Reputation
If you have an untreated drug, alcohol, or gambling addiction, seek help first. The developer job search can be a long, grueling one. You want to go into it with your full attention.
If you are in recovery from addiction, be mindful that learning to code and getting a developer job will be a stressful process. Pace yourself, so you don’t risk a relapse.
Never lose sight of how much you have. And how much you have to lose.
The Narrator Trick is to narrate your actions in your head as you do them.
Narrating even the most mundane moments of your life in your head can help energize you. Crystalize the moment laid out before you, and give you clarity of purpose.
By taking yourself more seriously, by thinking about your life as a movie, you’re gradually working through who you are. And who you want to one day become.
When you repeat a mistake, it’s not a mistake anymore. It’s a decision.
—Paulo Coelho
Your Reputation Will Become Your Legacy#
Think about who you want to be at the end of your story. How you want people to think of your time on Earth. Then work backward from there.
That future you – how would they think? How would they approach situations and solve problems? How would they talk about their accomplishments? Their setbacks?
That’s where reputation comes in. It reduces ambiguity. It reduces counter-party risk. It makes it safer for employers to make a job offer, and to sign an employment contract with you.
There are at least six time-tested ways you can build your reputation as a developer:
Hackathons,
Contributing to open source,
Creating Developer-focused content,
Rising in the ranks working at companies who have a «household name»,
Building a portfolio of freelance clients,
Starting your own open source project, company, or charity.
You can read through open GitHub issues to find known bugs or feature requests. Then you can make the code changes and open a pull request. If the maintainers merge your pull request, this will be a major feather in your cap.
One of the best ways to get a job at a tech company is to become a prolific open source contributor to their repositories.
If you’re interested in film, journalism, or creative writing, developer content may be a good way to build your reputation.
Freelance developers usually work on smaller one-person projects. So this may be a better strategy for building your reputation locally.
On the first Monday of each month, I would map out all that month’s upcoming tech events around southern California, so I’d always have a tech event I could attend if I had the energy.
So I talked with the CTO over noodles. Mostly listened. I’d learned that people project intelligence onto quiet people. Listening intently not only helps you get smarter – it even makes you look smarter.
This wasn’t a cushy job at a big tech company, with all the compensation, benefits, and company bowling alleys. It was a contractor role that paid about the same as I was making as a teacher. But it was a developer job. A company was paying me to write code. I was now a professional developer.
Chapter 4: How to Get Paid to Code – Freelance Clients and the Job Search#
What Employers Want#
I think much of the frustration developers feel about the hiring process comes down to a misunderstanding. Employers value one thing above all else: predictability. Try not to change jobs too often. Hiring is hard. So you can see why employers are risk averse. Many of them will pass over seemingly qualified candidates until they find someone whom they feel 99% sure about.
The reality is: learning to code is hard. But knowing how to code is important.
My hope is that with strong skills, a strong network, and a strong reputation, you’ll be able to land a good job despite a challenging job market.
What to Expect from the Developer Job Interview Process#
Now, practicing algorithms and data structures will go a long way. But you also need to be able to think out loud, and explain your thought process as you write your solutions.
Your interviewer probably knows what they’re looking for in your code. So see if you can tease some hints out of them. By making observations or asking open-ended questions out loud to yourself, you may be able to get your interviewer to step in, and feel involved in the process.
You want your interviewer to like you. You want them to be rooting for you, so that they may dismiss some of the shortcomings in your programming skills, or overlook some of the errors you may make in your code.
You are selling yourself as a job candidate. Make sure your interviewer feels like they’re getting a good deal.
How Do I Make Sure Freelance Clients Pay Me?#
A lot of other freelancers – myself included – use this simple approach: ask for half of your compensation up-front, before you start the work. And when you can demonstrate that you’re half way finished, ask for the other half.
Always try to get all the money before you actually finish the project. That way, the client will not be able to dangle the money over your head and try to get extra work out of you.
If you’re already paid in full, the work you do to help your client after the fact will convey: «I’m going above and beyond for you.»
If you instead focus on finding clients through your own local network, you will not have to compete with these freelancers abroad.
And the same goes for people who are looking for help from freelance developers. If you ever want to hire a freelancer, I strongly recommend working with someone you can meet with in-person, who has ties to your community.
Chapter 5: How to Succeed in Your First Developer Job#
This was one of my earliest lessons about team dynamics. You don’t want to wear out your welcome with too many questions. You need to get better at learning things for yourself.
I said, «I’m grateful that you all hired me, even though I was clearly the weakest developer at the company.»
He just let out a laugh and said, «Sure, when you started, you were the worst developer on the team. I’d say you’re still the worst developer on the team.» I sat there smiling awkwardly, blinking at him, not sure whether he was just angry I was leaving. And then he said, «But that’s smart. You’re smart. Because you always want to be the worst musician in the band. You always want to be surrounded by people who are better than you. That’s how you grow.»
Take on projects that both fulfill your obligation to your employer, and also position you well for your long-term career goals. Salaries by job title and company
I spent 3 months applying to jobs after a coding bootcamp. Here’s what I learned. [2]#
Here are 5 things I wish I’d known before I began my job search:
Insight #1: Get through to real people:#
For most small companies or C-level executives, the email format is usually firstName@dreamCompany.com. For larger companies, it may be firstName.lastName@dreamCompany.com. To verify emails, I used Rapportive to cross-check emails with social media accounts. The results were amazing. With 150+ emails sent, my response rate was a whopping 22%.
Takeaway: If you’re applying through the front door, make sure you’re getting to human beings.
Insight #2: Start small and work your way up#
I strategically set up my process so that I had lower-level interviews earlier, and higher-level interviews later on. Early on, I gained experience, built confidence, and secured offers from companies that had less intensive interviews.
Takeaway: Plan to tackle easier interviews early on and more difficult ones later on.
Insight #3: Study like your future job depends on it (because it does)#
https://www.hiredintech.com/classrooms/system-design/lesson/60
https://www.educative.io/collection/5642554087309312/5679846214598656
https://www.reddit.com/r/cscareerquestions/comments/1jov24/heres_how_to_prepare_for_tech_interviews/
Takeaway: There’s no such thing as too much preparation.
Insight #4: Put your best foot forward#
Ultimately, you need to convince companies that you can do the job. At the same time, you need to convince yourself that you can do the job. You can. Focus on your love for programming. Focus on what you’ve built with React and Node. Focus on demonstrating your deep knowledge in JavaScript and any other languages you’ve learned. Only then can they justify giving you the job.
- Pro-Tip: During interviews, ask the following questions:
What are some technical challenges you’ve recently faced?
What do you enjoy about working at X company?
How are teams structured and how are tasks usually divided?
Takeaway: Don’t sell yourself short! And remember, it’s a mutual exploration.
Insight #5: It’s a marathon, not a sprint#
It’s easy to burn out during the process. Eat well, sleep, and exercise. It can get lonely. Spend time with friends who are going through the same experience.
Takeaway: Prepare for the long game and make sure you take care of yourself.