avatarBennett Garner

Summary

The article outlines a strategic approach for aspiring developers to learn coding, specialize, build a professional network, and secure employment in the tech industry from scratch.

Abstract

The author presents a personal roadmap for restarting a career as a developer with no existing resources or skills. The strategy emphasizes self-study over formal education, advocating for the discipline and deep understanding it fosters. The article suggests starting with Harvard's CS50 course to grasp computing fundamentals, then specializing in a specific area of development to stand out in the job market. Writing about one's learning journey is recommended to establish credibility and create a digital footprint. The author advises making a targeted list of companies to tailor job applications, deploying projects to gain experience, and cross-linking digital assets to create a robust online presence. The approach culminates in strategic outreach to potential employers, bypassing the traditional application process.

Opinions

  • Self-study is preferred for its ability to instill discipline, self-reliance, and a deeper understanding of computer science concepts.
  • University education is considered too slow and costly for the author's taste, while bootcamps are seen as potentially misleading due to their tendency to push specific career paths and tech stacks.
  • Specialization is crucial for differentiation in a crowded job market and for becoming more valuable to potential employers.
  • Writing and blogging about technical experiences and projects is an essential tool for marketing oneself and documenting one's growth as a developer.
  • Creating a list of target companies helps in focusing job search efforts and allows for more personalized communication with potential employers.
  • Building and deploying projects, even for free, is invaluable for gaining practical experience and attracting user feedback.
  • Cross-linking various digital profiles, such as a portfolio site, LinkedIn, GitHub, and a blog, is recommended to present a cohesive and impressive online presence.
  • Direct outreach to engineering leaders and recruiters via LinkedIn and platforms like hired.com is deemed more effective than submitting resumes through online job portals.

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!

Programming
Coding
Software Development
Python
JavaScript
Recommended from ReadMedium