Once many years ago, being no longer quite a developer and not yet a manager, I read awell-known book. For some reason, the only thing left in my memory is that programmers are the same wayward and independent creatures as those same cats, and they must be grazed accordingly, kept on a long, but still leash. Having recently remembered this metaphor, I decided to look into the original source, and – of course, how could it be otherwise, 10 years have passed since then!! – I found there a lot that was missed or not understood at that distant time, and I wanted to make either a motivator-kicker, or a reminder-chaser, or something else, something that would inspire and motivate. I wrote out the abstracts. And in order to somehow give the appearance of consistency, I grouped them by letters of the alphabet. At the same time I discovered new letters!🙂
(Note: originally I wrote this article, and all other articles prior to 2023, in Russian, so the letter order is not alphabetical; I will let it as is)
Ambition is essential for success. The heart of a programmer and the mind of a leader is an explosive mixture. Lead yourself first in order to lead others. Achieve perfection in everything. Elegance is attainable perfection.
**Lack of initiative of the company.**People who are higher in the power hierarchy tend to be inert in decision-making, as they have less time to analyze the situation and monitor the latest trends in the industry. This is an inevitable price to pay for stability.
Reward should be according to merit, in material or moral form – depending on the circumstances. Justice and frugality are virtues. We praise publicly, and we scold individually.
Bul$#@hit code. There is no such word in the book. Let it not be in your projects either!
Thinking. The need to think is the most difficult responsibility of a manager. Think always, everywhere, in any situation, and in any place. Before making a decision, listen to the other person’s reasoning. Nurture your brain!🙂
Daily visits or calls to developers will help you stay on your toes and move towards your goal in a more coordinated manner. Everyone needs consistency and perseverance.
**F%#$.**There is no such word in this book, it is about how it should be. However, it contains an instructive example about a fired project manager who was unable to deliver the project on time. Even if the subordinate was a slob, the manager is responsible for everything!
**Knowledge.**We read to stay informed, to deepen our knowledge, to become wiser. Diverse thinking brings new original ideas. Let’s learn from those who have walked this path before us and move on!
**Information.**The flow of information rushing past us has increased manifold recently. The challenge is how to turn information into knowledge and action. A cluttered desktop is like cluttered code; a structured system for storing paper and electronic documentation is a necessary means for survival (by the way, is your mailbox empty too ?).
Yoda said: “beware of the dark side,” namely, inappropriate actions. Fear gives rise to these darkest phenomena. Micromanaging has nothing to do with leadership. A disorganized leader also displays a lack of organizational skills coupled with a lack of practical thinking. A disorganized manager allows procrastination, which results in chaos.
**Code.**This is not a monument to the genius of the programmer who created it and not a masterpiece of his work. The code should be as practical and maintainable as possible. Code review will help!
**Leonardo Da Vinci.**He could be an exemplary programmer if he were alive today. The thirst for knowledge combined with intolerance of uncertainty is an explosive mixture. Having received the crookedly described requirements for the product, he would have grabbed the business analyst who brought them with his powerful hands, pushed him onto his plane, flown to the customer, burst into his office, locked himself with both of them in a meeting room for a couple of hours and drawn up I would like a realistic plan, according to which I would write a new Facebook in a year. Whether alone or with a team of thousands, it doesn’t matter, what matters is drive, energy, drive, passion, intelligence, perseverance and systems thinking. And the balance of body and mind, logic and imagination, independent thinking and curiosity.
**Software development methodology.**Everything has long been invented for us; our task is to use it wisely. First, architectural planning and the formation of a list of design constraints. Then, solving problems arising from design constraints. Only then – the design of system components. Redesigning the architecture later is much more difficult than reconstructing individual components. Reading books!
Ineffective leadership. Fear of making decisions, lack of understanding of details, priority given to mediocre loyal employees instead of problematic but truly productive ones. And much more (see Yoda).
A manager’s performance measure is the amount of work accomplished by his team. Behind the external slowness lies the ability to lead the team to the intended goal. Persistence.
**Breeds of programmers.**In my sincere opinion, the division of programmers into common, rare and backyard breeds in the book is clearly overkill. Intrabreed classification is generally going to the wrong steppe. All people are unique, and, despite the presence of proven and even scientifically proven methods, dividing them into groups is evil. Perhaps it’s easier and more effective to draw a 2×2 square with the dimensions “can” and “wants” and forget about one of its cells forever. Fire and don’t hire again.
**Irritants.**Cubicles and square-nested placement are good for call centers, but not for software development. Unfortunately, there is a clear inverse relationship between the degree of stupidity of employees and the amount of office space allocated to each of them. 12 sq. meters for each – the minimum allowable area. Working from home is also not a panacea: you can go wild, so only the most self-organized and responsible people are suitable for it.
**Deadlines.**Timing always matters. We check, clarify, and do not expect that all the problems of the project will be resolved by themselves as the deadline approaches. Users will definitely break off something that is poorly screwed on – we check and double-check.
**Careful project planning.**Most programmers tend to underestimate their development estimates (are they optimists?). Some, on the contrary, overestimate (I wonder what else they do during working hours?). As a result, we see a tendency towards project growth, the emergence of new previously unaccounted-for features, shifting deadlines, and, ultimately, failure. By the way, in the list of reasons for project failures, unsatisfactory planning, and evaluation are in second place (surprise! In the first place is inadequate task setting. Can you imagine bridge builders building a bridge somewhere, somehow, and out of something?).
Diligence. This is the price of a quality product made on time. We design, select technology, make a prototype, document, code, and test. There is no silver bullet – there is only daily work that bears fruit.
**Focusing.**We always focus on the main thing and set priorities. In conditions of constant information noise, we do not get distracted by irritants. You control your email and Skype, not them. More importantly, we focus on the work of your employees. How? We compose, complete and check a weekly list of tasks. Programmers are not telepaths and, alas, usually not fans of Gleb Arkhangelsky.
Wearing black and wearing a ponytail doesn’t necessarily mean being cool. I stop growing my hair!🙂
The price of success is diligence.
**Someone else’s experience.**This is something you really have to learn from. We look at the leaders, and learn to be like them. Jack Welch (GE), Andy Grove (Intel, “aggressively paranoid”), Bill Gates (Microsoft, “obsessive and calculating.” There are hundreds of others in this ranks worthy of emulating their leadership traits.
**Chance.**The last chance for a negligent employee to improve should also be his first chance – there should be no other. If a person objectively does not pass the probationary period, it is better to fire him immediately. The longer a bad programmer works for you, the worse it is – others may become infected with his bad habits.
Sh. This letter has no place in programming.
**Extreme Programming.**In my life, I have never seen cases of using this technique in its classical definition. However, searching in pairs for reasons why something in the code does not work is a very effective way to combat “stupidity”.
**Jung.**It has nothing to do with programming, nor does it have anything to do with this book. Let’s move on to the last letter!🙂
Rage is an unconscious reaction to feelings of powerlessness or failure. Criticism, on the other hand, helps improve productivity and is only annoying if you actually do your best. The main thing is to see the moment of reaching the ceiling of productivity, accumulation of fatigue and not trying to exceed your physical capabilities. Don’t jump over your head.