What every programmer should know about APL

Which technology do I have to master as a software developer?

10 technical skills that every software developer needs

In the past decade, the role of a programmer has diversified significantly. But soft skills or management skills - technical expertise remains the core element of the programming profession. But here the next problem arises, especially for the next generation: What technical skills should every software developer have? We have compiled the ten most important.

more on the subject

Although a degree in computer science is no longer a prerequisite for a career in the software sector and social scientists and humanities scholars, economists and natural scientists are now involved in one way or another in the big IT business, the developers are still at the center of it all. Your code is the coal that fuels the stove and keeps the machinery running.

To be at the heart of the industry, so to speak, is of course exciting. But you have to get there first, and later you have to assert yourself again and again. Inspired by an article by John Sonmez, we have compiled 10 technical skills that should help beginners and advanced users to position themselves advantageously in the world of work.

1. Programming languages ​​and paradigms

A man’s gotta have a code. But in which language is it formulated? And maybe the protection with other languages ​​will help? In his text, Sonmez advises not to be overwhelmed by the multitude of options. Developing a deep understanding of a language makes more sense than just learning as many languages ​​as possible superficially. He therefore recommends young developers to think in advance about what kind of developer they would like to be and to orientate themselves accordingly.

A not uncontroversial opinion. Markus Sprunck, for example, claims exactly the opposite: more is better. He justifies this primarily with regard to the existence of different programming paradigms. Whether object-oriented, procedural, functional or declarative programming - developers should have a language for every paradigm in store to have. It is of course worthwhile to simplify matters by using multi-paradigmatic language. Ultimately, Sprunck, like Sonmez, prefers skillful selection to an overstretched palette of languages. He also recommends creating a personal top 10 programming languages, of which the first three should be studied more intensively and used regularly.

2. Code structure

Just by reading crude strings of characters, the observer sees the end product in mind: What was a matter of course for the deaf Beethoven, of course, does not have such a perfect correspondence in the coding. But you can definitely take the idea to heart. Well-written and sensibly structured code gives the experienced viewer a preview of the finished software. According to Tim Evko, precise planning in advance helps.

But this should not be done through detailed commenting, especially since this is rarely maintained later. Rather, the code has to speak for itself. It should be clear, understandable and concise. A successful code structure already conveys its meaning. This not only proves your skills, but also makes work easier for teammates and any successors. This works best if the code is kept as compact and clean as possible.

3. Architecture and system design

Object-oriented design (OOD) is one of the most popular design paradigms today. Sonmez emphasizes the importance of OOD knowledge, especially because the complexity of large programs can be reduced in this way. In general, system design and architecture have become decisive fields in the IT industry. According to a survey by Computerworld, IT architecture is the most sought-after tech skill this year.

Accordingly, it is also advisable for beginners to master such an integral part of modern software production at least to some extent. Most effectively, applicants train their skills to build architectures and systems in a time and cost-efficient manner, as well as scalable and flexible, incidentally through constant work on projects.

4. Algorithms and data structures

Even if there are now extensive libraries with standard implementations, it makes sense to be familiar with some algorithms. If an individual solution has to be found, it may be enough to quickly write a variation of an algorithm. Otherwise you will break your brain over a problem for which a - possibly more elegant - solution has long been in existence.

The more algorithms a developer knows, the more problems he can solve. The situation is similar with data structures, as this post from Happy Bear Software underscores. If you familiarize yourself with the various data structures, i.e. arrays, linked lists, stacks or queues, you will also better understand how your computer works.

5. Development platforms, frameworks, stacks and tools

We come to the means of production of the developer, his factory buildings, machines and tools. Anyone who wants to work as a programmer must be familiar with them and be able to combine them skillfully. Frameworks, for example, exist for certain platforms and as part of certain stacks with which apps can be developed from start to finish. IT professionals should also have a solid understanding of the tools available for a specific area of ​​software development.

Granted, this point deals with many important issues at once; In addition, it is controversial, for example, what qualifies as a platform at all. But similar to point 1, this is more about making decisions. Because, on the one hand, the following applies: the range is large. On the other hand, it is impossible to master every platform, every framework, every stacks and tools. So a choice has to be made. This should be smart and well thought out.

6. Databases

Developers should at least acquire a rough understanding of databases not only because of the big data and machine learning hype, but also because application data is still stored in databases. There are two types, relational and document databases. At least one should have heard of relational databases and have a rough idea of ​​how they work. How is data queried, inserted, updated or deleted? How are data sets merged? It is important to know about it.

7. Version management

Version management systems have become an indispensable part of modern software production. Since almost all software projects nowadays are handled in teams, developers should be able to work with at least one source control system. Knowing how to check code in and out and how to merge changes with different origins is a presumption these days.

8. Build and deployment systems

Automated build and deployment systems have also become the standard for IT projects. A build system compiles the code and checks that there are no errors. Some of these systems also carry out unit or user tests, subject the code to a quality check and issue reports. A deployment system, on the other hand, delivers the code to a server and / or a test environment. As with databases, you don't have to be an expert here, but you should be able to understand what is going on.

9. Testing and Debugging

The boundary between testing and development is slowly but surely being torn down, but the logics behind these two concepts collide. However, John Sonmez is right when he says:

Quality has really become the responsibility of the entire team — I’d argue that it has always been.

The common testing methods should therefore be learned by beginners at an early stage. This also applies to debugging, an activity that already takes up most of the development effort. Learning efficient debugging methods not only helps me, but also helps colleagues who may be working with my code.

10. Methods

Whether Agile, Waterfall or Rational Unified Process - there are many process models in software production and most teams at least pretend to use one of them. Although you don't have to be intimately familiar with each of the models, it helps to be able to have a say. In other words: at least the idea behind Agile and Co. should be known to developers in order not to be turned away at the door. Better to make it plausible that the methods of a team are already known to you.

Conclusion

Well, a lot has come together now. It would be illusory to assume that every one of the mentioned skills could be learned from now on. But practice makes the software developer, even if it takes a long time. Those who do not allow themselves to be discouraged are rewarded with the privilege of being able to get involved in the productive center of industry.

Our editorial team recommends: