There is this push to have everyone learn to code. Frankly that is wrong. The issue is to have everyone learn to think. Take as an example UPS and their on-line system. Now if you have a delivery and a number for tracking you can go on-line and hold the delivery, for a fee of course, until a later date. Sounds good? No.
What they do then is hold every delivery, not just the one you asked and paid for and they then charge you this modest fee for each and every one. A massive amount you never thought about.
Then you try their on-line remedy. It comes back and says you cannot use them you must go back to the web page and use the command that got you there in the first place and thus an infinite loop.
The code is all correct. It does what some human told it to do. But, and this is the key issue, the human had no idea how other humans use the system. Namely the human did not think.
Coding is not what has to be inculcated in our students. Thinking is. That is the hard part. There are four parts to developing software.
First, the requirements. What do you want done and why.
Second, the design of the process to ensure it does what is required under all anticipated conditions and in the event it does not it hands the system to a human to remedy and then reiterates this back to the designers for a change.
Third, coding. That is the old typist role. Just type in the required steps.
Fourth, the fault checking. This is the hard part. You spend time finding all your mistakes; coding and logical. You seek all the things that can go wrong. Then FIX them.
Of course you then do this again and again. You need smart people, and it is often a burn out job. But if you want your business to succeed then you must do this. If you do not do this then you have a real problem. Look at UPS. In my opinion they are not only clueless but careless. Why the Post Office is even better, now!