Software ideology

xiaoxiao2021-03-06  131

Software Ideological Gerald Weinberg Interview

in

WEINBERG

Mr.'s book is about to come out, the author is fortunate to interview.

WEINBERG

Mr., with the most famous "of this software industry"

Thinker

"With a close-time communication ...

"Programmer" (hereinafter referred to as "" Cheng "): Mr. Weinberg, I am also one of your readers. Recently, I just read your "program development psychology", it is a good book.

Gerald Weinberg (hereinafter referred to as "GW"): Cheng Zhu Zhu.

Thinking and communication

Program development is a social behavior.

Personalized mail sending systems will make programmers are separated from this communication; and remote tasks implemented through the terminal system enters and exit, will further exacerbate this isolation.

- "Program Development Psychology", Chapter 4

"Cheng": The current programmer, their work environment and the books described in your book have already been judged. Do you think whether the PC and broadband networks now have a negative role in the work of programmers? If the machine is efficient, will it make the programmer lose thinking and exchange time in invisible?

GW: The environment will affect programmers, which depends to depends on programmers. For the best programmers, they can almost make good results in any environment; for the worst programmers, no matter how the environment is blown, they can't help them.

However, despite this, we should do our best to provide a good communication environment and atmosphere for programmers, so as not to die in front of the computer, and ignore the importance of thinking and exchange.

"Cheng": So, what can manage people do to promote thinking and exchange?

GW: I think managers should often force programmers to turn off the computer and force them to do more thinking, planning and design. But if this is effective, I am not sure. If someone forces you "Think from the beginning of the hour", you probably not feel very comfortable, and the effect of natural thinking will not be very good.

Pair Programming, which has been used by XP and other agile methods to appear to be a good remedy. If a person's idea is blocked, another person tends to think of a good idea. Two people think together, the effect will be much better than the respective politics.

In general, the more open the work environment, the more exchanges between programmers will. If the manager does not encourage the programmer chat between the programmer, the exchange will soon hide. Some managers are still stubborn: programmers should not talk to others when they work, they should bury their heads in front of the computer screen. This idea is wrong, such managers do not know the essence of programming work.

Therefore, in general, if managers and programmers can understand the importance of thinking and communicating, they can better utilize modern programming environments.

Poor manager

After a whole generation, many high-level executive managers are still unless.

The lack of management capabilities is always a fatal issue; the lack of software development experience is just an excuse for some of the competent managers.

- "Procedure Development Psychology", Chapter 6

"Cheng": Recently Tom Demarco's "person" is selling in China, everyone is paying attention to our "poor programmers", and many companies have begun to improve programmers' working environment. However, I found that there are still many "poor leaders", the experience of leading the software team makes them fading. What do you prepare for them?

GW: I certainly won't forget them. The leadership of the software project is a unique job. I also wrote a book about this topic: "Being a technical leader."

"Cheng": In our team, departmental manager is as young as our programmer. And he is very good. Whenever we encounter problems, he will always solve us. Because of this, his own work is often delayed and has to work hard. And he often excessively pays attention to details and ignores the overall plan. Can you give him a suggestion? GW: Tom Demarco refers to this situation as "the second law of bad management" - the specific work of the team member. You can tell him, "should not do this" - this is Tom Demarco. If he still doesn't stop, tell him "The First Law of Bad Management" (this is my own summary) - "If you are not working, you will do more." Maybe let him have worked hard, he I will find a problem and adjust it myself. If this is not yet, the two rules mentioned above tell his superior leadership, let them arrange it.

"Cheng": Do you think "flat" corporate organization is more suitable for software development? After all, the software design only exists in the developer's head, so the senior manager is necessary to understand the idea of ​​each programmer, right?

GW: This is not even. Managers do not need to know all details, their work is "management" rather than "development" - that is, they only need to create a good environment for programmers, motivate programmers, and programmers Nature Will do what you do.

"Cheng": You mentioned an interesting phenomenon in the book: When allocating the task, people may say "I can get it in two months"; but they actually take 3 months or more time. Recently, we are practicing XP, I think this blind optimistic estimate is because they don't have the task segmentation?

GW: The real problem is that people often mix "estimates" and "commitment" to talk - I don't know how to do other situations, at least Americans often do this. The so-called "estimation" is an incorrect thing. No one knows what will happen in the future, if someone says he can accurately know the future, he is not idiot is a liar.

To get a more reliable estimate, the best way is to: subdivided the task. For one month task, no one can accurately estimate the time of completion; but for one to two days, it can be more accurately estimated.

Moreover, the segmentation task has another benefit: You can let managers see the entire estimated result. This task takes two days, the task takes three days ... The time plan of the entire project is not blown out, so that managers cannot ask developers to compress progress.

"Amateur" and "Professional"

The way "program development" is inconsistent with endless.

A amateur program may just write a BASIC program with six statements, which can be used to solve the root of the secondary equation, starting to talk about the theory and practice of procedures - the most professional programmer, Mo is here.

- "Procedure Development Psychology", Chapter 7

"Cheng": I noticed that you have repeatedly emphasized the difference between "amateur programmer" and "professional programmers" ...

GW: Because I think this is a very important concept. It is not "a person who is programmed", it is qualified to claim to "professional programmer", but it is a professional programmer in the promotion of software discipline. This is not to devalue amateur programmers, and any discipline has amateurous enthusiasts, which is not very good. However, it is necessary to draw the boundaries between the division of surplus players and the professional players, so that the amateur can find the direction of our efforts.

"Cheng": However, now the scope of software is so broad. From the government agency to the space shuttle, from the mobile phone to the supermarket, there are software everywhere. The difference between various software is so huge, how do we distinguish between professional programmers and amateurs?

GW: In my opinion, you should first consider the purpose of their programming. If it is just for a selfishness, if the result of the program has no effect on others, this is the way of speaker programming. For example, the research on the computer system is quite good in the depth and breadth of knowledge, but they usually only be programmed for themselves - for learning, or in order to get the degree, they are still just amateurs. If they still have a job in learning, I developed the actual software for others, when they are a professional programmer.

Keep in mind that professional programmers may not be excellent, and amateurs may be extracted, but their programming is different, which determines the difference between them.

"Cheng": Since you know that you have been divided by "Professional" and "Amateur", I have always wanted to know about your views on shared software (Share-ware). Many young programmers do sharing software with Golden Dreams. Do you think sharing software does what contribution to the software industry?

GW: Almost all shared software are garbage. Although commercial software and open source software have many garbage, shared software is almost all garbage. I have tried some shared software, but just try. If I want to pay for a software, I must ask a trustworthy company to support it. At least in the US, there is not much trustworthy software company. Many companies are open less than five years, then their customers will never have any support. Sharing software, their users can get less guarantees. No, at least I will not buy such unreliable software.

If you are in a software industry, shared software has instilled a bad habit to make them work in a habitat. The authors of shared software are used to singing alone, always working with their own hobbies, this cowboy work style is at least lack of professionalism.

Find what you want

The average IQ of the programmer even exceeded the college graduate student.

Program development is a very diverse behavior, so according to a single "score", any quizzes cannot fully measure the intelligence required.

- "Procedure Development Psychology", Chapter 9

"Cheng": What role do you think of the university does this work? In China, universities have expired, and the result is that we cannot judge the ability and talents of graduates from diplomas ...

GW: Yes, in the United States, most graduates have seriously lack the experience of actual projects, only one meaningless diploma. Although the graduates of the computer system are more, but companies are more difficult to find outstanding talents because the information available can be provided. University education is largely wasted: Many people go to study for a diploma, but when they get a diploma, companies have dare to believe in diplomas. There are this problem around the world. In the school education, we need to use other means to education, discover software developers.

"Cheng": If you don't look at the diploma, how do you choose a talent? For example, what if you want to interview a developer, what do you do?

GW: If you want to recruit a programmer, you should give him a programming problem, as you want to solve your face. According to my own experience, about 1/3 of the person will refuse this test. They think that their resume is enough to explain the problem. I will never hire such a person; the other 1/3 people will immediately fight, There is no more questions to clarify demand, such people lack analysis issues, solve the problem, I will never hire them.

Finally, about 1/3 of the person will show the ability to solve problems. They will make a variety of questions and get more information. If you don't want the desired information, they will put the roots. After starting, they will continue to ask the "customer" to check the phased outcomes to ensure that there is no error in its direction. Before starting programming, they will do simple design and weigh the choice between several designs. They may not solve the entire problem, and may even choose the wrong direction, but I can see how they solve the problem, this is the most considering when recruiting developers. I have never let the candidate to choose a test of a class. Software development is a difficult job, much more difficult than the choice, it needs constant thinking and communication.

In addition, if the candidate has work experience, I will ask him to introduce the previously involved project. From the words of the project, I can also get a lot of information.

* * *

Technology and management

The hardest choice facing the leader's technical stars is that it is possible to stay away from the latest technology. In my career, I will inevitably sacrifice some technical capital to improve interpersonal skills. I don't know - even I am willing - I am still able to recover the initiating conversion decision. Just like many issues that are completely growing in innovation work, the leader solves the problem-type leader, I believe I can return to the mainstream of the technology at any time, but the facts may not be the case.

- "Become Technology Leaders", Chapter 5

"Cheng": Ask a question about the professional development of programmers. Almost all people think that software development is the occupation of young people. The programmer waved sweat and worked hard to write code, and they were full of fear of career development after 30 years old. You are a programmer, and later, after the transformation of university professors, system designers, consultants, trainers, etc. What kind of insights do you have for programmers?

GW: Yes, for many people in us, there are problems with career development. I have talked about this problem in a few books. I hope that these books can help Chinese readers, just like they have helped readers who have many US (and other countries), so that they can make the right choice on the road of career development.

* * *

"Cheng": Finally, in accordance with the practice, please tell the Chinese software developers say something most want to say.

GW: Can you only say one? (laugh)

Let's send my commonly used signature file to China's developers, they are all ancient proverbs of China, and believe that Chinese friends will like them.

The wise man is awkward, there must be a loss; the fools must have a good job.

Ten years of trees, a hundred years of tree people.

Listen and forgot to meet, see and easy to understand, and easy to understand.

转载请注明原文地址:https://www.9cbs.com/read-127108.html

New Post(0)