Every tutorial I've read for the last 30 years starts with the infamous -Hello World- example. This could be one of the reasons we write crappy software.
"Hello World" is the first program we make in every language.
We can measure the complexity of language by counting the lines it takes to produce the desired output.
We can also time how much does it take to a newbie to figure out the solution (this is also known as "Time to hello world" (TTHW)).
These two metrics are uncorrelated to productivity.
Many sites compile different Hello World programs in a lot of languages.
The Problems
The Hello Word example has a lot of problems introduced early when developers are making their first steps in programming.
1- It uses globals in many languages. Global functions are a code smell. Teaching them to newcomers in theirs first example is conflicting.
2- Hello World yields side effects (on the console, file system, printers, etc.).
3- We write the code, and we cannot test if it is working. We can manually check for the output, but our software cannot assert it our outcome was right.
4- If our HelloWorld works today we cannot ensure it will keep working tomorrow.
The Solution
All developers should start with:
function testFalse()
{
Assert(1==2)
}
Advantages
1- We start with a broken test. This is the first step to start developing software according to test driven development technique.
2- We introduce developers to a Continuous Integration/Continuous Development pipeline with their very first instruction.
3- We use no Globals or side effects.
4- We show the importance of early testing.
5- We stress how important is to have working code and automated tests from the very first second.
Conclusion
We need to stop writing HelloWorld as the first sentence of a language.
Next time you come across a new fancy language, please start with a broken test.