As I’ve hinted at once or twice, I’m recycling some of the answers I have written on Quora and updating them for my current line of thinking.

Women programming

This post is based on What are ways to become a web developer/designer for someone working full-time in a different field? from Saturday, May 3rd, 2014, Computer Science: I just got out of the military and I want to go to school for CS. What are the steps I should take with no prior CS experience? from Monday, December 22nd, 2014, Is it possible to become a good software engineer without getting a degree in computer science? from Saturday, December 27th, 2014, and Is it possible to learn computer programming and web design by yourself without any formal schooling? If so, how do I market myself to get a job without any qualifications to show? from Tuesday, February 10th, 2015. Obviously, they have been edited substantially to better fit together and the tone and format of Entropy Arbitrage.

There’s a lot of information and opinion, though, so I’ll probably end up spreading it across a few posts in a series. Today, this will just put together a loose roadmap.

Background 🔗

I noticed that the original version of the earliest post is almost (one month shy) of six years old and—given that we’re living in a time of social distancing and mass unemployment—it seemed like a good time to dust off some advice for people who might have time on their hands and an interest in a new career.

So, since I’ve talked about this a bit and have some second-hand experience in the process, maybe we can get some readers into new jobs or your own businesses that more easily enable remote work.

Understanding Goals 🔗

Whenever people ask questions about requirements for getting hired in a certain position, they often want to be too specific and, when they don’t get the job (because everyone gets rejected a lot, over time), end up misattributing the cause.

So, here is the single concept that you should always remember. The one and only trait that any hiring manager is looking for in candidates is:

If the company does hire you and they assign work to you, are you going to take care of that assignment without wasting too much time on your own and without needing too much direction? More specifically, they’re interested in whether you’re going to waste less time and need less instruction than other candidates for the same position.

That’s it. I know of MIT and Stanford graduates with important-sounding companies in their work histories who have been turned away, because they failed to convince the hiring manager that they would do the work. I’ve also seen companies let certain teenagers work odd hours to be able to hire them without interrupting school, because they made a solid case that they would get things done.

If you keep that in mind, a lot of other facets of a job search make more sense.

For example, I have been working in the software industry for more than twenty years. To prove that I’m fit for a job, I can talk about projects that I’ve worked on and decisions that I’ve had to make. It’s possible for a hiring manager to contact my former colleagues to get their impressions of my work. Or, we can talk about side projects I work on.

By contrast, if a candidate just has graduated from school with a relevant degree, they would point to their GPA and transcript. If they worked at an internship, that work is likewise relevant for the reason that my career history is relevant.

And when people say “it’s not what you know, it’s who you know,” what they really mean is that you are going to make contacts—friends, colleagues, clients, and so forth—who might be willing to vouch for you. When one of your employees says “this person knows what they’re doing,” their reputation (as someone who has already been hired) reflects on your reputation.

In fact, if we over-simplify what we’re talking about, we can distill the job-hunting process to that single word: Reputation.

So, if you’re coming to software from another industry, your primary goal is to build a reputation for getting things done. As you gain experience, you also want to build a reputation for helping others get things done, too.

So, What Is a Degree, Anyway? 🔗

I’ll dig into different aspects of this later, but I want to quickly talk here about what a college degree program is actually for, so we know what we need to replace.

It’s obviously not about the education itself, because I can guarantee that you can sit on your couch and learn everything I learned in college and more. Furthermore, that has pretty much always been true, since it’s usually not a big hassle to get access to a library. We’ll talk about that in some detail, of course, but just realize that a new career is bigger than watching some online classes.

Because of that, generally speaking, I break down degree programs into three components.

Motivation 🔗

This is closely related to the details of the literal education, but is still distinct.

When sitting on your couch learning from blog posts (hi!), it’s tempting to tune out and move onto something else when you get bored or frustrated.

However, when you’re in a classroom setting, you have deadlines for projects. You have exams. You probably have at least a few competitive people around you who are going to convince you to work harder.

Not everybody needs that motivation, but a lot of people do.

Professional Network Seeds 🔗

Earlier, I mentioned the “it’s not what you know, it’s who you know” adage. It’s clearly not entirely true. However, having a strong network means that you’ll probably hear about job openings before they go public. And, when you apply to a company where a colleague works, they can give an assessment of your work that will carry more weight than the neighbor you might use as a reference after they paid you to set up their home network.

