The present age is the age of technology. In this age you cannot really imagine even a moment without programming. Let's look at an example. The machine or device on which you are reading this piece — it has been made possible by programming. Otherwise the hardware alone could do nothing: it would sit quietly for ever and no work would get done. Computer Science and Engineering (CSE) or Software Engineering — in every one of them programming is used. These departments are essentially inoperable without programming.
Programming is perhaps one of the easiest subjects in the world. For although it belongs to engineering, it is possible to learn programming without any formal education at all. Because it is a matter of skill, you do not even need a certificate. Can you program? That is enough. You do not need a certificate to prove yourself, nor any high CGPA.
I gave a little encouragement at the start: programming is the easiest subject; it needs no academic study and no high CGPA. But if it is so easy, why does not everyone do it? In fact programming is a creative subject, and a creative subject is not really for everyone — it is for the person who has a keen interest in it. And it all depends on practice. So it is not the case that everyone will suddenly learn programming because it is an easy subject. Do it only if the desire is strong. For a painter, for instance, drawing is a very easy thing for two reasons: first, they have a passion for it, and second, they have practised it over a long period.

Programming languages
The question is: if it takes so much practice, how is it easy? In fact programming itself is easy. Its basic syntax, or whatever you call it, anyone can learn easily. But applying it is not easy. To give an example: teach a child the ABCD and will they be able to write a book in English today? Never mind today — they will not manage it in several months either. Programming is like that. Learning the ABCD and practising, you will one day be able to make sentences. Then one day you will write paragraphs, and one day you will write essays.
Anyway, let me say one thing now. There is a saying that becoming the best at something takes ten years (not all day — a little every day). That applies to programming too. Spend roughly that much time and you too will succeed, although it does not really take that long.
Introduction
This article is mainly for non-CSE students. CSE students learn these things anyway, though first-year computer science students may benefit. I first got into programming when I was in class eight (in 2013), so my whole education in it was self-taught — I did not learn it at any institution. That is why I will try to show here how it is possible to learn on your own. Alongside explaining things, I will try to say how to do it, where to learn it and where to practise. I will try to give an A2Z guideline here. And I have not come to teach programming; I am trying to give a guideline on how to do what. Students of computer science and engineering will already know these things.
So let's begin.
What is programming?
Programming, put plainly, is making programs. Now, what is a program? Those events we go to — do we have to organise those? Event management? The matter is not quite like that, but the core of it is much the same. Just as, to run an event well, a person plans and then executes accordingly to put the event on, so in programming too you plan, arrange things according to that plan, and execute it by writing code.
Suppose you have to build a program (a website) where everyone can come in and order some products. Then you go into your admin panel, look at the orders and send the products to the buyer's address. You will do this by programming. First you will make a plan of the steps you will go through. Then you will write the program according to those steps. There will be detailed writing on this ahead.
Who is programming for?
- Programming is essentially for people who love logic, because you spend all day with logic of the kind “if this happens, show this, otherwise show that”. So the better you understand logic, the more successful you will be in programming. And the logic of programming is mathematical logic. So if someone dislikes mathematics, I do not think programming will be of use to them or that they will be able to put it to use; after a few days they will leave in frustration. To learn programming it is certainly better to be a lover of mathematics ❤️
- Another important quality of programmers is analytical ability. There is no place for rote learning in programming. You do not even have to memorise anything to learn programming: with long practice it comes to you of itself. Analytical ability is very necessary here. If you do not have it, or if you depend on memorising, it has to be said that programming is not for you.
- Programmers must have problem-solving skill. Programming means solving problems. Problems of many kinds will come, and solving them will be your only purpose.
- No patience? Then please do not come this way; your time will be wasted for nothing. Why is patience needed? Let me not say that now. Start learning programming and you will understand it of yourself.
Let's put the skills above together and look at how a problem is solved. Suppose you are given a problem to solve: you have to build the user login system of a website. Now how will you solve it?
First you will take a username and password from an HTML form. You will send that to a particular location using the POST method. Then, with PHP or another language, you will first take the information received from the POST method and put it in a variable. Then you will match that against the information in the database. If it matches you will create the cookie and session data; otherwise you will return an error.
That was a very simple example, for ease of understanding. Look — to solve this problem you certainly need your logic, your analytical ability and your problem-solving skill!

