How to become a self-taught developer/programmer?

Hara Kavin
12 min readNov 7, 2020

Of course, the title sounds like a click-bait. There’s probably hundreds if not thousands of articles claiming to teach yourself how to code, but most of them, if not all of them teach you how to code rather than how to develop. Yes, there’s a difference. There’s a difference between coders and developers (or programmers).

A coder is someone who writes code. Anyone who writes code that does something they want is a coder. It can be anything from a simple script or a program.

A developer, on the other hand, is someone who doesn’t just write code but also develop fully functioning software.

Photo by Fotis Fotopoulos on Unsplash

There’s plenty of tutorials online teaching you how to code. All you need to know is what you exactly need and voila, you can find a tutorial teaching you exactly that. Anyone can learn to code, especially now, but not many can actually develop. Does that mean you can’t learn to be a developer by using online resources? No, you still can. You just need some motivation to learn things on your own. No one source can teach you everything you need to know (not even this article).

So let’s start with some of the basic steps that have had me going for years. I learned coding at a young age out of curiosity. Since then I have branched out and learned different languages, frameworks, and have worked on different fields developing various applications and even games. Honestly, there wasn’t much that made me continue to learn other than my own curiosity.

In this article, I am going to share some tips on how I got started, and the secret was not by joining online courses or taking university classes or even reading hundreds of pages (yes, I have tried that), it was simple. The secret was to, well, start. It was just to start doing it.

Start

There’s a saying I like,

Jump off the cliff and build your wings on the way down.
-Ray Bradbury

Photo by Austin Neill on Unsplash

Sounds foolish, I know. Honestly, at first, glance that sounds like one of the most ignorant things I have heard someone say, but once you stop taking the meaning literally, which is to well, jump off an actual cliff and then try to build wings, you can actually see it starting to make sense.

So now the question on your mind would be, “How can just starting help? Where do I start? What do I even do? What language am I gonna code in?” and so on. The simple answer I am gonna give you is, “Start first, worry later” (This advice is bad, but from what I know it works the best with learning how to develop).

Idea

Photo by Mark Fletcher-Brown on Unsplash

So the first thing you are gonna need is well an idea, an end product, something that you can think of and that you can make. It can be something as simple as a calculator or even a complex project if you have are dedicated enough to complete it. Choose something that already exists, since this will be your first time developing and you want to be able to do it.

Language

The next step is to pick a language you want to code it in. It depends on the idea you picked, so you will have to do some research on which language you can implement it on. You will have to look at things such as where do you want to run the final software (Windows, Mac, Android), and do you want a GUI (Graphical User Interface), or is it just a CLI (Command Line Interface). Once you have answered the question, you will know which language you would want to learn.

Photo by Markus Spiske on Unsplash

My recommendation for first time coders will be the following:

  • Java
  • C#/Visual Basic
  • JavaScript
  • PHP

Of course, there are much easier languages to learn like Python, but once you get used to coding easily, it might be hard to change since you will find the other languages much harder. There are also harder languages to learn like C++, but I think it’s better to pick one that moderate and easy enough to learn. I first coded using a .NET language to develop a Windows Forms Application, and this is something I’d recommend as well. Since you can develop applications with graphic interfaces pretty easily, and as you see your results, it will keep you motivated to learn more.

Now the next question on your mind, one that I have seen countless times on Quora, Reddit, and other sites is, “Should I learn language X? Is language X worth learning? Is language X easy to learn?” or something along these lines. I’ve got a surprise for you, it does not matter. For now, let’s just focus on developing, you should worry about mastering a single language at some point, but not now.

IDE or just any good ol’ text editor

Well, you have picked your language. That’s good but you are not done yet. You want to be able to code somewhere so you need to pick an IDE or a Text Editor. This depends on which language you picked. My recommendation would be Visual Studio Code. Just install the extensions for your languages on it and you are done.

Photo by Safar Safarov on Unsplash

If you picked a language that has designing options (Like JavaFX for Java or Windows Forms for .NET), you will be better off using an IDE that supports the designing function.

Setup

Once you have done that, you will have to set up the environment. Depending on the language you picked, and the type of project you wanted to develop this could differ. If you just picked a simple CLI project then all you will have to do is install the compiler (if it’s a compiled language like Java) or the interpreter (if it’s interpreted language like Python).

Let’s say you chose to learn JavaScript using NodeJS. All you have to do is Google, “How to install NodeJS on Windows/Mac” and you will be done. If you chose PHP, then you can either install standalone PHP-CLI or you can install XAMPP (free and open-source cross-platform web server solution stack package) or WAMP to create websites.

You don’t need to worry about the difference between both the languages, but if you are curious all you need to know is that a compiled language is where the source code is expressed in the instructions of the target machine once its compiled. An interpreted language is where the source code isn’t directly executed by a target machine and is instead executed by a program that interprets the code. Some languages can be both compiled and interpreted.

Once you have the environment setup, it’s time to see if everything is working. All you have to do is run a sample program and see if it gives the expected output. For CLI projects just try printing “Hello World”. Well done, you have become a coder now if it didn’t don’t worry, Google the error and the answer will be waiting for you in Stack Overflow (Yeah the memes weren’t a joke).

Photo by KOBU Agency on Unsplash

Research

The next thing you are going to do is somewhat boring, but well its something that’s needed if you really want to do this. You are going to Google and find somewhat similar projects that people have done in the language you have chosen. See their codes if they have shared it, just look around, look at Stack Overflow, read the question, the answers and even the comments. You didn’t understand any of it? Did you? Thought so, cause I wouldn’t have either at that point. If you did understand, it probably means you have some knowledge in coding, you could just skip the next step but you probably shouldn’t.

