Imagine if you took a person from New York City in 1850 and had them transported to modern day New York. Next, think about what would happen if you had that person try and drive a car? In 1850, New York City was one of the most technically advanced cities at the time. Even though the time traveler is sharp for 1850, asking them to drive is probably beyond their skill and comprehension level. How could you get that person up to speed the quickest to be a successful driver?
As a driving instructor, you could give them a basic briefing on what a car is, how to operate basic features and a few rules of the road. You can tell them that pushing the gas pedal will move the car forward and pushing the brake pedal will stop the car. After a quick 20 minute lesson, you hand over the keys and ask them to drive around the perimeter of Central Park. Do you think this new driver will be successful?
This scenario is much like asking a new developer to download, install and create a “Hello World” program for a particular technology. Can that developer be successful with a technology if it’s beyond their skill and understanding? This is something many developers do every day. They try to become familiar with a “new to them” framework or technology. Some developers will then put that technology on their resume after running through a simple “Hello World” tutorial. This is a disservice to them and potential employers. The experience gained with a “Hello World” tutorial isn’t enough to be an effective developer in the real world with that technology.
But you have to start somewhere right? Why not a “Hello World” program?
“Hello World” tutorials aren’t bad in the sense that they often are the best way to get you introduced to a new technology. The problem lies with stopping there and not understanding the steps of the tutorial. Getting a project to print out “Hello World” is not the point of the tutorial. Internalizing and understanding what is going on is far more important than seeing “Hello World” printed. Most developers don’t take any time or effort to do a deeper dive and understand what’s going on.
Is there a better way?
As you approach a new technology or new language, you need to develop a very curious mindset. Your goal is to understand each step of the tutorial. If you come across something you don’t understand, write down your question or thought. Later, come back to your notes and go through each one. Each question or thought might warrant a new tutorial or learning effort. Once you have an understanding of that subject, you can check off your note and move on to the next one.
After completing the “Hello World” tutorial and understanding each step, you are still far from finished. Even though the time-traveler learns what a gas and brake pedal can do, doesn’t mean they know how to really drive a car yet. The same goes for the technology you just finished a “Hello World” tutorial on. If you’re serious about understanding a technology, you need to take it from development to production with a small sample application.
There are a lot of ways to go beyond a “Hello World” tutorial. One logical next step is to create a CRUD (Create, Read, Update, Delete) application. Developing basic persistence operations will generally answer most development questions that will come up in a real world project. If you don’t have a sample application of your own to work on use something like a TODO app. A great set of examples of TODO can be found at todomvc.com.
Not only are these TODO apps great practice to implement and learn, but they are also great to compare various technologies side-by-side. When you move beyond the basic “Hello World” tutorial you’ll still want to write down any questions or thoughts as you work with more advanced features.
Don't Stop at Hello
One difference between an expert developer and a beginning developer is experience. The expert developer gained that experience by asking the same questions that you need to ask to fully understand the technology. If you never ask the questions and be curious, you’ll never progress past the basic use of that technology.
The person from 1850 ultimately could learn to drive a car given enough time and experience behind the wheel. You too can learn any technology if you spend enough time and effort at it. Don’t short cut yourself and try to cheat by simply running through the motions of a “Hello World”. Take your learning to the next level. You’ll become a better developer quicker by asking questions, being curious and stopping “Hello World” tutorials.