Many of you may ask yourself the question: “What do I need to become a programmer?” And immediately after that follows the answer: “A programming language, of course!” But is the programming language enough?
What it really means to be a programmer?
To be a programmer means to have the ability to find solutions for different problems and tasks by creating mathematical and logical constructions. This ability by itself consists of a few key components: a coding skill, developing your algorithmic thinking, fundamental knowledge in the professional department in which you want to develop – programming language.
The coding skills
To some of you, “coding” at first sight may only mean learning a particular programming language. In reality, in order to be able to code, you need the have some technical skills like:
- Work with variables, loops, conditional statements;
- Using functions, methods and objects;
- Skills for working with arrays, lists, associative arrays and etc.
Exactly the acquirement of this knowledge is what gives you the ability to code. And all the programming languages are just another way of showing these abilities and express them in code.
The algorithmic (also called “engineering thinking“, “mathematical thinking” or “logical thinking“) is another very important trait of a good programmer. What it is? This is the ability to find different mathematical relations in a particular problem and using it as a provider for the information needed to solve that problem. This skill lowers down only to your logical thinking. You can develop that skill by solving different mathematical, physical (not obligatory), but mandatory by solving many programming problems. Why? Because a programming task is just a huge problem, the solution to which consists of understanding the problem and splitting it into smaller problems, finding the correlation between them, and constructing a solution.
If we want to be more exact – you have to solve a minimum of 1000 programming problems a year. This way you will gain experience in problem-solving using mathematical means – something crucial in programming. In the process of developing that skill, the programming language does not matter.
Basic knowledge in the profession
Here we can already tell that the programming language does matter. Why? Different kinds of problems are solved with different technologies (or programming languages). And those technologies follow different mathematical and logical models called “paradigms“. Different programming languages are based on different paradigms. Here are some of them:
programming – this is a programming paradigm, in which the programming
languages are called “statements” that influence a particular program
and its current condition. Shortly, in imperative programming using the code we
write, we give directions to our program for how to operate. The imperative programming is exactly the
opposite of the Declarative programming.
Popular paradigms which are part of the imperative programming are the Object-Oriented-Programming (OOP) and procedural programming.
- OOP – object-oriented-programming. In this paradigm, in the code we write, we differentiate groups, called “classes” and “objects”, which interact with each other. Popular programming languages, which include this paradigm, are: Java, C++ and C#.
- Procedural programming – unlike the OOP, the procedural programming is built on top of the “procedural call”. The procedures (also known as “programs”, “subprograms” and “functions”) represent a sequence of calculated/command steps which are being executed. Each procedure can be called in a given time during the execution of the program, including from other procedures or from itself. The first popular procedural languages appear in the 50’s and some of them are Fortran, ALGOL, COBOL and BASIC. Some of the most popular procedural languages like Pascal and C appear around a decade later.
programming – this is a programming paradigm, which covers the way of
constructing the structure and the elements of a computer program – it
expresses programming logic which has to be executed without affecting the “control flow”. The paradigm
for declarative programming is in the complete opposite of the paradigm for
imperative programming. A popular paradigm based on declarative programming is
the “functional programming”
- Functional programming – this is a programming paradigm built on top of the concept of declarative programming. The output of a given function depends only on the input parameters that it is provided with. The functional programming is suitable for cases, in which working with imperative paradigms would lead to wrong results.
There are many paradigms and they are all different, here I mentioned only the most popular ones. They however are only a part of successfully acquiring computer technology. You should also know:
- Data bases – this is a collection of logically connected data, which is part of a specific area. Each data base should be structured in a specific way. There are many existing applications and frameworks, which combined together, ease the process of acquiring, structuring and maintaining the created data bases.
- Networks – network programming, network protocols and network communication – here we talk about the way computers connect to each other.
But why I mentioned that here the programming language does matter? Because different languages follow different paradigms and are designed for different purposes. You cannot expect a language that was created for WEB Design, to cope with problems, which are solvable by OOP or functional programming, and the opposite is also valid. You have to be able to decide what kind of problems you are going to solve and to choose that programming language in which to invest your time and effort. However, you must first build the fundamental knowledge described above.
We arrived at the question about the programming language. Since we already specified what the different paradigms аre, now we are going to talk about their other aspect – the “level” of each of them. We use the term “level” to describe whether the coding in that language requires closer contact with the hardware. If the language originates from a lower level, that means that you need to define which sections of your memory your program will use and which not. Meaning that apart from the programming, you need to spend time to acquire skills that are needed for optimizing your program. This leads to the need for more lines of code for describing the action you are taking. On the other side, the programming languages which are on a higher level do not require any optimization from your side and the code you need to write is less.
What programming language to choose as my first?
It depends on you. First, you need to be aware of yourself. If you have some specific interest in the IT sector, find the most appropriate language for that. Languages that are not suitable for beginners are those like Swift, Objective, C, and others. Moreover the languages on lower levels like C++, C and not to mention Assembly. They are extremely difficult and it will be hard for you to gain the needed qualification as a beginner.
Where can I improve my knowledge?
The software engineering program in SoftUni will help you acquire all of the needed knowledge and skills that you need to start your career. If you are interested in Web Development with C# or Java, you will need around 2 years to successfully complete the program and become a wealthy Web Developer with those technologies and around one, one and a half years for starting a job.