Developer Deadly Sins

Briefly about what is most worrying in the modern world of development and why you need to prove, learn, test and not be lazy.

I’m a developer, but I haven’t written the code for a long time

Nichrome you are not a developer.

If you think that writing code is an optional requirement for a good developer, then please get off this planet. There are many opportunities to live on, but stop writing code. You can go to management, you can migrate to personnel management, you can go up to a high position, or you can just go to the monastery. But in any of these situations, you cease to be a developer if you no longer write code.

Why? First: the code is not a bicycle, if you don’t practice, you forget it. Secondly: the developers are very upset when "some kind of manager" is trying to impersonate their own (yes, in general, this is true for any profession). Thirdly: it is harmful to the CSV; if you moved to another area / industry, then grow your skill with charisma again, and do not drag references to past successes (see the last sin).

From the examples.

  1. I was once at an interview in the American office. There, at one of the stages, a gentleman who introduced himself as CEO started asking fierce game about Ruby by piece of paper (in the sense of prepared templates in Google). To questions about whether he writes the code itself and why such indecency to ask applicants, he tactfully turned the conversation around and asked to focus on tasks.
  2. There is a familiar resource manager who works as a psychologist at his leisure. So until now, this gentleman has been writing the code in his spare time and sometimes can greatly surprise the candidate with curious knowledge in a seemingly uncharacteristic area. It seems not to be a programmer, but everyone takes it for their own.

I ran tests, why test the application with my hands?

Relying only on test results (even if among them the integration end-to-end dummies) is a serious sin. At least once during the development of any feature you need to take and use your hands to click through the entire cycle of this feature. Firstly, you will be a little better versed in the platform and how the user sees it, and not how it is arranged inside. And secondly, you follow a new scenario and common sense and you may find something obvious to you, but invisible to autotests. In any case, autotests are an addition to manual verification by the developer, not a replacement for it.

Immediately I will say about the features. I'm not talking about full manual testing by the developer, there are specially trained QA guys for this. I’m talking about the need to run a local project and the minimum check for any changes there. And then in autotests, on the maiden, stage, preprod and prod.

So yes, there should be holivars about the complexity of many projects and their "inability" to run locally. Personally, I do not believe in such epic projects. But in laziness and greed - I believe. Therefore, let's briefly go over the possible problems of launching a project locally.

  1. A small independent project - there are no obstacles to patriots!
  2. Many external integrations. So you have sandboxes for each of them. Either you have stubs or local emulators of external services. Or you have big problems that will be fired soon.
  3. A lot of microservices. The bottom line is the previous paragraph. The only difference is that the possibilities for local emulation are expanding. For example, a set of dockers with real microservices instead of stubs.
  4. A lot of data is needed for the project to work. But very rarely you need the entire multi-terabyte data array for development. And if you still need it, then several instances for developers are made for this. For example, 2-3 huge instances per team of 10-15 developers. So yes, it is not very convenient and expensive for business, but otherwise you will pay even more for development on production, which will be carried out regardless of the top managers' wishes.
  5. A monstrous monolith that works on a specific iron and only in the correct phase of the moon. If so, then most likely you are in a bloody enterprise and common sense does not work there.

I already know enough and can no longer study

In short: "he who does not develop, he degrades."

In theoretical sciences, there are cases when you can find out the base and stop at it. Everything is more or less stable, proven and unchanging there. Physical laws, fortunately, do not change every five-year period. So, if you do not go to the cutting edge of science, you can live and even work. Here, for example, are the integrals along the contour: Feynman solved them in Los Alamos after the Second World War and now they are solved by approximately the same analytical methods.

But with development and programming it will not work like that. A single invariable divine programming language has not yet been found (the concept from the Avalanche is interesting, but not yet open). The speed of technology change from a couple of decades in the case of operating systems and databases to a couple of months in the case of JavaScript. And if you do not develop, then in a year or two you can pretty much lose the level, and in the five-year period you just get zero.
In order not to be very holistic about the speed of technology change, I will give a couple of examples. There is a book of Kernigan and Soldering 1992 bottling. Using it, you can learn Unix quite well and not be very surprised at the changes that happened 15 years later. You can take Tom Kite's book about Oracle 8, which was released around 2000 and not be very surprised at the differences that occurred in version 18c. But any book on JS five years ago can be safely put to kindling.

I'm cool enough and can not prove it

In my opinion, this is the most difficult and most common.

Unfortunately or fortunately, you need to prove your skills, professional suitability and sanity all your life. When you stop doing this, you may find that you are either retired, or you have dementia, or you just burned out. In any case, you should see a specialist.

The frequency of evidence is different. In the case of friends and relatives, proof is not necessary so often. And in the case of strangers - on a regular basis and in full. Places where proof is needed are very diverse: at interviews, at conferences, to new colleagues, new lovers ... even in the store, if the purchase is a bit more complicated than a stool.

If you think that a story about your experience without confirmation of skills is normal and sufficient, then visit a neighboring planet. As for me, this is called fopping and arrogance.

Regarding examples in this area, it’s tight, because most of them are negative and, I think, the reader himself will remember something suitable from his experience. And with the positive, it’s even more difficult, since they are not noticed and simply result in a constructive dialogue. Therefore, I trust the reader’s life experience and, I hope, everyone will set a worthy example.


All Articles