Dear new developer,
I remember the first time I pulled up MapQuest in the 2000s. I looked for directions to a place I’d never been. A custom map popped up, which was cool. But even more impressive was the turn by turn directions. I printed them both out and followed the instructions.
That felt like magic.
I remember the first time I hailed a Lyft. I installed the app on my phone, entered a credit card number, granted the app location permissions, and put in my destination. I could see a car on a map as the driver drew closer and closer to me.
That felt like magic.
I remember the first time I wrote a perl script to parse a bunch of jokes from an email folder and turn them into a set of web pages. Code plus text turned into hundreds of linked web pages funny jokes. More amazing, they were available to anyone, anywhere in the world.
That felt like magic.
Building quality software feels like magic. Using well-built software feels like magic.
But if you are talented and lucky enough to build it, you know that beneath the magic, there’s nuts and bolts.
CSS, HTML, JavaScript, HTTP, APIs, JSON, databases, queues, CDNs, tests (hopefully) and plenty of code. With any serious application, there’s also the effort of determining what to build. Don’t discount that–aiming a ship to the right destination is at least as important as building it.
Remember that as you navigate the world of software. The ability to make an API call and send a SMS message, or charge a credit card, or order a pizza, these all feel supernatural. In reality, these systems are built one step at a time with technologies and software you can learn and master. There are emergent properties in some software systems, but they are still, at their core, built on decade old mundane technologies like HTTP and relational databases.
Funnily enough, at the end of the day, tech is rather boring. The amazing application you are using? It is actually abstractions, piled on top of each other, working with compute, UI, network and storage, to deliver an experience to your end user.
But some days, it sure does feel like magic. That’s one of the joys of being a software engineer.
Sincerely
Dan