Algorithms
Read more: The Boundary of the Universe and the Creator
What is an algorithm?
So, what is an algorithm? And why do we have to know it? Have a little patience. Everything will be explained.
For those who understand as little as I do, let me put it simply. An algorithm, in plain terms, is the steps for solving a problem. That is, how you will complete the task is done through this algorithm. Suppose everyone at home has gone out and left you behind. There is rice but no curry. You know how it is — the easiest solution is to fry an egg. Anyway, let's make an algorithm for frying an egg. The steps are:
- Start
- Fetch the egg
- Break the egg
- Chop onion and chilli
- Mix the chopped onion, chilli and salt into the egg
- Put oil in whatever you are frying it in
- Fry
- End
Excellent! You have made a fine algorithm. Congratulations. This is how you will solve any problem easily, step by step. That is what an algorithm does. Anyway, since I do not know the rules of frying an egg very well, I am not responsible if any accident happens while frying by my algorithm — I am telling you now.
Why do you have to learn algorithms?
All right, I understand what an algorithm is. But what is it for?
You may well think: I have fried eggs all these years without an algorithm, so it works without one. In fact you will understand its importance when you build big programs. You do not really need an algorithm to write a program that adds 2 and 2. The real trouble comes when you go to build large programs. Anyway, I will write a separate article on algorithms, so you can manage without knowing much more for now. Let me speak about the rest of the subject.
What is a programming language?
A programming language is really the language for writing programs. Good heavens! What kind of talk is this — can a program speak? Where did it get a language?
Never mind, there is nothing to be alarmed about. The program will not actually speak. We will speak to the machine through the programming language. Look — how many thousands of languages do we use in this world just to speak to people? In the same way, to speak to a machine you need to know a programming language. Otherwise, go now and tell your phone or computer, “Go and fry me an egg,” and you will see it sitting there in silence — because it does not understand your language.
Those of a more thoughtful turn will now say I have got it wrong, because robots and artificial intelligence (AI) do listen. Well, that is a different matter. In fact they do not understand everything either. They have certain algorithms fixed in them, on the basis of which they work. In general a machine is never capable of understanding our language.
What should I start programming with?
Everyone's common question. In fact you can start with any of them. But everyone says to start with C, and there is a reason for that. C is essentially the language closest to the machine. It is also useful for building application software. That is why you will see that the system software is made with C: on one side C keeps in touch with the machine, and on the other it keeps in touch with application software.
My case was different, though. I learned Java first. Since my target was building Android apps, Java was the best option. Java's biggest competitor now is Python. And of course there are C++ and C# too.
If anyone wants to work with data science or artificial intelligence, I would tell them to go to Python. In other cases I would put Java ahead. It goes without saying that Java runs on more devices than anything else in the world, so learning Java means catching hold of an enormous community.
If anyone is interested in web programming, there are two good options for them. One is PHP; the other is ASP or ASP.NET. Of these, PHP belongs to the Linux server and ASP to the Windows server. Between the two, Linux's PHP is the more popular. Our beloved website Facebook uses PHP too. And PHP is quite easy. Not only PHP — every language of web programming is comparatively easy to learn.
You may ask: why Linux rather than Windows? Everyone runs Windows on their computer. In fact how great a thing Linux is cannot be conveyed like this. When it comes to services, Windows is nothing beside Linux. And Linux is very secure — no cause to worry about viruses. But the reason Linux is used for websites in most cases is that Linux's uptime is very good: it can give service continuously over a long period, which Windows cannot. Anyway, I will discuss these in detail in a Linux article, insha'Allah.
So, for web programming I would tell you to learn PHP. And alongside it, learn JavaScript (JS). The interesting thing is that JavaScript can be run on the server side too. How much JavaScript will make your website attractive hardly needs saying. Without JavaScript a website will be entirely plain.
So much for what to start with. Now let me talk about another common topic.
Read more: University of Dhaka Review
If I learn one programming language, can I learn another?
Yes, certainly. Learn one programming language with effort and you can learn the others very easily. The interesting thing is that all the languages are really much the same. You will find while, for and do-while loops everywhere. Everywhere you will create functions and variables. It is all the same, just presented differently! So you have to learn any one of them well. Then in a short time you will be able to learn another programming language.
Where should I learn programming?
In fact I would never tell you to go to a training centre. Why a training centre when there is the internet! Search on Google and you will find a thousand places. There is plenty of opportunity to learn in Bengali now. When I was learning there was no website for learning in Bengali — that was a long time ago — and I did not understand English that well either, so I had to work very hard. Now you can do it easily. There are even many apps for learning now, and you get the convenience of practising easily.
But let me suggest one remarkable website for you. Give it a year from now; everything will happen, insha'Allah. Link: www.w3schools.com I learned most of it from here. And if you search in Bengali you will find plenty too.
An introduction to the programming languages
Now I will mainly talk about some programming languages I have worked with. There will be some discussion of other languages alongside.