Give Up

Okay, maybe not give up learning to develop, since that’s not the point of this article, but since you have no experience developing, or maybe even coding in any language, let’s slow down a bit, and find a way to get some experience. The simple solution that always works for me when I want to learn a new framework or language is to simply just find an open-source project in that language and tweak it a little bit here and there.

So where do you find a project in your language? Again, just Google. There are tons of open-source projects out there, in many different languages. All you have to do is pick, download it and open it in the IDE or Code Editor you just setup. Just make sure to pick an easy/simple project. How do you know it’s easy? It won’t have tons of files with tons of codes. Here are some of my recommendations for CLI projects in various languages:

(All I did was simply Google “Language X Calculator Console”. It is easy to find your own. If you want to find GUI apps, that will also be easy.)

This is where you have to let your creativity do its work. If you think you don’t have any, you do. It’s not an art kind of creativity, but it’s still there. After all, coding is a form of art.

Just open the code, look at it. Try to understand what’s going on there. This is the most important part of this whole tutorial. Understanding. Yes, the code will look foreign, it will scary, you will have no idea what’s going on, but once you have cooled down a little, and stop beating yourself over not understanding it. Just read it line by line. Nearly all programming languages follow the same pattern, and I will try to describe them below. Though if you did follow my steps, and set up a Hello World Program you probably won’t need it (It’s okay, I am like that too).

There are a few different types of programming language, mainly procedural programming and object-oriented. Some languages can be both, like Python and PHP. Java, C# is object-oriented languages.
In most cases, the first few lines of an object-oriented language would be the import statements. These statements are there to include required files or libraries, so you can call the code from them. Next, right after the import statements, you will have your Class declaration (if it is a Class OOP language). You don’t need to know much of it for now but do read about it later.

The class will contain functions, and often time in languages like Java, C# one of the functions will be where the program starts execution (public static void main(String[] args) in Java) (PHP is still an exception).

Inside this function is where all of your logic will be. From printing to the console, to calling other functions. Functions themselves just contain logic code that needs to be executed. They can input any number of arguments and can optionally return one argument of a specified type. So for example, if you wanted to add two numbers, you can have a function called add that accepts two variables, n1 and n2, and then returns the sum of both the numbers.

Once you understand how things work, its time to change up the program. If you chose to do a calculator project, instead of only being able to take 2 inputs a time, try to make the calculator to take 3 inputs. (All the examples I gave above only take two number inputs). If you chose some other project, try and change small things in it.

Photo by Ben White on Unsplash

“What’s the point?”, this may be the next question on your mind. The point is, at least the one I believe in, is that hands-on learning experience such as this can teach you more than reading a book, or following an online course. By trying to solve a problem yourself, you will remember the solution for a long time, and even if you forget it you will always remember how to find the solution. End of the day that’s what important, especially in the technology industry where everything is rapidly evolving.

Now after this, you should have a rough idea of how it works and how the language itself works. Now it is not everything you need to know, but it is a start. You can now either continue with the next step or find other projects that you can tweak a little to learn more. I suggest the latter if you are interested in learning, maybe find another 2–3 projects that are each more complex than the previous ones.

Develop

Well this is what you have been waiting for, it might have taken you at least a few days to get here, maybe even a month but it is worth it. Now it’s time for you to start programming your idea (If you already forgot what it was, it’s okay, pick a new one), and make it come to life.

Again, there are many different ways to go about it depending on the language you chose. My main advice is that do not use any frameworks. Reinvent the wheel if you have to. Write code from scratch. The end product should run completely on your own codes. This task may seem daunting, and even a waste of time since the popular advice for developers is to never reinvent the wheel but since you are only learning it is okay to reinvent the wheel. That way when the time comes for you to utilize the wheel (the framework), you will know exactly how it works.

So it’s time to get going and start developing. It doesn’t matter if it takes you one week or one month, all you need to do is not give up. If you need any help, there’s more than enough help available online.

What’s Next?

Photo by Cate Bligh on Unsplash

Now, this last step might’ve taken you anywhere from a few days to maybe even a few months, depending on its complexity. You might’ve not even finished the project, but it’s okay. As long as you tried and gave it your best shot, it’s good.

Now, what’s next depends on you, if you want to, you can continue developing different projects. This will give you more experience with the language and it will also add on to your portfolio. This is also a great time to do courses specific to the language or solve problems on sites like LeetCode or HackerRank.

Once you are comfortable enough with the language and you are able to develop projects on it, the next step is simple. Repeat. Repeat this whole thing, but with another language, but this time you’ll do it faster.
Remember developing isn’t about mastering one language, but it is about being able to learn multiple languages and code in all of them. There’s no shame in looking at the documentation of the languages while coding either. I have been coding in C# for nearly a decade now and I still look at the documentation for some functions at times.

This step is by far the most crucial one. Once you have the ability to program in multiple languages and switch between them easily, you have become a developer. Technology is constantly evolving, and the only way you can stay up to date is if you evolve with it, and to do that you need to be able to learn different languages/frameworks on your own.

If you have just read through this article and have not yet started developing or don’t know where to start, don’t worry. Over the next few weeks, I will be publishing tutorials to start developing in a few different languages. My goal is to teach programming from scratch and to end up with a functional end product for each of the languages.

--

--