paint-brush
We Should Get Rid of "Hello, World!" Forever💩by@mcsee
458 reads
458 reads

We Should Get Rid of "Hello, World!" Forever💩

by Maximiliano ContieriJanuary 30th, 2021
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

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.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - We Should Get Rid of "Hello, World!" Forever💩
Maximiliano Contieri HackerNoon profile picture

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.

Helloworldcollection

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.

Code Smell 17 - Global Functions

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.

How to Squeeze Test Driven Development on Legacy Systems

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.