📜 ⬆️ ⬇️

The book "The Perfect Programmer. How to become a software development professional?

image All programmers who succeed in the software development world are distinguished by one common feature: they care most about the quality of the software they create. This is the basis for them. Because they are professionals in their field. In this book, legendary expert Robert Martin (better known in the community as “Uncle Bob”), the author of the best-selling book “Clean Code”, talks about what it means to “be a professional programmer”, describing the methods, tools and approaches for developing “Perfect software”. The book is full of practical advice on all aspects of programming: from project evaluation and writing code to refactoring and testing. This book is more than a description of the methods; it is about a professional approach to the development process.

Why are you interested in this book? Probably because you are a programmer, and you are interested in the concept of professionalism. And right! Professionalism is something that is so desperately lacking in our profession. I am also a programmer. I have been programming for 42 years and during that time I have seen a lot. I got fired. I was praised to the skies. I was a team leader, a boss, an ordinary worker, and even an executive director. I worked with outstanding programmers, and I worked with slugs2. I was developing both the most advanced embedded software / hardware systems and corporate payroll systems. I programmed in COBOL, FORTRAN, BAL, PDP-8, PDP-11, C, C ++, Java, Ruby, Smalltalk and many other languages. I worked with incompetent freeloaders, and I worked with highly qualified professionals. It is the last classification this book is devoted to.

On its pages I will try to determine what it is - to be a professional programmer. I will describe those attributes and attributes that, in my opinion, are inherent in real professionals. How do I know what attributes and attributes are? Because I learned all this the hard way. You see, when I entered my first job as a programmer, no one would have thought of calling me a professional.

That was in 1969. I was then 17 years old. My father convinced a local company called ASC to hire me as a part-time programmer. (Yes, my father knows how. Once before my eyes, he got in the way of a speeding car, raised his hand and ordered: “Stand!” The car stopped. It’s hard for me to refuse my dad.) I was hired, put in a room where everything guides to IBM computers, and made them write down descriptions of updates over several years. It was then that I first saw the phrase: "The page is intentionally left blank."
')
After a couple of days of updating the manuals, my boss suggested that I write a simple program on Easycoder. His request aroused my stormy enthusiasm, because before that I had not written a single program for a real computer. However, I skimmed through a few books on Autocoder and had an idea of ​​where to start. My program had to read tapes and change the identifiers of these tapes. The values ​​of new identifiers started from 1 and increased by 1 for each subsequent entry. Records with updated identifiers should be recorded on a new tape.

The chief showed me a shelf, on which lay many piles of red and blue punched cards. Imagine you bought 50 decks
playing cards - 25 red and 25 blue, and then put these decks on each other. It looked like these piles. They alternated cards of red and blue; Each “deck” of approximately 200 maps contained the source code of the subroutine library. Programmers simply removed the top "deck" from the pile (making sure that they took only red or only blue cards) and put it at the end of their stack of punched cards.

My program was written on software forms - large rectangular sheets of paper, divided into 25 lines and 80 columns. Each line corresponded to one card. The program was written on the form in capital letters. In the last 6 columns of each line its number was recorded. The numbers usually increased in increments of 10, so that new cards could be inserted into the pile later. Forms were transferred to data preparation operators. The company employed several dozen women who took forms from a large box and “stuffed” them on keyboard punchers. These machines were very similar to typewriters, but they did not type the entered characters on paper, but encoded them by punching holes in punch cards. The next day, the operators returned my program via internal mail. A small stack of punch cards was wrapped in forms and tied with a rubber band. I looked for typing errors on punch cards. It feels good. I put the library deck at the end of my stack of programs and brought it up to the operators.

Computers were installed in the computer room behind closed doors, in a room with an adjustable microclimate and a raised floor (for laying cables). I knocked on the door, the stern operator took my deck and put it in another box. My program will run when it reaches the queue. The next day I received my deck back. She was wrapped in a listing and tied with a rubber band. (Yes, in those days we used a lot of rubber bands!).

I opened the listing and saw that the program failed to compile. Error messages in the listing turned out to be too complicated for my understanding, so I referred them to my boss. He looked through the listing, muttered something to himself, made some notes, took a deck and ordered to follow him. He went to the camera room, sat down at a free puncher, corrected all the cards with errors and added a couple more cards. He hastily explained the essence of what is happening, but everything flashed in an instant. He took the new deck to the computer room, knocked on the door, said some "magic words" to the operator, and then went into the computer room. The operator installed the magnetic tapes on the drives and loaded the deck while we were watching. The ribbons wrapped around, the printer went jittery - and that was it. The program has earned. The next day, the boss thanked me for the help, and my work ended there. Obviously, ASC decided that it had no time to babysit with 17-year-old newcomers.

