Many people ask this question :
How can I start programming, what language should I learn, what are the prerequisites, and what is the best resources to learn programming from?
In this article, I will try to answer these questions and help anyone who wants to start programming.
What is programming (an overview)?
To understand the concept, let’s take this example, let’s say you have a coffee shop and every day you have 100 orders, and you need to calculate and generate daily, weekly, and monthly reports of these orders.
Let’s say that this task (managing your orders) is a problem that you need a solution.
You may think of writing down all orders and the collecting theme each month and saving them into an excel file and so on.
Yes, this is a solution, but it not maybe the perfect one.
Another solution is to buy a software that solves and manages all you coffee shop problems.
Yes, A software! When we say software, we are talking about programmed computer or mobile application that serves multiple tasks.
So as a conclusion, programming is the act of solving a particular problem by writing your application.
How can I start programming?
After this small introduction lets now navigate to the main topic. From where I start programming?
To answer this question, you need to ask your self firstly, why I want to learn programming? What is my aim from learning programming? What type of applications I want to develop.
The answers to these questions are significant so, you decide where to start your programming journey.
To help you and clarify the issue, Ask your self, do I want to develop websites? Desktop applications? Mobile? Games?or maybe cross-platform applications.
cross-platform means applications that are programmed to work on different kind of devices (IOS, Android, Windows)
then you have to choose between multiple server-side languages like asp.net and php.
Web development mainly consists of two parts:
- Front-end : developing the client side website views ( HTML,CSS,JS)
- Back-end: writing the server side (ASP, PHP) and database (Microsoft SQL Server, MySQL, PostgreSQL..)
Or if you are willing to develop desktop applications then if your target platform is windows only, then.NET(C#, VB.net) will be the best choice.
While if you are targeting Linux or cross-platform operating systems (windows, mac, Linux..), then you should consider learning c++, java, or python.
And if you consider developing mobile applications so here you have also multiple options:
- Native apps: applications that are fully compatible, dedicated and interpreted by mobile devices, in this case, you have to use java for android and swift or objective c for IOS.
- Hybrid apps: HTML-CSS-JS based applications which can be boxed into a mobile application to work on different platforms without having to write an application to each system. It’s somehow like developing a responsive web app with specific frameworks like ionic and angular with Cordova.
- Semi-native: this kind of application developed under XAMARIN is a type of application that allows you to write somehow native apps using the c# code and reuse it to have cross-platform applications.
Still, we have game programming, this also a broad field of programming, but in general nowadays, Unity3d is being used as the primary software for developing games with the help of C# programming language.
I am trying my best to sum up all topics, in general, to make you have a full understanding of different programming fields so you can choose the right place to start from.
Also, You may be targeting to be data analyst or AI programmer so python, R and such languages will be a must to learn.
In my opinion, you can start with C# programming language which allows you to program different types of applications (desktop, mobile, games, server-side web).
Beside C# try to learn HTML,CSS,JS. it is not difficult to learn, and it helps you in developing front-end websites and mobile applications.
And nowadays python is very popular and famous to consider learning the basics since it helps in different vital fields like data analysis which is one of the primary areas in computer science now.
But as I told you if you have a clear target in your mind, please refer to that field that you are aiming to, and learn the related tools and programming languages that help you in that area.
On the internet, you can find many resources and many are free to start with like :
- Khan Academy