Here is an unpretentious article that agrees with more and more articles on the web facing preconceptions of developers (especially in Europe). You will see that this job is much more than writing code.
Firstly, Information Technology is cross-disciplinary so there are no limits in areas developers can work in. In my case, I worked on different projects of various sectors including automotive, energy, telephony or healthcare. Of course, every time you have to adapt, gain an understanding of the functional side and the business logic, both are essential in the success of a project. The ability to work in different sectors is a great freedom, you can meet people with different backgrounds, it is very rewarding. Also, you can build your own opinion on each sector and focus on areas that interest you the most. It is not given to all professions.
Global vision of a project
Developers are usually taking part to the development phase of an IT project, but they must understand all the components and steps involved. Actually, the implementation represents a very small part in the life of an IT project. Of course, there is no need to be a project expert, but just have some notions of all the activities revolving around. Indeed, there are many steps between the coming up of an idea and selling the solution, and it does not stop there.
Autonomy & Communication
It is true that developers stand most of their time in front of a screen and rarely attend meetings, autonomy is a quality often required. However, communication and collaboration are not left out, it is essential to have good interpersonal skills: be able to work in a team, understand and discuss with the customer or the team leader. An IT project is rarely achieved alone so good communication is paramount. There are many collaborative tools available in the toolbox of a developer.
No doubt that programming is a technical job and that developers will spend most of their time writing lines of code. But, writing series of instructions with statements like “if”, “else” is an outdated view. Code is thought and follows specific software architecture. Programming is object, functional, architectures are modular, use design patterns and the model must be well thought as early as possible. The software architecture can quickly become complex on large projects. That is why writing a maintainable code is critical and components must be written to evolve easily.
Developers have also some testing responsibilities. They are not end users, but writing tests is part of their job (we talk about technical tests: unit and integration). Tests ensure that the delivered product functionality meet the needs and that the existing one is still working (non-regression). Developers have also the knowledge and mastery of several code quality metrics. And they are aware of the technical debt and manage to decrease it by refactoring the code when necessary.
Developers know many tools that help them to achieve their daily tasks, it can be application tools (IDE, versioning and bugtracking software, continuous integration platform, code analyzers, etc.) or purely technical tools (frameworks, utilities libraries, databases, etc.). It is very rare to start a project from scratch, existing tools are used as much as possible. The choice of tools is also something that has been carefully considered.
Developers must learn, learn and always learn to avoid being technically outdated. It is vital to stay updated, this can be done by following training on new technologies, reading blogs, testing new tools. But don’t go in the extreme and it is not because you does not spend your free time to go to Devoxx, listen to the Java Posse podcast or take courses on Coursera that you are not a passionate developer or that you are a bad developer. Also, note that some developers decide to specialize on old programming languages, need for updates is quite limited because the technology is very little to change. It is a career choice.
Close to the machine
Programming is a technical activity, but it is usually done with high-level programming languages. Developers must have notions of what is happening under the hood, ask questions about the frameworks they are using, the underlying concepts, understand the mechanisms of compilation, memory management, performance, understand the information storage, the management of floating-point numbers, etc. Although they don’t need to master all of these concepts, but having some knowledge will help them a lot.
Developer is a job quite complex and multifaceted. Beyond that, I think that attitudes in France and in other European countries are evolving in the right direction. And developer is becoming a profession increasingly valued. Finally, it will be difficult not to do a comparison with what is happening overseas. In the United States, developers are highly considered and some of them are among the richest people on the planet… Something to think about!
Let’s wrap-up this article with some entertainment.