From the Mythical man-month
Professional pleasure
Why is programming interesting? In return, what kind of happiness does its practitioners expect?
The first is the pure happiness of creating things. Just as a child is happy when playing dash, adults like to create things, especially by themselves. I think this joy was created by God.
The reflection of the world is a joy presented on every unique, brand new leaf and Snowflake.
Second, happiness comes from developing things that are useful to others. Deep down, we expect others to use our labor results and help them. In this regard, this is the same
There is no essential difference in using Clay to make a pencil case for "Dad's office.
The third is the magic of the whole process-assembling the components that mesh with each other and seeing them run in a subtle way to get the expected results in advance. Compared to a bullet ball game or point
The charm of the player is not inferior to that of the procedural computer.
Fourth, the pleasure of learning comes from the non-repetitive features of this job. The problems people face are always different in one or other ways. Therefore, the problem-solving personnel can learn new
Things: Sometimes practical, sometimes theoretical, or both.
Finally, fun also comes from working on a medium that is so easy to control. Programmers, like poets, almost only work in simple thinking. Programmers use their imagination out of thin air,
To build your own "Castle ". There are few such media-the creation method is so flexible, so easy to refine and reconstruct, so easy to implement conceptual ideas. (But we
We will see that easy-to-use features also have their own problems)
However, after all, the program is different from poetry. It is a real thing. It can be moved and run to produce visible output independently. It can print results, draw graphics, make sound, and move the bracket.
The mythical and legendary magic has become a reality in our time. Enter the correct spell on the keyboard, and the screen will be active and changing, showing unprecedented or existing things.
Programming is very interesting because it not only satisfies our desire to create in our hearts, but also pleasure everyone's internal emotions.
Career distress
However, this process is not all joy. We only need to know some of the inherent troubles of programming in advance, so that we can face them more calmly when they actually appear.
First, we must pursue perfection. The computer also performs tricks in this way: If a character or pause in a spell is not consistent with the correct form, the magic will not appear.
. (In reality, few human activities require perfection, so humans are not used to it .) In fact, I think the most difficult part of learning programming is to pursue perfection in the way of doing things.
.
Second, it is up to others to set goals, provide resources, and provide information. Programmers have little control over their work environments and goals. In terms of management, personal authority and
Responsibilities do not match. However, it seems that in all fields, the work to be completed is rarely provided with formal authority consistent with the responsibility. In reality, the actual (relative to the formal)
The authority comes from the completion of each task.
For system programmers, dependency on others is very painful. He relies on other people's programs, which are often poorly designed, poorly implemented, and not released.
Complete (no source code or test cases), or poorly documented. Therefore, system programmers have to spend time researching and modifying them, and they should ideally be
Complete.
The next annoyance-conceptual design is interesting, but searching for trivial bugs is just a repetitive activity. With creative activities, it is often boring time and hard work.
. Programming is no exception.
In addition, debugging and error detection are often linearly converged, or worse, they have a quadratic complexity. Result: The test is delayed, and the last error is compared to the first one.
It will take more time by mistake.
The last annoyance is sometimes a kind of helplessness-when a lot of hard work is invested, the product is about to be completed or finally completed, but it is outdated. May be colleagues and competitors
Competitors are already pursuing new and better ideas. Maybe the alternative solution is not just conception, but also arrangement.
The reality is better than what we mentioned above. When the product development is complete, better new products are generally not ready for use, but just for everyone to talk about. In addition, it also needs
It takes several months of development. In fact, the latest ideas will be used only when needed, because the implemented system can already meet the requirements and reflect the return.
It is true that the technologies based on product development are constantly improving. Once the design is frozen, the concept is outdated. However, the actual product needs to be implemented step by step. Real
The current lag should be determined based on other existing systems, rather than the unimplemented concept. Therefore, the challenges and tasks we face are to find
A practical solution to the problem.
This is programming. A tar pit that many people struggle with and a creative activity of fun and distress. For many people, the pleasure is far greater than annoyance. And the rest of the book
The rest part will try to build some bridges to provide some guidance for such tar pits.