This is a creation in Article, where the information may have evolved or changed.
Constantly copying and pasting and simply arranging the combination of people called Code farmers, understand that their programming design people called software engineers.
Understand the process of C language, HTML/CSS/JS document declarative, Java/ruby object-oriented, Golang combination and recently seen Lisp (Scheme) The function of these different thinking patterns let me gradually understand: a good software engineer should be in the basic computer knowledge, have the overall consciousness, have bigger picture, in the project at all stages to make the most reasonable design decisions, pay attention to what is said here is reasonable, not the best, because the project is to liberate human brain and physical strength.
Design decisions to design language selection, database, software architecture, network protocols, small to modular design, class, method, variable naming. I remember a football coach in high school said: "If a person can play football, it's enough to see him kick a foot."
So the question is, how to make a reasonable design?
- Understanding of the needs
- Assessment of real-world conditions
- Expected of the project (person month)
- Balance 1. 2.3. Make a decision plan for trial and error
- Take a small step and make a reasonable project plan before an acceptable point in time
Demand comprehension
The difference between good programmers and poor programmers is the ability to understand-the beauty of simplicity: the way to design software
Yes, every line of code we write, each line of comments is designed to achieve some real value directly or indirectly, rather than studying an academic or practicing English. So understanding the needs is important, in fact, the white is how to deal with the data. Different industries have different characteristics, different needs have different values to achieve the demand, in-depth understanding of the areas to solve the problem, and then in a higher perspective to abstract into a computer can understand the model, the so-called "art from Life, but higher than life."
The penetrating force of realistic conditions
This is mainly concerned with the basic skills in the field of computer science: Operating systems, computer networks, databases, algorithms and data structures, language-related design models. There is no need to recite the protocols of each algorithm, and it is not necessary to find the documents in your own mind. To understand that: each of the above areas of design has a strong demand background, we have to understand is, in the historical perspective, they are to solve what kind of problem and gradually evolved, the various solutions between the connection and difference, consider their own application scenarios, how to do from the predecessors of the design project extraction, combination, Modifications and extensions.
Evaluation Power of Human month
With the above basic objective conditions, the most rare is the assessment of people.
- Assessment of the level of Self/team members
- Research and study time of new technology
- Response measures to unexpected situation
Pierced: strain adjustment force
Only change is constant, in practice constantly honed their ability to adapt to change.