The essence of software engineer->> from php100

Source: Internet
Author: User
The nature of programmers--->> transfer from php100
Many people think that computers have become so intelligent that they will no longer need programmers in the near future. Others think programmers are geniuses who can constantly solve complex math problems in front of computers. Even a lot of programmers have no clear idea of what they do. In this article, I want to explain to people who do not know what the programmer is doing.

Programmers are translators who translate human ideas into computer languages.

They are the bonds between the two worlds. Do you think it's easy to maintain this bond?

The background of the human world

The problem with people are that they ' re only human. –bill Watterson

The problem with humans is that they are just people. --Bill Waterson

Humans are the product of biological evolution and have a unique and valuable organ-the brain-that can provide ideas to programmers. The brain has a complex new cerebral cortex (unique to humans), as well as old structures inherited from mammals and reptiles. The old brain structure is primarily responsible for reproduction (sex) and survival (finding food or avoiding danger). The neocortex evolved to better support these functions, but it began to produce strange side effects-consciousness, thinking and curiosity. Thanks to these side effects, humans have produced civilization and invented computers thousands of years later.

Some people believe that after thousands of years of development, humans should become completely dull, rational, predictable creatures, but that does not happen. Human old brain structure, complex psychological and social behavior often make people irrational, unpredictable and deceptive. And humans have bad memories, strong emotions, and personal interests. But programmers can't choose to work with more rational species, they have to collaborate with humans and translate human ideas into computer languages.

Computer World Background

Part of the inhumanity of the computer was that, once it was competently programmed and working smoothly, it is completely h Onest. –ISAAC Asimov

Part of the non-human nature of the computer is that, once compiled and run smoothly, it will faithfully complete its work. --Isaac Asimov

Computer is the best invention of human civilization. It consists of CPU, motherboard, memory, hard disk drive, monitor, and other components. Computers push our civilization to a new level, make our lives more meaningful and fun, and compensate for the flaws in our brains. It is possible that computers are smarter than humans. (However, I'm a little concerned if this becomes a reality, does the computer still need human programmers?)

Modern computers are full of logic, directness and compliance. If you know what it should do and know how to command it, then working with a computer is fun. The only problem is that the computer will only do what you tell it to do. Therefore, you should have a clear idea and ensure that your computer does not go awry when you meet your boss or client.

The translation between human and computer

There are three major challenges to be encountered in translation:

1. Language ambiguity. Human language is vague, complex and pun-like: "This program does not provide a good user experience." Culture, context and contextual contexts all influence communication and meaning. In contrast, all computer languages are accurate and straightforward, regardless of context.

2. Level of detail. Human communication is general without too much detail, for example: "I want this damned program to run". This saves time and effort, but due to the lack of detailed information, there are two big problems-misunderstandings and uncertainties. And the computer needs all the details – everything is clear.

3. Thinking mode. Humans are accustomed to thinking about the relationship between demand, results and solutions, such as: "This report should run in 2 seconds, not 2 hours." However, the computer needs algorithms--follow the steps to achieve the desired results.

In order to write good software, programmers must overcome these difficulties, understand people's ideas and translate them into computer languages.

The ability of a good programmer


As we can see, a good programmer should have two sets of skills to cope with two different worlds.

Understanding human needs and proposing solutions:

1. Communication-the ability to connect with people, be able to talk to others intimately, and have the courage to try to share their views.

2. Intention-to extract useful information from the conversation and to understand and make it meaningful.

3. Logic-to collate and eliminate vague and controversial elements of human thought for a computer that does not know how to compromise.

4. Creativity--tapping and transforming human ideas to create great solutions.

5. Concept-The use of human-friendly interface and convenient interaction to packaging programming ideas.

6. The big picture-clear how the solution adapts to users, businesses, and others around the world, making your program more useful.

Tell the computer what to do and build a solution:

1. Logic (re-emphasis)-organize the programmer's ideas into cohesive software ideas and computer instructions

2. Technology-Discover and understand the technology black box (a black box for 99% of people).

3. Programming language-learning beautiful, logical, clear language, so that the programmer's ideas to provide computers.

4. Algorithm--proficient in the most efficient way to get the computer to complete the task.

5. Modeling-Create abstractions and models in software code to master and manipulate ideas.

6. Practice (such as code refactoring, Unit testing, continuous integration)-periodic activities to keep the system reliable, healthy and customizable.

There is a big difference between human-oriented and hardware-oriented object/system programmers.

Programmers who do not communicate with others are not good programmers. An excellent solution requires the dual skills of the computer world and the human world. Only two worlds can be connected to become a really good programmer.
  • Related Article

    Contact Us

    The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

    If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.