How Should You Start Learning Programming?
A Broad Question With Multiple Solutions that Leaves the Asker to Weigh the Tradeoffs
There are a few major ways to learn programming. You can enroll in a formal computer science program at a college or university. You can piece together a learning path from resources available on the web and elsewhere. You could also attend a bootcamp that focuses on teaching programming skills. Each will have its tradeoffs.
Let’s look at the first option, college. This option is popular, but, costly in both time and money. These barriers often make obtaining a degree unreachable by a large majority. College requires courses that are outside the scope of programming. Theses subjects give you a more rounded education, yet it adds to the time and cost. In a formal program will also find that you will have very little control over what you actually study. The technologies taught in academia do not always reflect what is current. The choice of tools is often decided based on the knowledge and comfort of the teaching faculty. The availability of textbooks and other learning materials can also play a part. The teaching at these formal schools is theoretical in nature. While the student learns about higher level concepts, they can often lack the skills to apply them. Unfortunately, there is subset of graduates that find they do not feel job ready. They can end up spending even more time and money doing self study or attending a bootcamp.
“While the student learns about higher level concepts, they can often lack the skills to apply them.”
The self study approach has become popular with the rise of the internet. The internet is full of content directed at individuals trying to learn programming. There are also many great books that are available to help round out the learning process. Learning programming on your own has never been more accessible or more difficult. By and large a majority of the available content is geared towards beginners. As the learner progresses towards more complex topics the material is less prominent. Programming is a very, very broad topic. Almost everything from cars to thermostats have a computer. These items need software that must be programmed. One must sort through tons of content to determine what is applicable. Further, a lot of the concepts in computer programming build off of each other. Learning concepts without a grasp on the underlying technologies can be difficult, if not impossible. The industry as a whole is ever changing. You can make an investment in learning a specific technology, only to find that it is now obsolete. Many have fallen victim to chasing the latest and greatest technologies. Only to find themselves circling back when that technology has fallen out of favor. It takes experience to determine what will stand the test of time. Negotiating the challenges of determining what to learn requires a lot of self-discipline. The learner has to make and follow their own training plans. They must also find sources for answers when they get stuck on a problem. This is very challenging ordeal when you have trouble self-motivating and self-regulating.
“Many have fallen victim to chasing the latest and greatest technologies. Only to find themselves circling back when that technology has fallen out of favor.”
This brings us to our third option, bootcamps. Bootcamps are geared towards getting a student job ready. They are much shorter than the typical college degree route. As a tradeoff, they usually can’t cover material as deeply. Bootcamps also provide a training plan and guided instruction. Most bootcamp students also are part of a class or cohort and have some sort of interaction with other students. A lot of bootcamps have a very short duration. They focus on a small subset of skills a programmer needs to be employable. More times than not, the graduates of these programs find themselves only minimally qualified. The lesser 95% find themselves competing for entry level positions.
“More times than not, the graduates of these programs find themselves only minimally qualified.”
There is yet, a fourth option. At Launch School, where I am an instructor, we believe that the answer is mastery-based learning. This means consciously choosing a path that emphasizes knowledge rather than speed. Incidentally, a mastery-based approach is also well-suited to beginners who are balancing their learning with other commitments because it is self-paced and flexible. The program is not as long as a traditional “4 year” program at a college or university and it is a fraction of the cost. Launch School has a well laid out path with an emphasis on teaching fundamentals and technologies that seldom change. We have found that this approach is not only an optimal path to learning to program, but a spring board towards a career in software engineering.
This article was originally published as an answer to a question on Quora. It is re-posted here for Medium readers with the same question.