Can I Teach Myself to Code?

Computers have become an undeniable part of day-to-day life. And this isn’t just laptops or desktop systems either. Everything from our phones to our game consoles are actually computers. Even something as simple as a digital picture frame or eBook reader will typically use a surprisingly powerful central processing unit. How do we program these devices? The ability to code would allow you to write custom code for all these machines. It can even pave the way toward a wide variety of fulfilling careers. So, can you teach yourself how to code?

A Question of Learning Methods

There are many ways that programming can help us with various aspects of life. But this raises an important question. What’s the best way to learn how to code? Can we learn on our own or should we rely on formal education? The answer can be a little tricky as different ways of learning will provide different skills.

Different Learning Contexts Teach Different Things

As we go through some aspects of coding, it’s important to remember that self-learning and formal education often look at the same subject in different ways. Take basic design as an example. Formal education usually puts a heavy focus on team projects. When we’re working in a professional field, we’ll almost always be part of a larger team. As such, we will need the knowledge, practice and ability to create a blueprint to be used by a full development team.

Formal education includes group activity and will help you learn how to create effective prototypes and plans before starting on a project. Even coding styles will differ when we look at both self-learning and formal education. When we learn on our own, there’s not much need for team related tools or code management. But when we work in a group these tools become a necessity.

As we’ll see, formal education and self-instruction often come with unique benefits. In the end, formal education is a vitally important part of learning how to code. But at the same time, we can learn a lot about programming on our own. This can be considered a complementary style of learning rather than something which excludes other options. Learning some coding on our own will enhance how well we master skills presented within a formal setting.

Programming Languages

During a formal education, you will learn foundational programming languages like Java and C++. By learning these programming languages first, you can understand the protocols of coding on languages that will come in handy during your career. Then you can build upon these highly used codes through self-exploration.

We typically see what’s known as a higher-level language being used as an introduction to coding. These languages are more human readable but are also slower and more memory intensive. Formal education will usually teach one lower-level language to assist you in real-world scenarios. These languages are closer to machine language than human language. But the benefit is that lower-level languages run faster and are more efficient computational resources. Also, formal education might teach a prototyping language to help you create the initial proof of concept plans for a design. The prototyping languages are pseudocode. This means that they’re highly readable, but not true computer code which can be compiled into a usable program.

When you learn how to code on your own you have a choice of programming languages. Programming languages are the raw code that is turned into a usable binary that can run on a computer. Every programming language comes with unique benefits.

Overall, the choice of language within a formal setting is usually limited by popularity. Language choice for both higher and lower-level languages are usually dictated by market popularity. Formal education will go with the options that best translate into professional applicability.

However, you can investigate whatever programming languages appeal to you with supplemental self-learning. You can best combine self-learning and formal education by using languages that might be new or too experimental for formal settings. This gives you a wider representation for later use on resumes. It also gives you the option to investigate programming languages and platforms that you just find inherently fun.


The idea of programming for fun brings us to the topic of platforms. Computer platforms intersect with programming languages in two major ways. The first is that we use a specific platform for our development. Examples include Windows, Mac OSX and Linux. There are also obscure but still viable options such as ARM based Linux distributions running on single board computers like the Raspberry Pi.

Formal education focuses on platforms that are commonly used in the business world and this will certainly benefit you during your career. Self-learning can help you learn the most entertaining combination. You may even discover that you love the problem solving involved with rare combinations such as combining a Python development environment running under Linux that’s existing as a part of your tablet’s Android operating system.

You will usually code programs for the same platform that you are doing your development on. But with additional self-learning, you can pick more esoteric targets as well. For example, people have created homebrew development libraries for a wide variety of older game consoles. So, you could work under Linux on a game that would run on a Sega Dreamcast or even Atari 2600.

When learning on your own, you can also explore any of these platforms as a development environment. Programmers typically love to solve puzzles and problems. And using obscure but fun environments can be both a learning experience and a chance to hone your problem-solving skills. You can even pick up skills related to, but not entirely dependent on, programming when exploring these areas. For example, learning how to write server-side code will teach you a lot about networking.