A classroom is a primitive professional network, a group of people forced together who have a shared interest in the field and can get a decent sense of each other’s experiences. As you spread to different jobs, if you keep in touch, you connect those different workplaces.

Again, not everybody needs this network handed to them. It’s certainly far easier today to build one on your own than it was twenty years ago. But it does help.

Credentials 🔗

Here’s the big one, and if you’re thinking about changing careers, the issue you were probably thinking about.

When a school awards you a degree, it’s a neutral third-party assessing your ability to learn a specific set of things in a finite length of time. To ensure their neutrality, accreditation boards neutrally assess degree programs around the world.

When you’re a recent graduate looking for your first job, that degree is typically the only piece of information a company has about you that can be confirmed and trusted. When the Human Resources representative receives an application, they typically have no other way to know if the candidate knows how to program. Why? Because the candidate doesn’t have a reputation.

If you’re changing careers while social distancing, you’re almost definitely not going to have any relevant credentials. I’ll talk about what you need instead after laying out a path through the technical side.

The Grand Plan 🔗

When you look at the “big picture,” you should have some sort of idea of what kind of programming you want to do. I’m going to assume that web programming is the goal, because…

  • It’s common enough, unlike a field like writing compilers, where only a few companies are actually interested.
  • There’s a market for it, as opposed to making desktop software, where jobs are a bit harder to come by.
  • It’s something you can try out at home, unlike programming robots or other hardware you probably don’t have sitting around the house.
  • You don’t need much free disk space or a GPU, unlike fields such as machine learning.

Once you have figured that out, you have a handful of steps I’d recommend that you go through.

  • Pick a “technology stack” and run with it.
  • Learn the absolute basics of the technology.
  • Come up with a project and start programming; learn what you need in the context of the project.
  • Use tools to recommend improvements.
  • Learn the basics of graphic design and improve the appearance of your application.

After that, you can bounce up and down the list as long as you want, gaining confidence and experience, and thinking about where you don’t mind cutting corners and why you’re comfortable doing so. That’s not the entire story, but it’s the technical side of the story. I’ll get to the rest, later.

Caveats 🔗

As some quick background about my history, so that you’re able to decide when you can and can’t trust my judgment, I graduated from college (with a computer science degree) just when the web was becoming commercial, and thought it was “beneath me,” because the features weren’t particularly interesting and servers were expensive.  Avoiding the web kept me insulated from the dot-com boom and bust, but the world obviously embraced it.

While I keep a foot in the desktop and web worlds, I mention this to urge you to be flexible. Don’t be afraid of or otherwise resistant to learning a new way of doing things, especially when the market shifts. You don’t need to keep track of every single way of programming, or even a significant minority of them, but you should be prepared to change direction.

Also, I want to make the point that a career in writing software is arguably unique in that the job is almost entirely about living with failure. The project or feature you’re working on will be broken—obviously—up until you finally get it working. And if you’re an outside observer, you might be tempted to call that a success worth celebrating. But in a lot of cases, it’s just a sign to move to the next thing that doesn’t work.

Now, I realize that sounds extremely discouraging, but I and most of my colleagues actually enjoy that feeling. I’m increasingly convinced that nobody has a “natural talent” for programming, but rather just tolerates and appreciates the frustration.

And likewise, if you’re not enjoying yourself, there’s no shame in giving up. I would never want to be a sales representative, a cabbie, or an athlete, because I don’t enjoy the kind of stresses involved in those fields. I probably could do those things, but the effort involved in becoming good at those jobs would make me miserable.

Next Time 🔗

This seems like a convenient breaking point, before this post gets to be too long to handle in one sitting. Next week (on the 19th), I’ll come back to get into the broad strokes of technology, like deciding what systems you want to use and what you probably want to try to learn in your first sitting.

As a word of warning, I’m not going to treat this like a class, where I would try to walk you through step-by-step, but rather assume that any readers are motivated enough to dive in.

If you have any questions along the way, though, don’t be shy about leaving a comment or contacting me through some other venue.


Credits: The header image is Untitled by WOCinTech Chat, made available under the terms of the Creative Commons Attribution 2.0 Generic license.