I realized three roles deep in the soul of software developers-great artists, dependent workers, and selfish pragmatists.
Great artist
If a voice says, "You cannot draw ." Then you should do your best to draw and let that sound disappear. --- Van Gogh
The first role is a great artist who gives programmers the courage to face challenging jobs, try new ways and seek self-fulfillment. This role gives us the power and desire to create artistic results and make continuous progress through learning and practice. The great art lies in the best software. It allows developers to jump out of their thinking limitations, find concise code, and ignore things unrelated to the problem. This is a powerful role, but things on weekdays are also full of danger-there is no predictable thing or guarantee, and the programmer will remember what the customer really needs. Developers driven by such roles will reject ordinary ones, but it looks good that they will do what they do in their own way and far exceed what they need. Developers have no patience with ugly code. Before the demo is released, they will spend the whole night on code refactoring .... After the tester goes home and goes to bed.
Dependent workers
No one is completely independent, and each person is an integral part of the whole. -John Dunne
The second role is a dependent worker. He puts the interests of teams, companies, and customers first. Driven by such spirit, developers are committed to successfully completing projects and great products.
Suppression of creativity and free code are not highly respected in management and may fail. Developers will complete the development very late. And fix the inexplicable software errors, he will test again after the tester confirms that the Administrator has installed the software. This selfless spirit allows developers to be concerned, shoulder their responsibilities, and observe the company's discipline. However, sometimes there is pressure, and it is even more important to waste the developer's talent.
The danger is that if companies do not care about developers' hard work and sacrifice, their passion will quickly disappear.
Selfish pragmatic
Life is when you plan other things, now things happen,
-- John
Selfish pragmatism pays more attention to personal interests, salary and welfare, work security, and career growth. This role will drive developers to accept nonsense (note: the original article is accept shit), and pay close attention to their own salary and the approval of managers, this kind of person will replace the development of great software and remove their dedication and loyalty to their work from their own every day with their family establishment and personal issues.
Developers affected by such a spirit often develop more favorable qualities for their own growth, and write some messy code for better confidentiality, it increases the difficulty of things for a longer contract, or is a waste of time on the Internet, either working on your own projects or career, or without a destination.
Such a spirit is filled with a natural desire, which makes him more want to achieve his own goals, make his future more confidential and secure, and have a life out of work. The danger of this kind of spirit is that it will make developers get things done by half, and do not care about the quality of the project and the company's long-term success.
Each role has a positive impact: great artists give people passion and strength, reliable workers encourage people to observe discipline and focus on results, selfish pragmatic people are more interested in understanding themselves. However, they also have their own negative effects: great artists are always doing too much and will ignore the real needs. The dependent workers will cause disasters and be afraid of changes, selfish pragmatists will dilute the company concept and focus only on the most interesting things.
The three roles have ruined the soul of many poor developers and broke the silence in their hearts. What is the final result of the mutual struggle between these roles? The developers I have seen usually have only one role (unfortunately, this role is usually a selfish pragmatic) at the end, and there will be no struggle or change in the future. Other developers may be stuck in several roles based on the environment: Some companies will inspire great artist roles for developers, while some companies will resist selfish pragmatism.
All of the above are obtained through subjective observation and theory, but it can be used to explain some of the phenomena that many software development teams have produced in the development process. Dear reader, I have some questions for you.
Do you agree to the coexistence of three roles? Can you balance them well? Have I ignored other roles or strengths in the soul of software developers?