The C++ programming language
The C, C++ and C# programming languages
For starting programming there is no alternative to C. Everyone's first steps are taken there. The C series is on closer terms with the machine, so if you want to build system software or work in that sector, you should certainly focus on the C series. And the C series is powerful enough. To get the basic idea of programming, start with C. Then learn C++ or C#. Since I did not go this way, there is no scope for me to give more of an idea than that.

The Java programming language
The Java programming language
The one I find greatest is Java. Java's biggest competitor now is Python. If you look at Google Trends you will see Python steadily moving ahead. Anyway, I will discuss the reason under Python. Java came to hold back C++, and it certainly succeeded in that. Java was also the first to give a full taste of object-oriented programming (OOP). Now you may wonder what that is. You will learn it while learning programming — no trouble.
The reason Java is great is that Java is platform independent. So Java is unique for every device in the world. Learning Java once means you can catch hold of an enormous community. Mobile or PC, it is all in your grasp; you can work on every device. It goes without saying that the greatest number of devices in the world are in Java's hands. You will remember the wonderful games we played on Java phones as children! Passing out of that age into the Android age, our companion was Java again. Most Android apps are made with Java, although Google is trying to advance Kotlin. Even so, Java's popularity does not look likely to fall.
I went towards Java mainly to build Android apps. So if you give time to Java you can capture the market of Android users. That said, quality apps do not usually come out of our country — most apps are of the ‘become a doctor at home in 30 days' type. If you want to build Android apps, it is best to use Android Studio, though you can use Eclipse if you prefer. Both are IDEs (Integrated Development Environments)।
Read more: Marine Fisheries – Subject Review

The Python programming language
The Python programming language
The trend at present is Python. The reason for this craze is machine learning and artificial intelligence (AI). You know how it is — the world is moving forward. Everyone wants everything automated. They want robots that think like people, and that is artificial intelligence.
Python is very useful for this work, which is why demand for Python in the robotics sector is enormous. Python is also very popular for data science, because the present age is the age of information technology. So data is the most essential thing. Data is such a thing that having it in your hands can make you the most important person in the world. So if anyone wants to work in these sectors, I would advise them to learn Python.
If anyone wants to work in the web sector, Python is a very good opportunity for them. Python can easily be used on websites large and small, where languages like Java and C are not used on small websites, or there is no scope to. Let me tell you an amusing thing. Programmers' greatest trouble is putting the semicolon (;) at the end of the line. The funny part is that Python has no semicolons at all!

The PHP programming language
The PHP programming language
If we speak of the most powerful language for web work, I would name PHP. The name PHP came from Personal Home Page (PHP). When PHP was made, the powerful language of the time was ASP, so nobody imagined while making PHP that it would defeat ASP. Not only that — it turned out that PHP conquered the whole web world! Later, because of PHP's many achievements, it is no longer called by that ordinary name; it is called PHP: Hypertext Preprocessor. The reason for the name Hypertext Preprocessor is that PHP's library is compiled in advance, so we do not have to go to the trouble of compiling, which saves a great deal of time.
PHP is essentially used for procedural programming. But for large projects or enterprise-level work there is also scope to use object-oriented programming in PHP. PHP is easy and plain enough. Another feature of PHP is that it is loosely typed, because you do not have to write the data type — which is quite convenient. My own first steps in programming were taken with PHP. And PHP runs on the Linux web server. It is so popular that a website like Facebook was built with PHP (using several other languages as well).
Programmer versus software engineer
Many people think that once they have learned programming they have become a software engineer. In fact it is not like that. Look — to be a programmer you only need to be able to program. But software engineering is a vast thing. It is a matter of engineering, and there is no engineer without mathematics. To be a programmer you do not have to learn calculus. Study engineering (and indeed other science subjects) and they will make you take a pile of engineering courses including calculus, and it is those that create the difference between a programmer and a software engineer.
Yes, if you wish you can take a master's degree in software engineering in future and become a software engineer. But if someone can learn the extra subjects of software engineering alongside programming, they too can join a tech giant such as Google, Microsoft or Facebook as a software engineer — because they will always look at the skill, not the certificate.

