Occupation fun
Why is programming interesting? As a return, what kind of happiness is expected to get?
The first is a pure happiness that creates things. Like a child when playing mud, adults like to create things, especially their own design. I think this kind of happiness is the refraction of God to create the world, a joy of each unique, new leaves and snowflakes.
Second, happiness comes from the development of something useful to others. Inside, we expect others to use our labor results and can help them. From this aspect, this is the difference between the children with clay with clay as "Dad Office".
The third is that the entire process reflects the magic power - assembles the components that meshes each other, seeing them exquisitely run, get the previously desirable results. The programmed computer is not inferior to the charming charm of the ball gaming or the singer.
The fourth is the fun of learning, from the non-repetitive characteristics of this work. The problems faced by people are in some or other aspects. Thus solving problems can learn new things from this: sometimes practical, sometimes theoretical, or both.
Finally, fun comes from working on such easy to control media. Programmers, like a poet, almost just in a simple thinking. The programmer uses its own imagination to build its own "castle". There are very few such media - the way to create is so flexible, so it is easy to refine and rebuild, so you can easily achieve conceptual ideas. (However, we will see that it is easy to control the characteristics of itself.)
However, the program is different from poems. It is a real thing; can move and run, can generate visible outputs independently; can print results, draw graphics, sound, and mobile brackets. Myths and the legendary magic have become reality in our era. Type the correct spell on the keyboard, the screen will eventually, change, showing unprecedented or existing things.
Programming is very interesting, but it not only meets the desire of our inner depths, but also pleading everyone's internal emotion.
Career distress
However, this process is not all joy. We only know some programs in advance, so that when they really appear, they can face it more calmly.
First, you must pursue perfection. Because the computer is also trick in this way: if a character in the spell, a pause, there is no match with the correct form, the magic will not appear. (In reality, few human activities require perfect, so human beings are not used to it.) In fact, I think the most difficult part of learning programming is the way to do things to pursue perfect direction.
Second, it is made by others to set the goal, supply resources, and provide information. Programmaker rarely controls the work environment and work goals. In terms of management terms, individual authority is not matching with the responsibility herself. However, it seems that in all the fields, the work to be completed, very few official authorities with responsibility. In realities, the actual (relative to official) is from the completion of each task.
For system programmers, dependence on others is a very painful thing. He relies on other people's procedures, but often these procedures are not reasonable, achieving bad, incomplete publishing (without source code or test case), or documentation records. Therefore, the system programmer has to spend time to study and revise, and they should be reliable under ideal cases.
Next trouble - conceptual design is interesting, but looking for trivial bugs is just a repetitive activity. With creative activities, it is often boring and dull time and hard work. Programming work is no exception. In addition, people find that debugging and checking is often linear convergence, or worse, with complexity of secondary side. As a result, the test is dragged and dragging, finding the last error will take more time than the first error.
The last trouble is sometimes a kind of helpless - when investing in a lot of hard work, the product is about to complete or finally completed, but it has been out of time. May be colleagues and competitors have been chasing new, better ideas; maybe alternatives are not only ideas, but are already arranged.
The real situation is usually better than what it is mentioned above. When product development is complete, better new products are usually not put into use, but it is just talking about everyone. In addition, it also requires a few months of development time. In fact, only the latest ideas will only be used when needed, because the system implemented can meet the requirements and reflect the return.
It is true that the technique based on product development is constantly progressing. Once the design is frozen, it is already stunned in concept. However, actual products require a step in step by step. The judgment of reaching or not, should be based on other existing systems, rather than unrealized concepts. Therefore, the challenges and tasks we face are to find a practical feasibility to solve practical problems within an existing time and effective resource range.
This is the programming. A many people suffering the tar and a creative activities that have fun and distress coexistence.