It’s official - you and your good buddy, Steve Steveington, are starting a new company together! It’s going to be a rip-off of Craigslist, but with lots of extra hidden fees.
You’re very excited. You’ve been learning programming for a while now. You’ve completed all the introductory tutorials you can find, and you feel that you mostly understand how to piece together small-to-medium programs. But you’re not sure how you’re supposed to keep getting better.
To get over this hump, you’ve been working through a delightful series of blog posts called “Programming Projects for Advanced Beginners”, written by a charming and handsome man whose name you can’t remember right now. Richard Horpton? Remus Hornthorn? Something like that. Who cares. Anyway, these projects have guided you through the process of writing some really neat programs (you just finished writing an unbeatable AI that plays Tic-Tac-Toe) without actually telling you what to do. The projects give you some prompts, but not too many, and you’ve had to figure out all the hard bits yourself. You’ve had a great time and learned a lot, and they’ve been a great help in acquiring the skills that have made your good buddy, Steve Steveington, want to build a Craigslist rip-off with you.
But you’ve always had the nagging feeling that even these delightful projects weren’t enough. They didn’t feel like accurate simulations of the kind of code that you’d have to write in your first programming job or when you started building your first rip-off of Craigslist. Once that happened there would suddenly be networks and APIs and libraries and all these other words that you understand a bit, but not enough to actually do anything with them. People keep telling you that writing the systems that power Facebook is basically the same skill as writing a program that prints ASCII art to the terminal. And they’re partly right. But you’re also partly right when you suspect that there are a lot of industry patterns and practices that you can’t learn solely from writing programs that make beautiful photomosaics.
That’s why you’re so excited for Rupert Herpton’s new Programming Projects for Advanced Beginners series. In it, he guides you through writing and understanding the types of systems that you might have to deal with in a programming job. He helps you build and understand login systems, APIs, databases, webhooks, queues, and a wide range of other real-world concerns that power the enormous web apps that you use every day. As always, you get some hints and guidance throughout the projects, but you have to devise and write all of the code yourself. This means that you can complete the projects using whatever language it is that you happen to be learning.
You figure that you can use the ideas and patterns in the projects to power Steveslist.
In the first project in this series, you’re going to write a user login system, where you store and validate credentials using a database and industry-standard cryptography. You don’t need to know anything about cryptography or maths in order to work through it, and by the end you’ll understand how real-world companies handle and secure their users’ passwords.
You can’t wait to show the Stevester once he’s out of his meetings. He’s been talking with Silicon Valley’s most unscrupulous investors. He feels like he’s been spoilt for choice and you should have
a slush fund seed capital soon.
You’re pretty excited.