However, my connection with the ASC is not over. After a few months, I got a full-time job during the evening shift at ASC on
maintenance of printers. These printers printed any nonsense from the images stored on the tape. I had to timely fill the printers with paper, put ribbons with the images, remove the jammed paper and generally make sure that the machines worked normally. All this happened in 1970. I could not afford college, but she, I confess, was not particularly attracted. The Vietnam War is not over yet, and the campuses were hectic. I continued to study books on COBOL, Fortran, PL / 1, PDP-8 and assembler for the IBM 360. I intended to go without studying and to do real programming as soon as possible.

A year later, I achieved this goal - I was promoted to a full-time programmer at ASC. I'm with two friends, Richard and Tim, who are also
was 19 years old, worked together with three other programmers on a real-time accounting system for a freight transport company. We worked on the Varian 620i — simple mini-computers with PDP-8-like architecture, apart from the fact that they had 16-bit words and two registers. Programming was carried out in assembler.

We wrote every line of code in this system. Yes, without exaggeration each. We wrote the operating system, handlers
interruptions, I / O drivers, disk file system, overlay loading system, and even linker with dynamic
redirection - not to mention the application code. We wrote all of this in 8 months, working 70–80 hours a week to meet incredibly tight deadlines. Then I received $ 7,200 a year.

The system was completed on time. And then we quit.

It all happened suddenly, and the parting was not friendly. The fact is that after all the work and successful delivery of the system, the company gave us an increase of only 2%. We felt deceived. Some of us found work elsewhere and simply applied. Unfortunately, I chose another, not the best way. My friend and I broke into the director's office and left with a fair scandal. It gave us emotional satisfaction - about a day.

The next day I realized that I did not have a job. I was 19 years old, I was unemployed without a diploma. I passed interviews for several vacancies from the programming area, but they were unsuccessful. For the next four months, I worked in a lawn mower workshop owned by my stepbrother. Unfortunately, the repairman did not leave me, and in the end I had to leave. I was depressed.

I stayed up until three in the morning, eating pizza and watching old horror movies on my parents' black and white TV. Gradually, nightmares began to seep from the screen into my life. I lay in bed until one o'clock in the afternoon, because I didn’t want to see another sad day. I enrolled in a math analysis course at a regional college and failed an exam. My life flew down the slope. My mother talked to me and explained that it was impossible to live this way and that I was an idiot when I quit my job without finding a new job for myself - and even with a scandal and a couple with a friend. She said that she couldn’t retire without having a new job, and it should be done calmly, soberly and alone. She said that I should call the old boss and ask for the old place - in her words, “swallow a grudge.” Nineteen-year-olds are not inclined to admit their mistakes, and I was no exception. Nevertheless, circumstances prevailed over pride. In the end, I called my boss. And it worked! He willingly accepted me at $ 6,800 a year, and I willingly accepted his offer.

For the next year and a half, I worked at the old place, paying attention to every little thing and trying to become as valuable a worker as possible. My reward was the increase and increase. Everything was going well. When I left this company, we remained on good terms, and I was already offered the best job.

Probably, you thought that I had learned the lesson and became a professional? Nothing like this. This was only the first of many lessons that I still had to learn. In the future, I was fired from one job for a schedule disrupted by carelessness and almost fired from another for the accidental disclosure of confidential information. I took on risky projects and dumped them without asking for help, which I knew was necessary for me. I zealously defended my technical solutions, even if they contradicted the needs of customers. I recruited a completely unskilled person who became a heavy burden for my employer. And worst of all, because of my organizational mistakes, two other people were fired.

So treat this book as a catalog of my delusions, confessions in my transgressions, and a collection of tips that will help you avoid my mistakes.

More information about the book can be found on the publisher's website.
Table of contents
Excerpt

For Habrozhiteley a 25% discount on the coupon - The ideal programmer .

Upon payment of a paper book, we send e-mails of books to the e-mail, when buying an e-book, all available versions are sent to users.

+ The reader receives an e-book (pdf and epub) by Sergey Tarasov “Defragmentation of the brain. Soft building from the inside

Source: https://habr.com/ru/post/270195/


All Articles