What's the significance of programming? And why do we program? They're the questions which come to my mind from time to time. Every time I doubt my career or goals, the questions come up and make me a bit confused and unrest. During my decade of professional career, I always could find a reason for myself to continue loving programming at every stage, until it can no longer answer the above questions. In this way again and again, I begin to understand the significance of programming gradually…
Programming is skill
Thinking back to when I became a programmer from graduating, I was so enthusiastic about technologies. I constantly purchased various technical books and almost all of my spare time was ready for studying technologies to improve my programming skills. Therefore I quickly became the most outstanding one in efficiency and quality of coding among the same group of newcomers. And the accumulation of technologies and experience in that period of time have been a solid foundation for my future work. Programming as a skill has been deeply embedded in my body.
Even today, I still miss the days when I was focused on technologies. I was excited about every line of good code I wrote, and I was happy that I could make progress in technology every day. The significance of programming for me at that period of time was the technology itself.
Programming is used to solve problems
"With the great power, comes the great responsibility." It's the classic lines in the movie "Spider-Man". And it also can be applied to the career of programmers. With the improvement of technical skills and recognition gained in the work, my position has also changed from a junior programmer to a senior development engineer and to an architect later. As a result, apart from programming, a large part of my time had needed to be used to communicate with clients and analyze their proposed requirements. The process of the role conversion was difficult and even painful for me. I had to use my poor communication skills to work with clients. What was worse, the technical terms which I was accustomed to using sometimes were too difficult for clients to understand.
I soon realized that I was no longer a junior programmer who passively accepted assignments and just getting programming work done was not enough. In addition to technology, I needed to be able to break through the programmers' thinking to discover the real issues behind client needs. So I became more pragmatic than ever before, and I began to select the most effective technical means as possible as I could to solve problems instead of pursuing the depth of technology.
At this point, the significance of programming had also changed. It was no longer limited to the technology itself but had become an ideal tool for me to solve problems.
Programming is both expressive and creative
After a few more years, when the question “Why do I program?” appeared in my mind once again, it was the year when I had been 30s. Truly, for most programmers, this age was a little old. And even one might think that a programmer who was in his 30s but still programming must have been not good at coding. I didn't care about what people said. Actually, I had a lot of opportunities for transformation, such as going to the business department, or transferring to management, etc.. But finally I chose to stay in my comfort zone, because I thought programming was my favorite and perhaps it was the only thing I was good at.
This period was also the golden age of my entire programmer career. I wrote the core framework and the core algorithms of some important business systems for my company. I enjoyed this period of time because I had rarely come up against technical concerns. I could freely achieve what I thought was good through programming.
For me, programming was no longer a skill or tool, but was used to express myself and create something. It not only gave me a great deal of freedom, but also let me experience an unprecedented joy in it.
Programming is to leave marks
In the end I took the management post because of many personal factors(the environment, the family, the economy, etc.). But I'm still more than happy to be called a programmer or an "old" programmer. Just like in my self-introduction, I always put "a full-stack engineer" at the top of other "titles". I'm also doing my favorite open source projects or personal projects in my spare time. And when I once again asked myself "why do I program?", I got a different answer instead: Perhaps the reason for our programming is to leave marks during the life.
Recently, my company was worried about the upgrade of an old system which has been running for nearly 20 years. In order to upgrade the system, everyone had to read the underlying code to go deep into the framework of the system. When we read about the database connection pooling code implemented by a retired American colleague Bill, everyone of us couldn't help giving out our praise for his superb level of technology. At that time, Java just began to become popular, and there was neither such a framework as Spring, nor a standard persistence layer implementation (such as Hibernate or MyBatis). All database connection pools and core persistence code in this system were written by our American colleague. It was he who made the system work stably for nearly 20 years.
I know a CTO of a company which is engaged in the development of stock trading softwares, of whom looks close to 50 years old and is still writing the core code of the stock trading softwares. When I asked him why he still insisted on writing code at his age and position, he told me that he was very excited and proud when he saw that the code he wrote was supporting the hundreds of billions of stock trading every day, and he hoped that he could make it better with his own efforts.
Our American colleague won't hear our praise for the code that he wrote more than ten years ago, and the investors won't know that the code written by the CTO is supporting their daily transactions. However, those excellent codes are the marks they left. We're not sure how long these marks will last, maybe a few years or maybe even shorter, but they are both playing important roles in our daily lives, and there are no doubts that they will become foundations of new masks. I think it may be the significance of programming.