Few occupational skills are as in-demand, self-teachable, and universally applicable as programming.
Programming is the art and science or providing detailed instructions for a computational unit. Programming often comes naturally to individuals who are already comfortable with computers, who have the ability to think logically, who are creative problem solvers, and who are methodical when troubleshooting.
In fact, a comically large portion of programming is commonly troubleshooting (or debugging, as it is often called). With the emergence of many productivity-enhancing frameworks, executing programming tasks that you know how to do is often remarkably quick. But when computer programs provide an unexpected result a great deal of time and effort can be expended. This leads to the darkly humorous 90-90 rule.
With that said, for many aspiring programmers, there’s hardly a better way to develop your skills than to just get started.
Self-Teaching Yourself To Program
Programming is an applied discipline in which throwing your creations into the “real world” will educate you more than you could ever educate yourself on a given piece of code. This is to say that many students don’t know what to study until they have a tangible need to study said element.
How to choose a language?
Programming languages are a dime a dozen. And for any individual project there’s undoubtedly a way to pull off creating the specifications with a variety of languages. Employable programmers are expected to know a range of languages, often those that work particularly well together or in a “stack.”
A “stack” is a collection of technologies that commonly work together.
Today there are so many potential programming languages — each with vibrant developer communities and tutorials — that the choice of a first language can be overwhelming.
When choosing an initial language, one should know that the skills learned regarding manipulating one language are almost always translatable to other languages. With this in mind, there really isn’t a “bad” place to start.
One helpful way to narrow down the potential list of programming languages is to decide what sort of technology you’re interested in working with.
- Are you interested in how websites look?
- First study HTML, CSS, and JS
- Are you interested in analyzing data?
- Explore R or Python
- Are you interested in Apple app development?
- Start by learning Objective-C
- Are you interested in Android app development?
- Start by learning Java
- Are you interested in the presentation of content online?
- Learn a CMS like Wordpress
- Are you interested in web-”native” apps that work on any device?
- Learn React or Flutter
Regardless of your initial interest area, you’ll likely learn concepts that are applicable to other languages. You’ll also likely learn several languages at once as you begin working on first projects. For example, it’s hard to do much development at all without knowing Javascript in some form. And it’s almost impossible to work on anything web-facing at all without learning HTML and CSS.
So how should you get started?
While there are a variety of books available on development topics, the act of copying code from printed pages to a computer can be a time-consuming and error-prone task for many developers. To this end, many online tutorials have been created to help step you through the foundations of many languages.
Some of the most popular include:
- FreeCodeCamp
- W3Schools
- Codecademy
- HTMLDog
- Among Others
These self-learning options are commonly “sandboxed” environments in which you can read through core concepts and then try out small code snippets in the browser to see how they work.
When looking for self-teaching tutorials that are good fits for complete beginners, be sure to look for tutorials that offer all of the following:
- The syntax of the language you’re working with
- Hands-on examples
- Coverage of flow control within a language
With these three elements, you’ll be creating your own small programs in no-time!
While you will need to learn some skills on your own through tutorials at some point. Starting with non teacher-led tutorials isn’t the right choice for everyone. Let’s take a look at a few pros and cons of this method of learning below:
Pros
- Lowest-cost method of learning to program
- Learn at your own page
- There are tons of amazing tutorials out there
Cons
- Must seek out your own solutions when stuck
- Must be a self starter
- Can learn bad programming habits
- Often not much coverage of background prerequisites
Not-For-Credit Programming Courses
For some students, starting in a self-paced tutorial environment just isn’t enough instruction. Luckily, a greater range of free and paid not-for-credit courses on programming are available than ever before. These courses are a great free or low-cost alternative to traditional schooling, and oftentimes are taught by thought leaders within the field of programming, or by the organizations who created programming languages of interest.
There are predominantly two routes to pursuing not-for-credit programming courses online:
- MOOCs
- Paid courses or bootcamps
MOOCs — short for massive open online courses — are often taped courses from top universities. These are great options for students who wish to receive some level of the rigor of computer science education offered at universities, but without the price or time commitment.
For students who are interested in pursuing MOOCs, but would like a little more attention from instructors, many MOOC providers offer moderately priced certification-tracks. These programs often pair students up with instructors who are on call to answer questions and evaluate work. It’s typically not as much one-on-one attention as in a university setting, but it’s a start (and much cheaper!).
Some of the most popular locations to find MOOCs online include:
- EdX
- Coursera
- FutureLearn
- Udacity
For students willing to pay for online courses, the number of options go way up. There are a range of not-for-credit courses built around building understanding, building projects for your portfolio, or building entire skill-sets.
Within this category of courses, there are two primary course types:
- One-off paid courses around building a project
- Bootcamps meant to bring you “up to speed” with a skill set
Depending on how much time you’re willing to commit as well as your price point, there’s quite a range to the above course types. One-off paid courses can range from <$10 to $100’s. Meanwhile, Bootcamps are meant to change careers in a hurry, and many of the best can run several $1,000’s. One of the largest locations of paid not-for-credit courses can be found at Udemy.com, while CourseReport.com has one of the largest databases of bootcamps. Before one endeavors on not-for-credit courses to learn new technologies, one should weigh some of the most common pros and cons, these can include: Pros
- Often More Support Than MOOCs
- Resources for learning are curated for you
- Often built around a portfolio-boosting project
- Cheaper than for-credit options
- Range of options from industry-leading professionals
Cons
- Range of quality (no accreditation)
- Still need to be a self starter
- Can cover less computer science or math foundations than university courses
For-Credit Programming Courses
To meet the demand for continuing education, trade and career-based course progressions are offered at many community colleges or as graduate “certificates.” These course clusters are for-credit, but stop short of a full degree, and can be a great way to get more foundational knowledge as well as a greater range of support services than any of the learning options we’ve mentioned thus far.
For-credit programming courses can also be a great option for students that intend to obtain further education in a field in the future. For example, advanced high school students with an interest in computer science or programming topics are likely fully qualified to take some courses at a community college.
While for-credit, individual or groups of courses are often less theoretical and more centered around one practical subset of knowledge. Some of the most common topical areas within individual or group courses in programming include:
- University-based web development bootcamps
- One-off course audits (not technically for credit)
- Computer Science Foundations
- App Development Course Clusters
- Data Science Course Clusters
- Cyber Security Course Clusters
- Data Analytics Course Clusters
Degree Programs for Programming
Finally, the most traditional route to enter into a software engineering or programming career is to obtain a degree in a related subject. The most common entry-level degrees within programming fields include associates and bachelor’s degrees. Additionally, as we’ve mentioned above, many programming jobs do not explicitly require a degree but rather look at the skills of the job candidate.
Degree programs at the associates level typically re quire 2-4 years for completion. The following degree types are most closely aligned with programming skills.
- Associates in Programming
- Associates in Networking
- Associates in Computer Science
- Bachelors in Computer Science
- Bachelors in Data Analytics
- Bachelors in Data Science
- Bachelors in Programming
- Bachelors in Cyber Security
- Bachelors in Information Systems
While there are differences in focus areas within each of the above degree programs, each should present graduates with numerous courses related to some of the following topics:
- Web Development
- Data Analytics and Science
- Algorithms
- Information Systems
- Object Oriented Programming
- Designing for Complexity
Here at DegreeQuery, we’ve covered a wide range of degree types, and computer science and programming is no different. Interested in learning more about your options to obtain a programming education? Check out our related resources below:
- The 20 Best Online Bachelor’s Degrees in Computer Science
- What Can I Do With a Computer Science Degree?
- The 10 Highest-Paying Jobs in Computer Science
- The 20 Most In-Demand Information Technology Careers
- What Degree Do I Need To Be a Video Game Programmer?
- What Degree Do I Need to Be a Lead Programmer?