Programming and Software Development with Focus

  • UUID: e5957f82-a102-4bad-bd40-45413a9185c6
  • Status: Written on 20230617

Life is short and busy, so better to scope things to enrich life in more aspects.

One of the practices I started to do since a bit more than one year is to scope my different activities. I used to spend more much time in programming and software development (including thinking about them). After realizing the fact that in a real business environment with something similar to the Law of Diminishing Utility, to be better in depth of knowledge and experience is commonly not better respected or appreciated. I am trying to enrich my life beyond more than my career focus by not spending much of my disposable own time on programming and software development.

I am still thinking, summarizing and writing down this article on my own weekend, mainly because of the need to calm down and re-focus in the career a bit.

Taking about software development, technology evolvement has made general software development much and much easier to enter. People who have no idea of what programming design patterns can also develop some programs by simple copy and paste some tutorial code snippets, especially web pages or web applications.

And then there comes more situations like blindly-confident programming beginners who think they are good programmers and can tech professional programmers how to do programming design, because there are more people who claim to be good programmers without self-awareness. People who are not humble are usually also people who don't know knowledge is a circle. The Albert Einstein quote "As our circle of knowledge expands, so does the circumference of darkness surrounding it." may be simply out of sights of blindly-confident people. It can be a cultural thing, and most commonly seen in US as more are grown up with encouragement sayings like "You are the best." (At least, this is what I have learnt in China about US culture.)

I like Germany and moved in Germany with the plan to stay long at the end of 2019 because, as one important factor, I indeed worship the engineering culture. Germany is not the only country which is known for engineering although not really the best, considering Switzerland, Japan and some others, but Germany is a good model. What is engineering in my understanding? To improve things as much as possible even with the awareness of being more costly for pushing the edges. (Law of Diminishing Utility) To make products is completely different than to make money. To make things work is also completely different than to make things work as well as possible. Germany is not so noise about the money culture. It is more a good quality culture. Engineers and Knowledge in Germany are relative better respected, appreciated or awarded than just Riches and Money, although inevitably also heavily influenced by the money culture from the other side of the Atlantic see. (To be fair, at the other end there are still many not so money-oriented examples. For some moments, I even feel Apple Inc. is very much a "German" company in my mind. It doesn't chasing fancy trends but make vast investment in R&D and make continuous improvement to a well managed product portfolio. It has been targeting at better instead of more. The iPhone features are arriving slowly but well designed and standard enough comparing to Android phones. Not advance or fancy enough but good and reliable enough.) When I was asked in a workshop in my company about 2 years ago, that what would I do if I have unlimited resources, I answered, what not necessarily what I would like to do then, to make a documentary film or film series of great programmers (I use programmers here instead of software engineers, also because I don't think wording matters more than meaning), including people who invented different programming languages, to indicate my worship of great engineering and to let my colleagues get this point.

What drives the idea of composing this article is mainly because of a recent compromise in my job.

I am well aware that I have turned myself into someone who is tired of arguing, debating or competing, and cares less. It is easy not to care but difficult to care especially for things which are not yours. Owning or not is the difference and it is usually trivial to feel the ownership or not. I am a perfectionist and I am well aware of the cost inefficiency. If it is my things of care, I would spend my time and energy to improve while not considering too much on the cost and benefit trade-off. This is also kind of the reason why I have developed my own websites line by line instead of taking already developed programs and doing configurations including personal home page https://www.johannhuang.com/ and personal blogging application which is used for https://www.johannhuang.com/articles/ as well as several other websites, just because I don't find any other available programs satisfying to me. It is easy to tell the ownership feeling for personal projects, but it is not easy for projects made at jobs. Like everybody, I still feel a bit ownership of programs I wrote for my company although I do not own the programs, legally and practically. If you like your team more, you of course you like the product you build together more. I don't like inexperienced people to pollute my carefully crafted programs. In a well-structured or balanced team, knowledge, experience and communication help us to make good programs together; however, in an unbalanced team, things become difficult. Culture also counts here. It is about what are more respected. As it is not rare, people who speak loud become people who are more "reasonable" in front of a group of inexperienced judges or an audience which has the belief that louder means more "reasonable".

Culture is a big thing. Also influencing seemingly small decisions. As an example, using jQuery or not is one of the hot debates in some areas. The jQuery has of course its value and of great value. Native web browser APIs may not seem to be easy enough for people who have not enough experiences. So jQuery wraps them and hides many details by making it easy to do web programs. Over the years, jQuery becomes itself complex and not so easy to use and the native web browser APIs as a whole is improved to be not that difficult as a result of many aspects including web developers also get better ways to learn and gain knowledge. Whether to make a jQuery to wrap native browser APIs in order to make a web program is a question, so as whether to make a helper to wrap some underline APIs in order to make a high-level program is a question. Reasonable answer involves a trade-off comparison and requires knowledge and experience to compose.

When something you carefully crafted is polluted by not so reasonable actions, it becomes hard to care as an effect of the so called broken window syndrome.

If there is no engineering culture, software programming design may not become a topic comparing to software features.

Enough words … started with a idea to write about programming more, but turned out writing more about cultrure and the way of thinking about programming - team and job specialization … environment is not always great, keep doing the job well … profession and specialization … Let me jump to the conclusion.

I hope still can maintain my programs as good as I can, therefore I will care it as long as possible to make it as good as possible. I still care and worship engineering and knowledge.


* cached version, generated at 2024-01-07 23:25:08 UTC.

Subscribe by RSS