The Mythical man-month is a well-known book on software engineering. Some of the following texts are from this book. I thought it was a good one. The excerpt is as follows:
Professional pleasure
Why is programming interesting? In return, what kind of happiness does its practitioners expect?
First, it is a pure pleasure to create things. Just as a child is happy when playing dash, adults like to create things, especially by themselves. I think this joy is a reflection of God's creation of the world, 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, there is no essential difference between this and the clay-made pencil case made by the child for "Dad's office.
Third, the whole process shows the magic of power-assembling the components that mesh with each other and seeing that they run smartly and get the expected results in advance. Compared with the charm of a pinball game or karaoke player,ProgramComputers are not inferior.
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, people who solve problems can learn new things from them: Sometimes in practice, sometimes in theory, 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 to build their 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 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 adjust the way of doing things in the pursuit of perfection.
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, the authority of an individual does not match the responsibility it assumes. 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) 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 incomplete release (NoSource codeOr test cases. Therefore, system programmers have to spend time researching and modifying them, and they should ideally be reliable and complete.
The next annoyance-conceptual design is interesting, but searching for trivial bugs is just a repetitive activity.
Creative activities are often accompanied by 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. As a result, it takes more time to find the last error than the first one.
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. It may be that colleagues and competitors are already pursuing new and better ideas. Maybe the alternative solution is not just being conceived, but already being arranged.
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 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. The evaluation of implementation backwardness should be based on other existing systems, rather than the concept of unimplemented. Therefore, the challenges and tasks we face are to find feasible solutions to practical problems within the existing time and effective resource range.
This is programming. A tar pit that many people struggle with and a creative activity of fun and distress.
Link: http://www.nowamagic.net/programlife/pl_FunAndSad.php