What I’d do if I woke up tomorrow with $0 to earn money as a developer from scratch

No money, no connections, no skills.
Starting out as a developer is the hardest part. You haven’t built up any momentum yet. But it’s also the part where mistakes can set you back months from your goals.
Getting that first job or contract is a huge moment! Moreover, growing your career with new positions, skills, and connections is a matter of continuing to build the momentum you have.
Every person’s situation will be different. I can’t possibly answer “how to work as a developer” for everyone.
But here’s what I’d do if I had to start over.
Self-study vs university vs bootcamp
I’m a big advocate of self-study. But it isn’t for everyone.
Self-study takes discipline, a learning style that works while alone, and a lot of time researching your own answers. In return, self-study rewards you with a deeper understanding of the topics.
It teaches you that curiosity is a tool — and that’s a valuable lesson for developers.
University seems too expensive and slow for my style. So, I wouldn’t pick that route.
Bootcamps can be great for some people. But there’s a lot of garbage out there with bootcamps. You also get steered into certain career paths and tech stacks that you might not have picked on your own.
If I were starting over, I’d teach myself to code.
The fundamentals
Working as a software developer requires understanding the fundamentals of computing.
This is another big issue that many bootcamp and self-taught developers face. They never learned the basic building blocks of the profession. When it comes time to expand beyond the basics, they get stuck. They don’t know about the tools at their disposal.
The best resource I’ve found on computing fundamentals is Harvard’s intro course for the computer science major: CS50.
If you feel you don’t have a foundation in the basics of computing, networking, and algorithms — that’s the course you should take.
It’s how I would learn if starting from scratch.
Specialize
Starting from scratch, you’re a little fish in a big pond.
There are a lot of people out there learning to code. You can help to differentiate yourself by picking a specialization.
Once you have the basics down, start to focus on that specialization.
It could be backend, frontend, mobile, data science, site reliability, etc. Whatever you’re interested in, pick a specialty and start diving deeper.
This is where people waste a lot of time. They dabble in many different specializations. Try a little bit of everything. Never get really good at any one thing.
It’s hard to specialize, but it makes you more valuable. If I were starting from scratch, I’d specialize early and start going deeper.
Start writing, asap
This is not unique to new developers. Every engineer should have a blog.
Write publicly online about the things you’re learning, building, and experiencing. Build up a foundation of content that makes it clear you’re working on technical problems.
You don’t need to be an expert to write something!
There’s a big fear around starting to publish online. But the truth is that — at first — nobody will read your writing. You’re publishing just to get practice and repetitions.
Over time, the quality and quantity of your writing will increase. You’ll expand your digital footprint.
The blog will become part of marketing yourself. The articles you’ve written will give you credibility before you ever get to the job interview.
Make a target list
Once you’ve learned to code, specialized, and started writing about your journey; how do you start to look for work?
Whenever I’m on a job hunt, my first step is to make a list of target companies.
- Who would I like to work for?
- What size is the company?
- What do they do / industry are they in?
- What’s their tech stack?
- What role do I want on their team?
As a new developer, you may think: “I can’t afford to be picky!”
But a weird thing happens when you narrow down your target list. You become more valuable to your target audience because you’re able to cater your messaging to them.
When you niche down, you’re actually more likely to succeed.
Starting from scratch, I’d keep a list of companies I’d like to work for and keep adding to that list often. I’d also write a Positioning Statement as a developer to help keep me focused on my target.
Get in reps & deploy
This is the most important step.
Starting from scratch, the best thing you can do is build something and deploy it.
Then, expand the thing you built or build something new. Keep building and deploying.
Bonus points: When you build something, write about it. Tell the challenges you faced building it. Make an article about what your app does and the problem it solves for you.
Additionally, work for free! Solve other people’s problems with code. Help your uncle with a website, or your friend with some cool script. Everything is experience, and you want people using your code — both for user feedback and references later on your resume.
Keep working, building, and releasing publicly. That’s the fastest way to learn.
Cross-link digital assets
As a developer, you have to have a presence on the web.
If I were starting over, one of the first things I’d do is link together all the digital assets I have:
- Make a simple, one-page portfolio site (like https://bennettgarner.com/)
- Fine-tune my LinkedIn using my positioning statement and projects I’ve done
- Create a GitHub profile README page with rich text, links, and information about you
- On your blog — remember you’re already writing publicly — add an about page with details about you. Pin some posts that are the most impressive.
Now the important part: make sure all of your digital homes are cross-linked.
From your portfolio, people should be able to discover your blog, LinkedIn, GitHub, etc.
From any one point in your digital network, people should be able to discover all the other points!
Stacking the deck
Now, we’re ready to talk about getting hired to work as a developer.
But notice how I’ve stacked the deck in my favor. I have several impressive projects out there, as well as work I’ve done for other people (for free).
My blog has a history of articles that demonstrate my competence as a developer.
Everything is cross-linked so it seems like I have a broad digital footprint that’s complex and deep. (Most interviewers won’t look too deep into the history of your blog/portfolio/linkedin, but they’ll be impressed that it’s all linked together.)
Now, when I reach out to someone about a job, I can share my digital resources knowing that they look more impressive than the pack.
Outreach for a job
Starting from scratch as a developer, I’d focus on a few outreach channels for work:
- Directly messaging engineering leaders at the companies I want to work for on LinkedIn
- Chatting with recruiters on LinkedIn
- Joining platforms like hired.com to get matched with companies
These seem to be the most productive outreach channels for actually landing a job.
Submitting dozens of resumes via online forms definitely wouldn’t be my strategy. Those applications go into the void and often don’t get read.
Every job I’ve ever had has come through outreach or a match via recruiter/other method.
More resources
This only scratches the surface of how to get started as a developer, but I hope it’s helpful!
Even experienced developers might find it useful, since there are some uncommon practices in this article.
I write something new for developers every day. Get on the daily list because that’s where I share more content like this.
—
Join Medium for $5 — Access all of Medium + support me & other writers!






