Life as a programmer
"Life as... " is a blog series where we dive into professionals’ everyday work life and get to learn more about their profession.In this part of "Life as..." we meet Tomas Berggren a Chief Operating Officer at weteachit Sweden AB.
Tomas started to learn about programming when he was in the seventh grade. Between 1998 and 2015, Tomas worked as an IT consultant and since 2012 he is a certified teacher in ten subjects in elementary school and high school, programming being one of them. In addition to this, Tomas is a certified Scrum master and certified education manager in higher vocational education.
Tomas founded weteachit two years ago. At the time, he was employed at an education company and decided to start his own company. Today, his company offers tailored solutions for basically anyone that has an educational need within IT. Tomas believes that it’s not just about offering an education, it’s about helping companies become more profitable.
In this blog post, Tomas will describe different programming languages, their history and own experiences from his career.
Programming languages - why is there so many different programming languages?
The earliest programming languages were established after the World War II. Since then, the languages have developed which could be one of the reasons to why there are so many different languages today. The picture above demonstrates an overview over different programming languages. We will look more into C, C++, Python, C#, and Java.
I don’t think it’s interesting to see which programming language is the most popular. Instead, what is interesting is to look at the changes over time. There are big changes between year 1965-2019. About the same languages that were popular 20-30 years ago, are still popular today.
What is popular right now, does not have to be popular in ten years. As a consultant you must be open, flexible, and ready to learn multiple programming languages. One company can use one language and another company can use a different language. However, if you are a good programmer, you usually don’t experience any problems when switching programs.
Another explanation to why there are so many different languages is competition. For example, the competition between Java and Microsoft. Java created a programming language and then Microsoft wanted to create a language of their own to be able to compete with Java.
It’s important to remember that different programming languages are useful for different things. Above is a picture showing different icons that symbolize that programming languages can be used for either web, mobile applications, desktop applications or embedded systems. Python works for most things but is not compatible with mobile applications and C++ is not compatible with web but works great with the others. At first, Python couldn’t be used with embedded systems. However, Phyton developed their hardware and later it worked with embedded system as well.
Front-end, back-end and full stack developer
Companies sometimes ask for front-end developers, back-end developers, and full stack developers. When someone is using these words, they’re talking about web development. Front-end developers are working with what you see on a web reader, such as the layout and the design. HTML and CSS are not really programming languages since they don’t use any advanced algorithms. You can say that HTML creates the structure and CSS describes the appearance, color, size, font etc. If a company need something including a database, they need a back-end developer. The back-end developer uses different programming languages such as PHP, Python, Java, C#. Someone who can handle both front-end and back-end is called a full stack developer.
Programming language C
Next, we will dive into the different programming languages starting with C. The programming language C was the language that set the foundation for numerous other languages. C was created by Dennis Ritchie during 1970. A lot of what you see today is built in C. It’s a powerful language that works on a low level, close to the hardware which means that you can manage input and output in a controlled manner. Although C have existed for about 50 years, it’s not a language that should be ruled out. It is a good foundation to have as a programmer. C is missing one part which is object-oriented programming. This is a programming method where a program can include a series of objects that interact with each other. To fix the lack of object-oriented programming in C, C++ was created.
Programming language C++
Danish Bjarne Stroustrup thought some parts and functions was missing in C. He collaborated with the founders of C and created C++. C++ is therefore actually just an extension of C. The idea was for it to replace C, but that turned out to not be the case. Today both languages co-exist. Many people who work with programming use a hybrid solution where they use a C++ compiler to be able to take advantage of C++, but then take part of the optimized advantage that C have and use parts from there as well. C++ works well if you must do something that demands a lot of computer power such as games or similar.
”C and C++ will surely exist for at least 30, if not 50 years more”
Programming language Python
Python can be seen as an outsider in this context. Python was created during 1980 by Dutch Guido van Rossum. It is therefore a language that has been available for quite some time and during the recent 5-10 years it has gotten a boost. Guido was tired of coding being difficult and that it took so long time. He wanted to make it as simple as possible. It is often said that Python is almost too simple and that you only need one row to get a lot of code. The disadvantage with Python is that it is not very fast, which has its limitations. The name Python has nothing to do with snakes, it’s linked to Monty Python. Guido got a lot of inspiration from the British comedy group from the 1970, which is the reason why there are a lot of implied programming jokes within the Python-world. The development environment that is normally used in other programming language is called IDE but in Python it’s called IDLE because of Eric Idle who is one of the members in Monty Python.
Programming language Java
Java was an attempt from Sun Microsystem to compete with C++. Java have their own virtual machine or computer which you work towards. This makes Java different from other programming languages, where you instead work towards a hardware. This means if you write Java code, that code can easily be transferred between different operating systems without needing to make any changes. Instead, the program where you drive the code adapts to the computer.
Java, at first, tried to create desktop applications. Nowadays, Java have taken a step back and is more popular on the server side. It has become the main language when creating mobile applications even if it’s possible to use other languages as well. Compared to C++, Java have certain limitations. In C++ the work is made on a lower level, you get access to the memory management, and you can do pretty much anything with the computer. It is not quite the same with Java. On the other hand, Java is easier to getting started with but as mentioned before, more difficult to optimize than other languages.
Programming language C#
C# is the exact same thing as Java but developed by a different organization. C# was created by a Danish as well. Anders Hejlsberg created C# in early 2000 together with Microsoft. At first it was tightly connected to Windows and .net. In ads, C# and .net are usually combined.
.net is a framework which makes it possible to use finished functionalities from the Windows environment. Additionally, it is where multiple programming language can talk to each other. Therefore, it’s two parts, where C# is the actual language and .net is an environment which you work in. Microsoft realized that they had limited themselves and today it’s open for usage outside the controlled Windows world as well. For example, today C# and Linux are compatible. C# is like Java: easier to get started with but more difficult to optimize.
PHP was during a long period of time the only language being used on back-end solutions. PHP have encountered both ups and downs. A lot of people say that PHP died 5-10 years ago but then PHP7 was created that got a bit more speed and now recently PHP8 arrived. So, PHP is still alive. PHP is still being developed by volunteers which means there are limited resources when it comes to what can be done and how much time that can be spent on it.
Object-oriented programming, what does it mean?
During the beginning of the 1980, people started to think about how difficult it was to write code and above all, to write code in large programs. Suddenly, an idea emerged. Instead of code being an instruction from start to finish, it should be seen as playing with Lego. You create different parts that will be assembled. This was when object-oriented programming was born, although in 1968 Smalltalk was created, which is an object-oriented programming language. Smalltalk can be seen as one of the keystones today and it was from Smalltalk a lot of other object-oriented languages emerged.
Some years later when C was established, an object was created that in some ways was meant to be similar to the reality. For example, if we are going to create a system where we want to be able to store information about different books at a library. Then, a book is one object and an object have different characteristics, such as title or number of pages. After this, there are a series of methods that an object can use to tell how many pages the book has or its title etc. In addition to this, you can make an object collect/leave information, make calculations etc.
When talking about programming, it’s often talked about using different paradigms. There is a procedure paradigm, an object-oriented paradigm etc. If we take away C from all the languages we have been through, all of them are object-oriented. That has been the norm for a long period of time. If you end up in a situation when your computer has problems getting faster, if you work with different processors for example, some limitations in object-oriented programming have been discovered. All programs which is object-oriented often have a fondness of growing when a lot needs to be included. This means, as soon as I’m going to use an object, I need a definition of the class and all the methods that it can use. So, to be able to create the book I mentioned before, my program might need to be 10 or 100 times bigger than if I did it in a different way.
SQL can be used for databases
Let’s leave the regular programming languages for a while. SQL is often something that comes up when I’m talking with clients. It is a different language that only can be used for databases. All programming languages have different add-ons that makes it possible to connect to databases and write a language from a different code.
This means that regardless of if you have Python, Java, or C, you can use the SQL-database. If you have large data sets, let’s say 100 000 rows of information that needs to be saved, then you need a database. SQL stands for 80-90 percent of the data that is stored today. Even here, there are some variations. The big dragons like Oracle or Microsoft were popular during a long period of time. Nowadays there is MYSQL which is opensource and free that have taken over more and more. It has made it possible even for the people who can’t afford to buy a big server, to use the database.
One more term to know is Git. It is a revision control system that makes it possible to share information. If I have changed something in the system and I want other people to be able to take part of those changes, I send it into the Git system where everyone can take part of it. If there are many people working in the same project, then GIT is a necessity. There are a few other similar systems, but Git probably stands for about 70 percent of the market. Git is a free tool that Linus Torvalds created in the same process when he created Linux, in which other people were involved as well. Knowledge in Git is often seen as necessary and numerous organizations take for granted that you know it.
How do you learn programming?
There are different ways to learn programming. For several people university has been the only way. At university the civil engineer- and college engineer educations is the obvious choice. Today, higher vocational education, where I have worked, is also an option. You don’t have time to make it as far in higher vocational education as in university, since it’s based on a shorter period of time. However, a lot of people enrolled in higher vocational education has had a career beforehand. They have often spent a lot of their spare time programming and maybe with some hard work they can be competitors with the college engineers. In recent years, bootcamps have been established. This means that you take part in a 12-week intensive course. Once you have finished the course, you can go from being a civil engineer in machine technology to being a programmer. Lastly, there are a lot of people that are self-taught. Those people should not be underestimated. If you count the hours they put on programming, there might be someone that is more experienced than they who have gone to an actual education.
The need of competent people in IT and Data on the labour market
If there were unlimited civil engineers that studied data on the labour market, we would, according to me, be in the best situation. However, that is not the case. Around 70 000 people are needed in data and IT. That has been the situation for the last 15-20 years and the numbers remain the same today. Looking at an EU-perspective, there is one million people needed. I think we need to think in new ways. You must look at what the person knows today, and most importantly, look at the learning potential the person has. If you look at the bootcamp solutions, to be able to go from zero to employable in 12 weeks for example. This shows that it does not take that much time to obtain a good foundation.
I used to work at a company where everyone was very open and hired people with potential. There were all kinds of education and people who were self-taught. At the company, a super group was created since everyone complemented each other in a good team. Of course, you must have the client’s demand in mind. Today companies search for software testers with two years’ experience and so on. It could be the case that these people don’t exist on the labour market and at that time it’s a good idea to ask yourself: “what do we want the person to know?”. A company could hire someone newly graduated, and it turns out to be a successful employment.
I have been involved in employment processes and interviews. In this process I have asked a question that is good to think about: “tell me about a leisure project you have worked with?”. This shows if there is an interest beyond the normal work hours. If they have a project of that kind and talk about it, it shows that it is something they have worked with and in many cases spent many hours on. If the person applying for the position, have written a master thesis you can also ask questions related to this.
No-code/low-code is, according to me, not “real” programming. Instead, you learn to configurate what already exists. Large systems like SAP, work in that way. They use a ready-made system, and then have to do settings according to their own demands. Generally, a lot of things have gone from doing it by yourself to use something ready-made. This, of course, is because writing code takes time and time is money. In the beginning of my career, there was no ready-made solutions. You had to make everything from scratch. If you were lucky, there was a card to work with. After this you had to write in the code that would solve everything. Today there are cards with pretty much finished code and frameworks. You connect to the internet and the only thing you need to do is press start. This suggests that the development is going in that direction. Wordpress is a good example, that is being used in blogs for example. You don’t need to know code or programming to be able to use Wordpress.
Earlier in my career, I was a teacher in web development. In one course the students first had to create a program from scratch and then do about the same project in Wordpress. Many of the students quickly became frustrated over working in Wordpress, since they felt limited over what they could do. It’s slow and you are controlled over regulations that is not enough for most people. Of course, there is a parallel to be drawn to this. To some things there might be ready-made parts that can be used. Digitalization today means using technology to make things easier or to get things to work together.
How to find jobs within IT and Data
A Society is the consulting company of tomorrow and can help consultants connect with customers who are looking for people in IT and Data. There is a high demand for programmers among our clients. Register an account on the website and you will get a contact person from A Society who will reach out to you and hear what type of assignment you are looking for. You will also get access to all assignments that are advertised in our network. Joining our network is completely free. Good luck!
Read the section about working as an Agile Coach or when Paulina Raymond presented how it is to work as a UX-designer.