The Three Questions All Aspiring Self-Taught Programmers Ask

Cory Althoff
The Self-Taught Programmer
4 min readOct 10, 2017

Do I need a degree?
Learning to program is hard. You need to be willing to commit over a year to be proficient enough to program professionally, but the learning never stops. To program professionally, you don’t just need to learn a programming language. You also need to learn a programming paradigm (a style of programming) like functional or object-oriented programming. You also need to learn tools like version control, the command-line, and regular expressions. Finally, you need to study different areas of computer science: like data structures and algorithms.

While programming is difficult, and you do need many things to be successful at it: like being motivated, hardworking and patient, the one thing you do not need to get a job as a software engineer is a computer science degree. I know this can be hard to comprehend, which is why I would like to share the success story of a programmer from a Facebook group I started called Self-Taught Programmers who made the journey from novice to employed software engineer without a degree:

It’s official. At the age of 47, as of next Monday, I will no longer be working in finance for an investment bank — I will be a full-time developer!
The full story is long and rambling, but the short version is that less than a year ago, I started teaching myself javascript, and dove into vanilla JS first, and then Node, before starting to learn Angular and React. It hasn’t been easy, I’ve learned lots about learning along the way, and clearly have a long way to go still.
Somehow though, just after the beginning of the year, I did enough to get a tiny bit of subcontracted Node and front end vanilla javascript work from a friend at web development consultancy. After completing the project, he told me he could give me more work, but was worried about my time availability (My days in finance start an hour before the markets open here in the U.S. and usually last anywhere from 9–12 hours). So after chatting for the last couple months, I’ve decided to take the leap (a bit sooner than expected) — I have been offered and accepted a full-time development job!
Anything is possible when you put your mind to it. If I can do it, I’m sure many of you can as well. If you have questions, feel free to tweet or DM me on Twitter at @cbedzz, and if there is any interest, I’d even consider doing a Hangouts AMA to talk about the journey. I have strong opinions and like to share them. I’d love to start a blog about the adventure, but I’m guessing I’ll be a little busy over the coming months.
— Chris Bedowitz

2. What Does it Take?
To learn how to program, you need to get very good at finding information and solving problems. Even experienced programmers spend a ton of time on sites like StackOverflow. If you aren’t familiar yet, StackOverflow is a Q&A website for programmers. It is incredibly popular, and you can find the answer to almost any programming question on it.

I’ve heard many programmers say they aren’t very good at programming, just great at looking stuff up on StackOverflow. To become a successful self-taught programmer, you need to develop resilience: you should be able to go long periods of time trying to solve problems, despite continually hitting a brick wall, without giving up.

3. What Programming Language Should I Learn?
When new programmers are getting started, this is one of the first questions they ask. They then receive so many conflicting answers they are ready to give up programming before they start.

The first thing you need to know when choosing your first programming language is the difference between a low-level and a high-level programming language. A low-level programming language is closer to the machine than a high-level language. In other words, it is closer to being written in 0’s and 1’s (binary). C is an example of a low-level language. High-level languages, like Python, are closer to English and are much easier to read.

There are two schools of thought when it comes to choosing your first programming language. One school of thought is you should learn a low-level language like C first. Advocates of this school of thought argue that even though learning a low-level language first is harder, it is superior because it “teaches you the fundamentals.” Beware of this logic. Yes. Learning computer science fundamentals is essential. But what good are CS fundamentals, if you give up on programming after two weeks because learning a low-level language, was too hard and you got frustrated?

The best first language to start with is the one you have the best chance of actually learning. And you have a much better chance at learning a high-level language than a low-level one. Once you’ve mastered your first high-level language, then you can learn a language like C and master CS fundamentals.

So now you are left with choosing between the different high-level languages. Popular high-level languages include Python, Ruby, Swift, and JavaScript. I chose Python to teach new programmers in my book The Self-Taught Programmer, but any of these three languages are fine to start with.

Bonus:
Should I Learn More Than One Programming Language At Once?
No.

If you enjoyed this article please share it or give it a few claps. You can find more articles like this at selftaught.blog. Also, check out The Self-Taught Programmer book and course. Thanks for reading!

--

--