Program source code
Competitive programming versus software development
This is a common question. For those who do not know, let me explain the matter first.
Competitive programming: programming for competitions, in other words. You take part in various contests and practise regularly for them.
Software development: you build software.
Which is more advantageous? Going towards software development is good for a career, because you will build a good number of pieces of software yourself. That will be a considerable advantage when applying for a job anywhere. And the chance to do something of your own will always be there.
To become a competitive programmer, on the other hand, you have to practise a great deal and solve many problems. Although at first sight going into the software development sector looks more profitable than competitive programming, that is a mistaken idea. Being involved in competitive programming means you will have solved an enormous number of problems, and you will do well in various international contests. Most importantly, through it you can reach boss level in programming — and someone who can reach boss level does not need to think about anything else. The interesting thing is that competitive programming counts for a great deal if you want a job in a place like Google or Facebook. So even though it takes much more time, stick with it.
Learning programming
There is plenty of opportunity on the internet for learning programming. One search on Google is enough to find it! Even so, here is a list of the 5 best websites for learning programming free:
Besides these, many Android apps are now available on the Play Store. You can learn from those too. And of course there are books for learning programming.
Programming contests and practice
To do well in programming there is no alternative to contests, because they give a lot of practice. Since programming is like mathematics, the more you solve the better you will do. That is the rule.
Let me first discuss the international contests. The name of the world's largest programming contest is ACM-ICPC or the International Collegiate Programming Contest (ICPC). Many will have heard of it. You have to take part through your university.
There is also the International Olympiad in Informatics, an international contest on technology. Alongside these, various universities in the country arrange programming contests. You can take part in those in teams of 2 to 3 from a university. There are many more opportunities; Google will find them all.
There is plenty of scope to practise programming and compete online. I have given the names of the websites below. Google them and you will find out.
A career in programming
In fact I do not feel like talking about a career in programming now. One big reason is the current craze for freelancing. I am tired of seeing advertisements of the ‘earn thousands of taka sitting at home' kind. If you go into programming with that aim, I would say: friend, drop it. You will earn more money doing other work in less time. And if you have the skill, Facebook and Google will come calling for you. You know that every year many people from Bangladesh get jobs at Facebook, Google and Microsoft. Let me discuss a few possibilities.
- In fact if you know programming there is plenty of work in every direction, web or app. You can even build an app or two yourself and put them on the Google Play Store. There is a great deal of work on the various marketplaces, where you can work as a freelancer.
- The chance to work at a tech giant like Facebook or Google. There are also many software companies in the country, and there is opportunity there too, though the state of Bangladesh's software industry is not that good.
- Working as a data scientist. It is better to study applied mathematics or statistics for this, though it is not compulsory — because, as I have said before, the skill is what counts. A little while ago someone from BUTEX joined data science after studying textile engineering.
- A huge opportunity for work in robotics and artificial intelligence. In a few decades the world will come to depend on robots and artificial intelligence, so this is a very good opportunity now to build yourself up.
- You can build a software company of your own. For those who want to go into business, or simply to be entrepreneurs, the software sector is a very good opportunity. Just take a licence from the government and get to work.
There may be more opportunities beyond these. In fact there is no end to the opportunities. Learn programming out of love for it. For a career, for money, you will not really get very far. And the present age is the age of information technology, so the doors of possibility for work in this sector are opening and will keep opening.
Final words
This piece was much longer. A lot of information had to be cut to shorten it. And some questions — “How long will it take me to learn? Will I be able to?” — have not been answered, because there is no fixed answer to them. Anyway, I hope you have liked the piece and that it will be of at least a little use to you. In fact there is a great deal to write about programming; write it all and the day would end. I have written as briefly as I could. If you have any questions, say so in the comments. Thank you all.
Visit our science community: Shikkha Web Science Club
