Programmers
Today is workday, and I decided to write a little bit about a profession that has been misrepresented in recent times. I’m a professional programmer, software developer, system analyst, software architect, but always a programmer. When I was studying, the term programmer had very little prestige. It was normally used with the connotation of someone who lacked instruction or did not have a higher education and only did what they were told to do. At that time, system analysts were kings, and they only designed systems. The programmer was responsible for small pieces of code. Database, screens, flows, everything was handed over to the programmer, who sometimes was seen as just a translator of the project into code.
Times changed, and now computers are everywhere. And an important change also occurred in the IT profession: a flattening of positions. Today, the term software developer encompasses both programmers and system analysts under one term: that person who resolves everything about the software. This flattening has happened many times before; just remember when we used to have typists, programmers, designers, system analysts, etc.
What does a developer do? He analyzes problems and chooses between different solutions. Many times he needs to go in search of new knowledge, always focusing on solving the problem in the best way possible. A developer also has moral duties regarding the code they develop, about the purpose of systems, and also about the security of their clients’ data. I like the term guardian of information. It’s not an exaggeration to say that the world would stop without programmers.
A programmer is also the guardian of information in a system
Given the importance of code in modern times, developers (programmers) are usually well-paid. The values paid are proportional to responsibility and level of knowledge of the professional, multiplied by rarity or difficulty of finding professionals with the same qualifications. With globalization, developers have become the target of a global talent hunt. It’s not uncommon for friends or colleagues to leave the country to develop software abroad or work in Brazil and earn dollars or Euros! A great career for those who enjoy developing software.
The Internet and all the knowledge we share today are also agents of change. Everyone can program, and I personally believe that programming should be a subject taught to everyone, like math or Portuguese. Today it’s very easy to start programming. The number of books, courses, videos, and discussion groups is enormous. If you have access to materials in other languages, the amount is even greater. But there’s a certain confusion between getting knowledge easily and having the knowledge or knowing how to use it. Sites like Stack Overflow have answers to everything. However, professional programmers can’t limit themselves to just copying answers. Many responses are not found because the person doesn’t have the technical level to formulate a search on Google! I don’t have anything against researching solutions online; it’s part of modern times and our profession is to solve problems. What worries me is when code is copied and used without any understanding. Remember, as a professional, you’re responsible for what you put in the system you’re developing. You need to understand the solution before incorporating it.
Due to the abundance of study materials, a confusion between amateurs and professionals has been installed. The phenomenon of gurus who promise employment as programmers after short training is also happening. Disdain for formal education is also in fashion now; going to college is old-fashioned. Guided by ambition to earn money quickly as a programmer, adventurers are daily entering the profession, creating false junior programmers. A junior programmer is an inexperienced programmer who has already studied many techniques. No company will hire a junior without being able to solve simple problems or even basic logical problems. What many forget is that we need to maintain a production flow during software development, assembling solutions from various problems into a coherent system. It’s not just programming; the code needs to work when put in the solution. The manipulated data needs to be stored correctly, both in terms of form and security. The solution must meet usability requirements and performance standards. And the most difficult part: all this in a reliable way and with controlled costs. Not to mention issues like reusability and maintainability of generated code!
Programming computers remains a profession that requires study and dedication. It doesn’t matter if you have 5 years of college; if you don’t approach training as professional development, you won’t be very useful. I always recommend those who can attend college or university to do so. A formal course gives structure and presents a coherent program of study. Not everyone can study on their own without a plan; it’s easy to see people studying for months but without direction. Programming goes beyond programming languages.
Programming is hard work. It’s a profession where you need to constantly study. There are no shortcuts; it requires effort. Where do you start? Start programming! Choose a language, it doesn’t matter which one. Use a book or follow a course, but study. Finish the course, read the whole book, and make exercises. Don’t limit yourself to just one programming language; learn several. But also study databases, networks, how the Internet works (especially web systems), security, techniques, tools, and algorithms. When you feel ready, start writing small projects.
A programmer must constantly learn and practice.
There has also been a change in mindset about how to develop software. With the proliferation of agile methods since the early 2000s, we see fewer large projects; that is, having a plan before implementing software. Agile methods don’t preach complete absence of documentation or project planning, but are applied this way by opportunism and often ignorance. Also with agile methods and web systems, we’ve seen that dividing to conquer is a winning strategy. A negative effect of this mindset is that problems can be simplified to the point of becoming trivial. You need a table in the database: bam! created. A new screen: done. In many cases, the Scrum Master without training or studies in software development takes on leadership in creating the software (with the help of the Product Owner). The programmer or developer ends up in second place. There is even an effort to ignore the competence of the professional, insisting on taking any task from the top of the list without considering if the person is the most suitable for that implementation in the team. The idea is that knowledge shouldn’t be held by one person, but if you’re not doing anything important and can be replaced by anyone else on the team, you’re not very important either! A balance that professionals today must make daily. All this without mentioning the need to understand the business and the problem being solved.
Programming is a profession that requires continuous study and training.
The eternal question of the programmer’s level is not so clear-cut. Junior, Pleno (senior)? When can someone be considered a programmer? These questions are not easy in many professions, but given the few barriers to entry into the world of programming, these divisions vary greatly from one company to another. A junior programmer (in my opinion) already knows programming techniques and is able to write small systems, such as a database with screens. He has notions of how the web works (fundamental for front-end developers) and understands how computers work at a high level. The pleno programmer already has experience in several years and has security in developing larger and more complex solutions. And the senior? The senior programmer dominates the art, chooses tools to solve problems, thinks about the business, about optimization, software architecture. How many years are needed to pass from one stage to another? It’s just a question of competence, not time served.
A programmer needs to study hundreds of hours before being considered junior. Study is not complete without hundreds of hours of practice, solving problems and programming.
One of the few things that hasn’t changed in the profession is the constant need to learn new concepts, techniques, languages, and ways of working. I always say, if you don’t like reading and studying, don’t enter the world of computer programming; it will be suffering. Learn several programming languages, and don’t forget to study English too. Greetings to fellow programmers and code scrubbers. Our profession is strong and has opportunities for all.