The most sought-after candidates in the world today by companies like mine are people who make computer software - there's a shortage of talent.
Microsoft knows that reliable software is not cost effective. According to studies, 90% to 95% of all bugs are harmless. They're never discovered by users, and they don't affect performance. It's much cheaper to release buggy software and fix the 5% to 10% of bugs people find and complain about.
Software breaks before it bends, so it demands perfection in a universe that prefers statistics.
When someone builds a bridge, he uses engineers who have been certified as knowing what they are doing. Yet when someone builds you a software program, he has no similar certification, even though your safety may be just as dependent upon that software working as it is upon the bridge supporting your weight.
Adjusting to the requirement for perfection is, I think, the most difficult part of learning to program.
Software is different than other products um, partly because it's, it's not physical and, and partly because of its complexity. You can express in software millions of different cases and making sure that you handle all of them correctly is extremely difficult.
Accidental stacks considered harmful.
The fundamental problem with program maintenance is that fixing a defect has a substantial chance of introducing another.
There are two ways to write error-free programs; only the third one works.
Simply put, when you have very large pieces of software, most of the tools look at the individual lines of code as text. It is often extremely powerful to look not at individual pieces of code but at a system as a whole.
First, I'd like to see the basic tools such as compilers, debuggers, profilers, database interfaces, GUI builders, CAD tools, and so forth fully support the ISO standard.
Most of the effort in the software business goes into the maintenance of code that already exists.