Platform Independent Development

Self-learning may also provide more choice with platform independent options. These are programming languages that focus on a concept known as “write once, run everywhere.” This has been a dream of many for as long as higher-level programming languages have existed.

The basic concept is that coders can write software that will run on any operating system without the need for further modification. This is most easily accomplished using scripting languages. For example, JavaScript is a programming language that runs inside a web browser. The browser’s JavaScript interpreter goes through the JavaScript code and runs it line by line (at least that’s how it started).

Today scripting languages, including JavaScript, typically use something known as a JIT compiler. JIT (or just in time) compilers take a script that could be run through an interpreter and turn it into a native program. This still enables code to be distributed in a “write once run everywhere” manner. Java, as opposed to JavaScript, has also been taking this approach since its beginning. When we write Java code it’s compiled to bytecode. This bytecode is then executed in a similar way to native code.

We also find some programming languages which use a more hybrid approach. For example, Python can use either a standard interpreter model or a JIT compiler. But it can also hook into natively compiled binaries written in other programming languages. This is typically done to combine JIT compiled python code with Windowing or graphical toolkits like QT or SDL.

Initial Projects

Formal coding education puts the initial focus on basic language mechanics before moving on to prototyping. This is important as it creates a strong foundation to build upon. Then, self-learning can give you a little more freedom when deciding how you want to approach the subject. As we’ll soon see, the most important part of the self-learning process is simply honing the right mindset. What part of coding is the best to begin with? A strong case can be made that the best place to start is by reasoning backward from an end goal.

For example, imagine someone who loves gaming. That individual might want to start out by asking how they would make a simple computer game. They could investigate that subject and then reason backward to find a good starting point. Maybe their favorite games might use DirectX. As such they would investigate the languages and platforms that offer the best compatibility with DirectX.

By looking back from that starting point they would also see that there wasn’t much point in focusing too much on things like a user interface’s native component layouts. Since they would be working with game graphics there would be little use for the native window manager’s system. At least in any sense other than just creating a window on which the graphics would be displayed.

This method of learning is often like formal education. But it opens a lot of different paths that one wouldn’t normally get a chance to explore under those conditions. It also helps people develop a skill related to how programmers approach problem solving.

Cultivating the Right Mindset

These initial forays into programming aren’t just about learning how to write code. It will also help you learn how to work on your problem-solving skills. Most programmers have a mindset that allows them to have fun with the process. Where the average person sees tedium, a skilled programmer will see a puzzle ready to be solved.

One of the great things about learning how to code comes from having the chance to develop that mindset. We all have our own idea of fun and how to frame projects in a particular way. As such, this is the one skill that can’t really be taught within formal settings. Instead, we need to learn how to approach programming from an entertaining, problem-solving, and focused perspective on our own. That can, however, happen alongside traditional learning methods.

Final Thoughts

In the end, both methods of learning can help us hone different skills. It’s not so much about picking one as the single solution over the other. Instead, it’s better to look at each as a way of noticing elements the other can’t provide. Self-learning gives greater opportunity for more eclectic options and learning at your own pace. But formal education creates the foundation for continued learning and helps show the world that you have the dedication to go through the process and display official recognition of your skills.

Are you ready to learn how to code? University of Silicon Valley does far more than just introduce you to theory. Our comprehensive Computer Science & Engineering degree programs are taught by entrepreneurs who are in the thick of the industry. You’ll connect with amazing engineering school faculty from major industry players like NASA and Magic Leap. University of Silicon Valley offers you the unique chance to collaborate with other smart people on interdisciplinary, real-world projects—before you even graduate from Cogswell College.

University of Silicon Valley is uniquely poised to offer a meaningful and valuable education for 21st century students. We believe in an education that directly correlates with the work you’ll be doing after you graduate. Interested in learning more? Contact Us today.

Subscribe to the Newsletter