As promised, this is the sixth part of a short series to provide some quick guidance for people who would like to reach out feelers into a possible software development career. As I mentioned in the first post, a lot of this material is recycled from some of my old Quora answers, updated for current times and the tone of the blog. More and more of it turns out to be new, the longer this goes on.


This time through—and this might be the end, for now—we’ll talk about the non-technical issues involved in being a programmer, specifically those issues that are generally handled by colleges. I’ll follow up next week with more general issues.

Note that I already covered some small parts of this when I wrote about colors and continued talking about graphic design tips in general. That is somewhat non-technical and will come in handy, but because I covered some of that ground there, I won’t repeat it here.

The Non-Technical Side (Education-Oriented)

Whenever there are discussions about the future of schooling, you’ll inevitably find someone (or a majority) either complaining about the things they weren’t taught in college or how there are cheaper ways to learn to program (or do any number of other things). Those people are missing the point. Specifically, they seem to imagine that they’ve gamed the system by discovering that…books exist, or websites or podcasts or whatever.

School, especially higher education, isn’t quite about education as such. That’s the pretext that’s easy to explain, but the benefits of a degree—assuming you take it seriously, of course—are that you receive external motivation, start building your professional network, and get an assessment of your ability. If you can’t or won’t get a degree, those are the first non-technical issues that you’ll want to look at.

So, let’s talk about those things.

External Motivation

Schoolwork, like work on a job, comes with deadlines. There is often competition for the best spots, whether that’s a better assessment (we’ll talk about that later) or access to more interesting projects. In both cases, you’ll find yourself around people who are enthusiastic about what they do and will push you to be more enthusiastic. In either case, you won’t be able to easily get away with ignoring the parts of a project that aren’t as much fun.

However, when you’re learning on your own with no accountability, it’s easy to only do the interesting parts of a job. It’s easy to put things off because you’d rather keep polishing something that interests you. You’re responsible for making sure you stay motivated.

The easy solution is to connect with someone (or a group of someones) who need that same kind of motivation. A lot of fields have taken up the term accountability partner to describe someone who shares responsibility for motivation on set goals. You can do the same thing by “just” simply setting and monitoring goals, of course, and you can easily find software that will nag you about your self-imposed deadlines. But you can blow those off more than a friend who’s going to ask you if you’re OK when you don’t respond.

Obviously, this only works if you commit to asking your partners how things are going, as well.

Where do you find these accountability partners? Keep in mind that your partner doesn’t need to be another programmer. They just need to be responsible enough to show up every day or so to tell you what they’ve worked on and listen to what you worked on. So, in that sense, you can tap any of your friends who have decided it’s time to pick up a new skill. However, it does help when your partner knows when to push back if it seems like you’re slacking off.

And that conveniently brings us to…

Professional Networks

The term sounds a bit transactional, but your professional network is a group of people who have some sense of your abilities and interests and you know theirs. They’re the people you might go to for career advice. You want them to know about a job at your company that might interest them. If you ask them for a reference when you’re applying for jobs, they can be honest about knowing your work.

It’s a little bit transactional, but that’s because we live and work in a transactional economy. But your network is a group that tries to help each other succeed. The most transactional part is making sure that you’re worth helping and not just taking from others.

Obviously, if you went to college or an organization along the lines of a boot camp, your fellow students are the start of that network. You see each other regularly, know each other’s strengths and weaknesses, and have some sense of what kind of jobs everybody is looking for. As you work with people, you will (should, at least) keep in contact with them, and they’ll have a similar relationship.

In other words, networking sounds like “get people to follow you on social media platforms,” but next to none of those people are going to sit down over lunch to talk about how your respective jobs are going.

Social media does work for this, but it’s not about the metrics. You can absolutely get to know and get help from people on any of the major (and not so major) platforms. But nobody cares about the number of people marked as your friends or how many people have offered to follow you back or whatever.

You might want to especially consider communities designed for people learning to program, especially if they’ve put work into making the community welcoming. You’ll (unsurprisingly) find more helpful people in those circles, such as Code Newbie and The Practical Dev, though the latter is more geared towards a blogging platform than a network per se.


Finally, we have what’s probably the really hard part.

In a class, the grade students receive should be an objective estimate of how well each student was able to assimilate the material the course covers. A final average and decision whether to award the degree is a version of that process that spans across multiple classes.

Degree programs at most colleges that people care about are accredited, which means that an independent board periodically audits the curriculum for every class and grading policies. In essence, they’re graded, too.

So, an accredited degree can be taken (with some unfortunate exceptions) as objective, both because giving the wrong people degrees harms their reputation—and so it harms their ability to recruit new students—and because they can lose their accreditation by not handling students properly.

This is the hardest piece of a formal education to replace, because this is all about building a reputation as someone who’s capable. Say what you will about the practicality of a college education, but the fact that an institution (a college) is willing to vouch for you and an accreditation board is willing to vouch for the college means that every graduate has starts their career with a decent reputation. If you can’t start out that way, you’ll need to build that reputation yourself.

Part of that is working to build your professional network. It might also involve doing cheap or free work for friends and neighbors, so that they can tell a future hiring manager what you were specifically able to accomplish for them. If you already have a job that happens to not be programming, it might also involve talking to the programmers and support people at your company asking for an opportunity to help. It might involve getting involved with an open source project.

(For the last item, there are websites that try to help people get involved in open source projects. Code Triage and Up for Grabs both have good reputations for finding work that needs to be done and also can be done by someone who doesn’t already know the project inside and out. It’s also worth looking at the open source projects you use, since you already have a personal interest in seeing the project improve.)

You know the old line about it being impossible to get a job without experience, but also being impossible to get experience without a job? This is all about getting experience without the job.

In the best of cases, when you apply for a job, someone at the company might already know and respect your work. That’s probably not going to happen, just because there are so many programmers and so many programming jobs. But it also happens more often than you’d expect.

Regardless, once you have a consistent reputation, your degree (or lack of a degree) mostly vanishes. You’ll get rejected if you apply directly for a job that specifically requires a degree, but you can often slip around restrictions like that if you know someone inside the company who believes that you can do the job.


We’ll continue on next Sunday talking about the non-technical issues that even people with degrees tend to have trouble with…

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