How To Destroy The Myth Of The Proper Solution
Discussions are a fundamental part of software development, they are a necessary friction to increase scalability. A few patterns can emerge from those discussions that allow us to spot problems early when those problems can have an impact on the quality of the outcome. One of them is the Proper Solution
The Proper Solution is a common expression in software development. It can come in many forms such as "the best solution", "doing the right way", "making it better" or "improving it". All of them share the same fundamental:
Just because one believes to have the best answer, that doesn't mean that it is the best answer
In most software projects, an intuitive analysis of a problem is necessary because the more acceptable answer lies in achieving the best outcome among many variables (business requirements, human resources, code complexity, technical debt, etc.). The main issue is that "best" or "proper" is hard to measure and depends on each specific case.
Just as legibility, the "proper solution" can be subjective or inaccurate when concluded by a single person because it relies on the current knowledge and state of mind of that person. When working as a team, however, the chances of coming up with subjective and inaccurate answers are lower, although they are still restricted to the level of knowledge of the members of that team. Besides, two individuals of the same team can come up with a solution that looks the same for the core of the current issue but is different for edge cases, for better or worse.
The reason why it's very hard (either as an individual or as a team) to come up with a proper solution for a problem is that the human knowledge in all areas is too vast. Even if we could hold the current knowledge of all mankind in our pockets, there would be still many things to discover. The only way to really come up with a proper solution is to know everything, including what is unknown, and use that as an attempt to craft the best possible and measurable outcome.
The only way to really come up with the proper solution is to know everything, including what is unknown, and use that as an attempt to craft the best possible and measurable outcome
Unfortunately, being able to measure something in this industry is a challenge on its own. Each specific circumstance is dynamic. Variables change often and we can't effectively predict the outcome using efficient models like the scientific method, for example. Knowing everything (including what is unknown) is a Utopia.
It's reasonable to conclude that the Proper Solution is a fallacy. It's impossible to be achieved.
If we're aware that the Proper Solution is impossible to be achieved, we can at least try to get as closer as possible to it given the current knowledge or circumstances of an individual or team. Even if we can't measure a proper solution that will be the same for all situations, we can still experiment something to see if it works in our context. If it works, that doesn't mean it will work for all cases, but at least that means it works for the business requirements, human resources, code complexity or technical debt we have right now.
There's no such thing as the "Proper Solution", there's only the best solution we are able to come up given the current knowledge and circumstances
The code is already legacy at the moment it reaches the master branch, the decision is already made at the moment it goes to production. The only thing we can do is improve our own capabilities to make it better the next time.
Reaching to the Proper Solution is a myth, that doesn't mean we should stop using the term, just that it shouldn't stop us from getting closer and closer to it everyday, in a journey of continuous improvement. If we do like that, we will eventually reach a state where we will find ourselves solving problems faster and better from what we did a long time ago.
However, if we don't feel that we are improving every day, then that means that we are not getting even closer.
And that, my friend, is a much bigger problem.
相關推薦
How To Destroy The Myth Of The Proper Solution
Discussions are a fundamental part of software development, they are a necessary friction to increase scalability. A few patterns can emerge from those dis
How to Pronounce the Months of the Year
line http itl alt breaking popular linkedin mos nbsp How to Pronounce the Months of the Year Share Tweet Share Tagg
How to steal every vote in the state of Georgia
Disclaimer: vote tampering of any kind is a felony. Accessing computer systems without proper authorization is a felony. This post was not written with int
How to Win at SEO in the Age of Machine Learning
In the recent past, we have been hearing a lot about machine learning, but do we really know what is machine learning? And how it can change the organic se
How to use "man" effectively in the development of Linux
man is the system's manual pager. The table below shows the section numbers of the manual followed by the types of pages they cont
How to solve can't see the Add Virtual Function/Add Windows Message Handler menus on the menu of the class in VC6
Step 1 : Delete the *.clw file in the program's directory. Step 2 : Open the project (open the *.dsw file). Step 3 : Open the ClassWizard,
PowerDesigner在生成SQL時報錯Generation aborted due to errors detected during the verification of the mod
mage .com sql inf pos pow model mode class pdm 生成sql 時候 會彈 把 Check model 的勾 去掉 問題就解決了PowerDesigner在生成SQL時報錯Generation aborted du
沒有生產者 Failed to check the status of the service org.java.service.HotelService. No provider available for the service
ble 1.0 防火墻 stat 設定 火墻 xml文件 tro 問題 經過反復查找原因終於鎖定了生產者XML文件中的version="1.0" 教訓:如果生產者設定了服務的版本,消費者一定要提供相應的版本號(或空或寫入對應的版本號) 如果有朋友不是這個問題,建議看看防
bc_test_vc:The sum of the integers from 1 to 100 is 5050 .
//可以隨便更改的test函式,每次用完了就丟棄,隨時可以改。 void test(void) { int in1,in2,sum; cout<<"Input one integer:"<<endl; cin>>in1; cout<<"
記錄一次dubbo找不到service問題Failed to check the status of the service
事實證明,eclipse是一個好的開發工具,但不是一個優秀的開發工具。 呼叫介面的時候一直報Failed to check the status of the service錯誤,提示註冊中心沒有相關的服務。 開始我沒有將生產環境和開發環境的<activation> <ac
org.apache.catalina.webresources.Cache.backgroundProcess The background cache eviction process was unable to free [10] percent of the cache for Contex
需要耐心啊,太急於求成,希望直接就得到解決方法了...以至於正確方法都已經出現了,我卻沒有耐心看下去,所以反而又耽誤了不少時間.... 專案載入100+張圖片,還有一個小的MP4,所以console警告快取不夠 org.apache.catalina.webresources.Cache.getResou
A Simple Guide to the Versions of the Inception Network
The Inception network was an important milestone in the development of CNN classifiers. Prior to its inception (pun intended), most popula
How To Update Android Apk Outside The Playstore
Let’s learn how to update android apk outside the playstore in this short post! Perhaps you have a scenario where you don’t want to publish your app in
From TED Talks to Snoo, 15 Histories of the Future
We may take the #hashtag for granted today, but it didn't emerge fully formed from Biz Stone's head. The Large Hadron Collider hasn't collapsed (or collaps
Is it immoral to only spend 50% of the time at work productively?
I feel that people often make a big deal of somebody using 5 minutes of Facebook a day during the boss' time. I have the feeling that the average person on
Japanese spacecraft drops robot onto asteroid to hunt for the origin of the solar system
A robot has been successfully dropped onto an asteroid millions of miles from Earth – and will now hunt for the origin of the solar system. The German-Fren
A practical ES6 guide on how to perform HTTP requests using the Fetch API
In this guide, I’ll show you how to use the Fetch API (ES6+) to perform HTTP requests to an REST API with some practical examples you’ll most likely encoun
Intro to VC: A History of the Modern Internet
Intro to VC: A History of the Modern InternetThanks for tuning into this post. To give a quick background on why I’m writing this, I’ve been researching se
Simpson’s Paradox: How to Prove Opposite Arguments with the Same Data
Simpson’s Paradox occurs when trends that appear when a dataset is separated into groups reverse when the data are aggregated. In the restaurant recommenda
The myth of ‘messing’ with biology
The myth of ‘messing’ with biologyThe 4th of our contributions from Gemma Milne, Science & Technology Writer; and Co-Founder of Science: DisruptOn July