Kengkaj Sathianpantarit wrote:Implement software that are working very fast is a special skill. It's also a very rare skill.
There's 2 ways to read that sentence.
It does, indeed, take a lot of skill to make software that runs very fast, but overall that's not a skill that's much in demand these days, since we usually just throw hardware at the problem.
That's because of the other way to read that sentence. To make software that runs .... very fast (quickly), you have 2 choices. A) you can omit the extra time and effort that it takes to make the software run fast. B) you can omit the extra time and effort it takes to make sure that it runs always.
An old adage in the business is that the first 90% of the work takes 90% of the time and the last 10% of the work also takes 90% of the time. It's part of the nature of software systems that getting the raw system up can often be done very quickly and with relatively little skill required. However, making a system able to endure the slings and arrows of stressful daily use means sweating a lot of details. If you're skilled and talented, you can provide a better-quality rough construction to slot those details into, but the sheer volume of the details is where a lot of that "last 90%" goes.
The secret of how to be miserable is to constantly expect things are going to happen the way that they are "supposed" to happen.
You can have faith, which carries the understanding that you may be disappointed. Then there's being a willfully-blind idiot, which virtually guarantees it.