Nowadays almost everyone faces the PC and the idea how to use it. And most people see the big search for IT specialists and decide to try it and see how it will go on. But the problem is that they just don’t know from where to start. The idea of this article is to guide people who are trying to enter the programming world. Each section below has key points which you should be able to answer after reading the materials in the section.
How to start?
The „main“ language of the programming world
So, I am writing this post in English for a purpose. This is the language used in the whole programming world. It doesn’t mean that Russian won’t help you in any way. But there is so much information in English that it really doesn’t make sense to study any other language. The code you write would contain English words and even the code in the most popular programming languages is made of English words. So if you hesitate about your knowledge of the English language – start a course or listen to some audiobooks.
What programming will teach you is that you cannot remember so many things at once. Every good programmer was a good Google searcher until it became a habit. Something you don’t have to think about. So, whenever you find yourself stuck in a given situation, give it a good thought for several minutes and then, if you still cannot understand where the problem is, just Google it. Improve your search terms constantly. Don’t search stuff like „My C# program crashes“ but be more specific „return C# crash“ or even better „return int C#“. Learning to search with the correct words is something you will get used to very quickly.
Your own idea
What is the thing you want to make with programming? A website for meeting people? An app to find the nearest bars around you? What is it?
- Remind yourself why you want to start learning to program
- Write your idea on a sheet of paper
- Create 2-3 sketches of some screens you have in mind
- Leave the note next to your laptop so it will be a constant reminder to not check your Facebook
This whole thing is so important. While you learn to program you will have awful challenges like missed „;“ somewhere, 20 times reading 10 lines of code and still not sure why it doesn’t work, fighting the IDE so just the code starts to run and you see it crashing so many times. Don’t worry, all of this is a „normal hell“, we all have been through that, that’s why you need your motivation to be at the highest level. And even then you are still going to loose it after fighting the Debugger for several hours. Be patient, take your time, have breaks, it’s complicated and it takes time. Every ERROR message you see is something you have learned. You will be so happy when your first program compiles and runs successfully that it will give you enough motivation to continue.
How computers work
You have a PC or a laptop but still, you do not understand how they work. You just use it in your daily life. This is a normal thing. You don’t have to know the details about everything you use in your life. But if you want to make your PC understand you, then you have to get a little deeper.
So what you do? Search for „how computers work“ in Google and get a basic sense of how things are happening. How CPU works, what is RAM, what is HDD, how motherboard connects components, what is a GPU, why GPU is more powerful than CPU? Can you see this? These are not just questions, they are search terms which can help you understand the whole idea.
There is also a great series of videos about how computers work from the Harvard University lead be David Malan. A great lecturer! Watch them here.
But there are some cool websites which you can check like HowStuffWorks – How PC’s work, Inside a computer and many YouTube videos – TEDx Inside Your Computer . I think the TEDx video is awesome! All I did was just to enter YouTube and search „how computers work“. You can really get great results.
In this section what is expected from you is:
- Know how computers work
- Know what RAM, HDD, CPU, GPU work
- Know how CPU responds to signals from other devices
- Know why GPU is faster than CPU
Introduction to programming
Now when you have a grasp of how computers work it is time to enter the programming world. It is not such a big deal to be afraid of. Just enter Google and write „Introduction to programming„. You will see enough results which can keep you learning for several years.
But there is one, which I really recommend. It is called Introduction to programming, believe it or not, and it is taught by the Massachusetts Institute of Technology. It is the most prestigious IT university in the whole world. There are 24 video lectures which explain the basics so well, that you will not feel when you have finished the whole course. I wish I had found this earlier.
Free online courses
You can also check the free courses in EDX and Coursera. These are websites which have free lectures which you can join and study. You have small exams and after finishing them you can also get a certificate. Nice, huh?
There are many big books with over 700 pages which you can grab but I would not recommend that way. Books often get outdated very fast and you need several times to read a single page to grasp a simple concept. That’s why I think teaching programming visually helps you learn it faster. Check out videos on YouTube or if you really want to read, dive into the docs of a certain language. This would be a better approach.
Finishing this section, you should know:
- How computer programs get executed
- How to write a simple Python app
- What is a variable, loop, class, object
- How big apps are split into smaller ones
Practice is the best way you will learn to code. So just make up a simple program that is connected in some way with your idea. What kind of an app? A simple calculator or may be a sorting app for a list of products. Just connect it with your idea and don’t be afraid to start coding. One thing what really stopped me from starting was the constant fight between me and the program in which I write the code which is called IDE. I would get tons of errors for forgetting a single „;“ or not sure if the „for“ operator syntax was correct. Don’t quit so easily. Search in Google, build and try again. This is part of building your knowledge. Building your first app is a huge accomplishment so you should really have a party after finishing it!
Something really interesting which you can try is using Django. It is a framework (Check the „Language frameworks/libs“ section here if you want) for building web apps in Python. You should also know HTML but it is so easy to learn. So if you want to build a website in Python, Django is the thing for you!
How PC’s communicate
After playing around and building a very simple app, if you found yourself bored, it is time for some research again. Here is another interesting topic. Do you know what is a server and how server – client communication works? Well, if you don’t, it’s again time for some research. This model of communication is strongly connected with what you want to build because you will surely have a client and a server somewhere. It is the basis of the web so it is something you must know. There are many good YouTube videos and articles about it.
Look how HTTP works. This is how you visit websites and how they work. There are many YouTube videos on the topic.
You should now:
- What is a client
- What is a server
- How client communicates to server
- What is HTTP
Research languages and technologies
Knowing how servers and clients connect will give you a good basis to understand what programming language is used on the server and what is used on the client. Ever wondered how many programming languages are there and which is the right for you? Here is a simple list of the most popular languages for a job. Research how can each of these programming languages be used. For example, in Java you can write both mobile (Android), desktop and web apps. C# is strongly connected with Microsoft and you can use to build desktop, server, and mobile (Windows Phone) apps. Python is used in data science and is very simple to understand. R is used for statistical computing. Research stuff like Xamarin where you can write C# but it can be run on iOS and Android.
There are tutorials for everything so don’t hesitate to search.
In this section you should:
- Which is the most popular programming language at the moment
- Say 3 different languages and their main usages
- Say the advantages/disadvantages of Java/C#
- Is there a language that is only used on servers and not on clients
Choosing a particular object-oriented language – Java/C
To get to this section you must understand all of the sections from above. They will give you a generic overview of how things work in the programming world. Starting to learn Java or C# is a huge step, behind which there should be a good amount of reasons. For me, learning one of those two languages should also be done visually so watch as many videos as you can and try doing everything the lecturers do.
There are some good short tutorials for Java in YouTube. There are free EDX courses too. And some very interesting interactive websites.
You can also find some older tutorial docs for C#. And watching these tutorials from Channel9 is a must!
Don’t forget that the links here are not necessary to be used/watched. You could make your own search and change every single tutorial until you find one that fits you. The web is full of them so just search for „introduction to java“ or „introduction to C#“ and you will surely find something that is good enough for you.
Finishing this section would require you to:
- Know the basics of the language you have chosen
- Make a for loop without making an error
- Use a switch statement without making an error
- Having built a simple app which uses for, if, switch, while and things like lists
- Haveing good understanding of OOP, classes and objects
Focus on classes
Classes are fundamental in languages like C# or Java. If you haven’t grasped the idea yet, maybe you should do a more extensive search. There are some good videos on the topic which can help you build your first classes. While you are using OOP languages you will surely spend most of your time building classes and objects. So understanding OOP is a must! A trial in PluralSight can give you a good idea of how to use OOP in practice or just search for it!
In this section you need to learn:
- What is OOP
- What are the principles behind OOP
- What is a class
- What is an object and how to build one
- How objects communicate
Don’t forget that programming is learned by practice. So don’t stop trying and coding your idea until it comes true. You should really feel comfortable building your own classes, communicating data between objects and building a simple example by just creating 3-4 classes. You can even make a paper template of what classes you should have to make idea happen.
At this point, you should know that writing pure Java code in some files won’t give you any results. You will have to use a framework to build the app you want (you can do manually everything but why not use an already built functionality). And what is the difference between a language and a framework? And between a library and a framework? You can check in Google.
So if you want to build a desktop Java app, a library like Swing may help you. Or if you want to build a web Java app you may want to use Spring.
For a C# web app you may use .NET MVC framework or the Web API one. C# desktop apps are only for Windows and you can use WPF to create them.
So basically, writing simple classes won’t make you application query things from a database or return data to a mobile device. Things are more complicated than this and you need to follow certain conventions and use certain classes other than yours to make things work. Researching what is a framework and what framework can be used in each language should be your primary focus. Again, there are many sources in Google.
What you should get in this section is:
- What is a library
- What is a framework
- What is the difference between them
- What are the frameworks for your chosen language to build server apps
- What are the frameworks for your chosen language to build desktop apps
- Choose a framework to start building your app
Now is the time to implement a simple framework in your app and try to return fake data from your server.
Sooner or later you will need a place where you can store data and get data from it. That’s where databases play their role. Databases are programs which know how to store data and how to fetch one. And because you may want to fetch only certain rows of data and not everything, they provide you with a special language which you can write to query the data. Here is a short video explaining what a database is.
So by searching for databases you should see that there are two types of databases. Relational and nonrelational database. I will leave you to find what is the difference between them. So what database type you should use? It really depends on your case. Currently, I am using MongoDB a lot but people still use relational databases like PSQL. So use what’s most comfortable with you. For me, it is easier to study and use NoSQL databases like MongoDB than SQL ones. I would recommend you following this path.
The last thing you should find out is how to connect your server to your databases. There are many libraries that can help you doing so, you just have to search for them.
- Check something called ORM. Can you tell what will be its usage?
- MongoDB University have great free courses which you can start to learn about how the DB works
There are several specific things you should know about a database in this section:
- What is a database
- What different types of databases there are
- What is the difference between SQL vs NoSQL
- How to install a database program
- How to store and query data in it
- How to connect your server to a database
- How to model database data into classes
- How to use ORM and make classes represent the database
How to stay updated?
I will write another post where I will share my constant sources of information and things that keep me updated. For a person starting in programming, you should really know about Github. It’s a website where people share the code of their projects so everyone can check other people’s code and recommend how to improve it. Search and download other projects. Try them and see how other people code. That’s one of the best ways to understand programming.
If I were to start learning to program today
Well, I think I would love to study programming these days.
- I would surely start a course in Coursera or in EDX and I would watch the lectures from MIT. This will give me a great basis to develop my programming skills. I am so sad that we don’t have the kind of MIT lecturers in our universities. These guys really have the „simple explanation“ built into their minds.
- I would start programming with Python because it looks cool and easy to understand. And after finishing a course and the lectures from MIT, I would start to build an app by using [Django](https://www.djangoproject.com/) or just try to build an app including some complicated mathematical theorem just to see it works.
- Later on, I will catch on with Java in Android so I will start again with Android apps (they are fun, really). They are fun and easy and seeing people downloading them is something which gives you great pleasure.
- I would not dive into C# because it is too connected with Microsoft and not available for all platforms. It is too complicated for beginners.
- I would join MongoDB university. I finished 2 courses last year and I really regret that I hadn’t done this several years ago. The courses are great and you really understand how the DB works. Studying NoSQL database is a lot easier for me than studying SQL database.
- Grabbing some books is the last thing I would do. There are great books out there like Code Complete, Essential Java, Refactoring, Clean Code but they are still for people who have experience in programming. So delaying them a bit is not a bad idea. Gain some traction first and then run over everything 🙂
In a short summary, programming is about keeping a constant interest and never stop searching, learning and trying. It is about building stuff and looking at your code like an author would look at his newly published book. And gaining experience means more reading than writing. „Coding“, which is a word I really hate, can give you the freedom of building different projects in different spheres. You can be building a hospital app one day, bar app the other, banking app etc. So it is a really dynamic and interesting sphere if you are that type of person. So don’t hesitate to try it and stay focused!
For Programmers: Do you remember how you started?
Feel free to share with me what was the thing that sparked your interest into programming. How did you start, what sources did you get through, what would you recommend? Share it in the comments so I can edit this post and add more useful tips for beginners. 🙂