The book “The ideal programmer. How to become a software development professional »

    imageAll programmers who succeed in the world of software development have one common attribute: they care most about the quality of the software they create. This is the basis for them. Because they are professionals. In this book, legendary expert Robert Martin (better known in the community as "Uncle Bob"), author of the best-selling book Clean Code, talks about what it means to be a professional programmer, describing development methods, tools, and approaches. "Perfect software." The book is full of practical advice regarding 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 rightly so! Professionalism is something that is so desperately lacking in our profession. I am also a programmer. I have been programming for 42 years and have seen a lot during this time. I was fired. I was extolled to heaven. I was the leader of the group, the boss, the ordinary employee and even the executive director. I worked with outstanding programmers, and I worked with slugs2. I have been 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 mediocre freeloaders, and I worked with highly qualified professionals.

    On its pages I will try to determine what it is to be a professional programmer. I will describe the attributes and signs that, in my opinion, are inherent in true professionals. How do I know what these attributes and attributes are? Because I learned all this from my own bitter experience. 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 firm called ASC to hire me as a part-time programmer. (Yes, my father knows how. Once before my eyes, he stood in the way of an accelerating car, raised his hand and ordered: “Stand!” The car stopped. It’s hard for my dad to refuse.) I was hired, put into a room where everyone was kept manuals for IBM computers, and forced to write in them descriptions of updates for several years. It was then that I first saw the phrase: "The page intentionally left blank."

    After a couple of days of updating the manuals, my boss suggested I write a simple program on Easycoder. His request aroused my enthusiasm, because before that I had not written a single program for a real computer. However, I quickly skimmed through several Autocoder books and had a rough idea of ​​where to start. My program was supposed to read tapes and change the identifiers of those tapes. The values ​​of the new identifiers began with 1 and increased by 1 for each subsequent record. Records with updated identifiers should be written to a new tape.

    The boss showed me a shelf on which lay a lot of stacks of red and blue punch cards. Imagine you bought 50 decks
    playing cards - 25 red and 25 blue, and then put these decks on top of each other. So these piles looked like. They alternated cards of red and blue; each "deck", consisting of approximately 200 cards, contained the source code of the library of routines. 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 pile of punch cards.

    My program was written on software forms - large rectangular sheets of paper, divided into 25 rows and 80 columns. Each line corresponded to one card. The program was written in capital letters on the form. The last 6 columns of each row recorded its number. The numbers usually increased in increments of 10 so that later new cards could be inserted into the stack. Forms were provided 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 print the input characters on paper, but encoded them, punching holes in punch cards. The next day, the operators returned my program via internal mail. A small stack of punched cards was wrapped in forms and tied with an elastic band. I looked at punch cards for typing errors. It feels good. I put the library deck at the end of my stack of programs and carried it up to the operators.

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

    I opened the listing and saw that the program did not compile. The error messages in the listing were too complicated for me to understand, so I took them to my boss. He looked at the listing, muttered something to himself, made some notes, took the deck and ordered him to follow. He went to the camera room, sat down at a free punch, fixed all the cards with errors and added a couple more cards. He whipped up the essence of what was happening, but everything flashed in an instant. He took the new deck to the machine room, knocked on the door, said some “magic words” to the operator, and then went into the computer room. The operator installed magnetic tapes on the drives and loaded the deck while we watched. Ribbons spun, the printer rattled, and that was it. The program has earned. The next day, the boss thanked me for the help, and my work on this was completed. Obviously, ASC felt that she had no time to babysit 17-year-old newcomers.

    However, my connection with ASC did not end there. A few months later, I got a permanent job on the evening shift at ASC for
    printer maintenance. These printers printed all sorts of rubbish from images stored on tape. I had to fill up the printers with paper in a timely manner, put in tapes with images, remove jammed paper, and generally make sure that the machines worked properly. All this happened in 1970. I could not afford to go to college, but she, I confess, did not particularly attract me. The war in Vietnam was not over yet, and the campuses were restless. I continued to study books on COBOL, Fortran, PL / 1, PDP-8 and assembler for IBM 360. I intended to get by without studying and get into real programming as quickly as possible.

    A year later, I achieved this goal - I was promoted to a full-time programmer in ASC. My two friends, Richard and Tim, who were also
    19 years old, worked with three other programmers on a real-time accounting system for a freight company. We worked on the Varian 620i, simple mini-computers similar in architecture to the PDP-8, except that they had 16-bit words and two registers. Programming was done in assembler.

    We wrote every line of code in this system. Yes, without exaggeration each. We wrote an operating system,
    interrupt handlers , I / O drivers, a file system for disks, an overlay loading system, and even a dynamic linker
    call forwarding - not to mention the application code. We wrote all this in 8 months, working 70–80 hours a week to comply with incredibly tight deadlines. Then I received $ 7200 a year.

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

    Everything happened suddenly, and the breakup was not friendly. The fact is that after all the work and the successful completion of the system, the company gave us an increase of only 2%. We felt cheated. Some of us found work elsewhere and simply applied. Unfortunately, I chose a different, far from the best way. My friend and I broke into the director’s office and quit along with a fair amount of scandal. It gave us emotional satisfaction - about a day.

    The next day, I realized that I had no job. I was 19 years old, I was unemployed without a diploma. I passed interviews on several vacancies from the field of programming, but they failed. For the next four months, I worked in a lawn mower repair shop owned by my half-brother. Unfortunately, the repairman did not work out of me, and in the end I had to leave. I got depressed.

    I stayed up until three in the morning, eating pizza and watching old horror films on the black and white TV of my parents. Gradually, nightmares began to seep from the screen into my life. I lay in bed until one in the afternoon, because I did not want to see another dull day. I enrolled in mathematical analysis courses at a regional college and failed the exam. My life was flying downhill. My mother talked to me and explained that you shouldn’t live like that and that I was an idiot when I quit without finding a new job - and even with a scandal and a couple with a friend. She said that it was impossible to quit without a new job, and this 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 the insult." Nineteen-year-olds are not inclined to admit their mistakes, and I was no exception. Nevertheless, circumstances prevailed over pride. I ended up calling my boss. And it worked! He willingly accepted me for $ 6,800 a year, and I willingly accepted his offer.

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

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

    So treat this book as a catalog of my fallacies, a confession to my sins, and a collection of tips to help you avoid my mistakes.

    You can familiarize yourself with the book in more detail on the publisher's website.
    Contents
    Excerpt

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

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

    + The reader receives a free e-book (pdf and epub) by Sergey Tarasov “Defragmentation of the brain. Software Engineering Inside "

    Also popular now: