1. Who is This Book For ?
for Anyone who is considering a career in software development.
2. Can Anyone Learn to Code?
Any sufficiently motivated person can learn to code.
3.Executive Summary
Learning to code is hard.Getting a job as a software developer is even harder. But it's worth the effort.
Coding is a high-paying, intellectually challenging, creatively rewarding field.
career progression:
senior developer->tech lead -> engineering manager -> CTO, and perhaps even CEO.
4.Build your skills
Front End Development : HTML, CSS, JavaScript
Back End Development : SQL , Git, Linux , and Webservers
Scientific Computing: Python and its many libraries
The best way to learn these tools is to build projects. Try to code at least some every day.
4. Build your network
Create GitHub, Twitter, LinkedIn, and Discord accounts.
Go to tech meetups and conferences.
Add people on LinkedIn, follow them on Twitter, and go to after-parties.
5.Build your reputation.
- Share short video demos of your projects.
- Keep applying to speak at bigger and bigger conferences.
- Hang out at hackerspaces and help people who are even newer to coding than you.
- Contribute to open source.
- Keep interviewing until you start getting job offers.
- Your first developer job will be the hardest. Try to stay there for at least 2 years, and essentially get paid to learn.
Most importantly, sleep and exercise.
Any sufficiently-motivated person can learn to code well enough to get a job as a developer.
Remember: you can do this.
Chapter 1: How to Build Your Skills
Nobody Can Make You a Developer But You
Lessons from my Coding Journey
Why is Learning to Code so Hard?
Learning to code is hard for a few particular reasons. And some of these are unique to coding.
What is coding?
Coding is telling a computer what to do, in a way the computer can understand.
Why is learning to code still hard even in 2023?
There are three big reasons why learning to code is so hard, even in 2023.
- 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.
coding is the rare profession where you can just infinitely reuse solutions to problems you've previously encountered.
Thus as a developer, you are always doing something you've never done before.
How Not to Get Frustrated
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 great tool for slowing down and talking through the problem at hand.
How do Most People Learn to Code?
The Importance of Computer Science Degrees
You don't need a Computer Science degree to become a developer.
But their usefulness is undeniable. And I'll explain why.
"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
Why do so Many Developer Jobs Require a Computer Science Degree Specifically?
here's my theory on this: what you learn in university is less important than whether you finished university.
- The education itself. (You can take courses from some of the best universities online for free, so this alone does not justify the high cost of tuition.)
- The "college experience" of living in a dorm, making new friends, and self discovery. (Most US University students never live on campus so they don't really get this anyway.)
- General education courses that help you become a "well rounded individual" (Ever hear of the Freshman 15? This is a joke of course. But a lot of university freshman do gain weight due to the stress of the experience.)
Do You Need a University Degree to Work as a Software Developer?
No. There are plenty of employers who will hire you without a bachelor's degree.
A bachelor's degree will make it much easier to get an interview at a lot of employers. And it may also help you command a higher salary.
If You Already Have a Bachelor's Degree, Does it Make Sense to Go Back and Earn a Second Bachelor's in Computer Science?
No. Second bachelor's degrees are almost never worth the time and money.
If you have any bachelor's degree – even if it's in a non-STEM field – you have already gotten most of the value you will get out of university.
What About a Master's of Computer Science Degree?
These can be helpful for career advancement. But you should pursue them later, after you're already working as a developer.
Many employers will pay for their employee's continuing education.
One program a lot of my friends in tech have attended is Georgia Tech's Master's in Computer Science degree.
Georgia Tech's Computer Science department is among the best in the US. And this degree program is not only fully online – it's also quite affordable.
Will Degrees Continue to Matter in the Future?
Yes, I believe that university degrees will continue to matter for decades – and possibly centuries – to come.
What Does a Computer Science Bachelor's Degree Cover?
What Alternatives are There to a University Degree?
If you want formal education, go for the bachelor's degree. If you don't want formal education, don't do any program. Just self-teach.
How to Teach Yourself to Code
So whether you pursue formal education or not, know this: you will need to get good at self-teaching.
What Does it Mean to be a "Self-Taught" Developer?
when I refer to self-teaching, I mean self-directed learning – learning outside of formal education.
What is Self-Directed Learning?
You're going to choose what to learn, from where. That is the essence of "Self-Directed Learning."
What Programming Language Should I Learn First?
The short answer is: it doesn't really matter. Once you've learned one programming language well, it is much easier to learn your second language.20
There are different types of programming languages, but today most development is done using "high-level scripting languages" like JavaScript and Python. These languages trade away the raw efficiency you get from "low-level programming languages" like C. What they get in return: the benefit of being much easier to use.
Python is a powerful language for scientific computing (Data Science and Machine Learning).
You could code your entire career in JavaScript and would never need to learn a second language.
So I recommend starting with JavaScript. Not only is it much easier to use than languages like Java and C++ – it's easier to learn, too. And there are far, far more job openings for people who know JavaScript.
The other skills you'll want to focus on are HTML and CSS. If a webpage were a body, HTML would be the bones, and CSS would be the skin. (JavaScript would be the muscles, making it possible for the website to move around and be interactive.)
You'll also want to learn how to use Linux. Linux powers a vast majority of the world's servers, and you will spend much of your career running commands in the Linux command line.
You'll also want to learn Git. This Version Control System is how teams of developers coordinate their changes to a codebase.
You'll want to learn SQL and how relational databases work. These are the workhorses of the information economy.
You'll also hear a lot about NoSQL databases (Non-relational databases such as graph databases, document databases, and key-value stores.) You can learn more about these later. But focus on SQL first.
Finally, you'll want to learn how web servers work. You'll want to start with Node.js and Express.js.
When you hear the term "full stack development" it refers to tying together the front end (HTML, CSS, JavaScript) with the back end (Linux, SQL databases, and Node + Express).
But the key skills you should spend 90% of your pre-job learning time on are:
- HTML
- CSS
- JavaScript
- Linux
- Git
- SQL
- Node.js
- Express.js
If you learn these tools, you can build most major web and mobile apps. And you will be qualified for most entry-level developer jobs.
Building Your Skills is a Life-Long Endeavor
We've talked about why self-teaching is probably the best way to go, and how to go about it.
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
How to Build Your Reputation as a Developer
There are at least six time-tested ways you can build your reputation as a developer. These are:
- 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