by Logan Wright
A heartfelt letter to inspire the aspiring developer
I’m writing a letter to my friend. You should read it. He studies Computer Science, and he hates it. I build React Apps and I love it. I want him to love it too. First, let me set the tone with a little imagery.
I am writing to you in the dark, cluttered room of my father’s ‘mancave’. It’s hardly that. The only thing in here that would make it a mancave is his assorted pipe tobacco and hand-carved pipes. As I sit at my computer, I can hear crickets chirping in the night, and since it rained yesterday, the croaking of frogs is more of a roar than anything else. I am glad to grow up in an environment such as this.
Today has been one of those days. You know, the kind where your thoughts scream out at you from deep inside your mind. Those thoughts have been about a friend of mine. He studies computer science at a university hotter than hell itself, and where every Walmart greeter knows the name of the Rodriguez Seven (it’s an inside joke. Maybe you’ll be a part of one some day (and that’s a quote from The Office)).
He’s exhausted and limping to the finish line. Computer Science has held him hostage with the allure of a wealthy future. We all see the appeal. Who wouldn’t want to ship code for Amazon, or build React 17? In most of my dreams, I’m working with Will Smith as “Agent L”, writing React components powerful enough to reduce a lumbering cockroach-man to powder. We all have these dreams. But in the day to day, it is so easy to become bogged down with drudgery and learning.
I write this letter to my friend, and he knows who he is. I love him dearly and I hope that he continues on the incredible path of computer science before him. I invite the world to see what it takes to love (and excel in) Programming. Do take these words to heart.
Firstly, Walk a Path
No one will ever arrive at their desired location without knowing what that location is. Programming is no different. Every keyboard cowboy from Reddit to Facebook say, “You must learn X before you can understand Y”.
Whether on Twitter, or Stack Overflow, there’s more than enough controversy over what to learn. The university is accommodating to learning, yes. But the community is screaming at us that the university is not the final authority on learning how to code. The world of CS is so much broader than academia tells us, and it’s time for you to see it.
Let me help you figure out your path. What do you want to do?
You could learn Web Development
Look at the Google Doc’s suite. It’s a word processor in the friggin browser! That was nearly impossible 10 years ago! My Smart TV renders with Web Tech. Web Tech composes my favorite desktop apps. Half of my Android apps — drunken with Web Tech. Web Development is so much more than building websites!
You could learn Artificial Intelligence or Machine Learning
I’m not even qualified to be in the same room as anyone who does this for a career. I have friends building a project that compares songs for similarity. My phone recognizes my voice. Google knows when I drive to work every morning and that I go to the store on Saturday. Someone has the privilege of building that stuff!
You could build an Operating System
I would love to work for Red Hat some day.
You could build applications
How about ones that analyze data and help companies make major decisions about their futures?
You could build Open Source Software that helps people
I’m working on an Open Source Soup Kitchen Management tool right now. It’s not very glamorous and only a few people will ever know it exists. But I am building it. And it’s going to help someone. And no one can ever take that away.
Yes, my list might not make sense, but who cares! My point is that you’ve got to figure out something that moves you and run toward that direction. If you want to help kids learn to code, teach them and build a software that helps. After you start running, you can figure out the languages and the tools to help get you there. Chances are, you already know them. Which brings me to my next point.
Build Until Your Fingers Bleed
Okay, maybe they’ll bruise. I woke up with sore fingers once a few months ago. It was the best feeling I’ve ever had.
The greatest thing about programming is that you learn by doing Reps. Programming is NOT a spectator sport. You can’t just watch 500 Youtube videos and learn how to manage a Redux store inside of your React application. Trust me, I’ve tried. Programming must be learned through building.
You’ve got to build and fail.
Then build, and fail some more.
And then bang your head against the wall… and then fail some more.
And then have a major break through.
And then build a full application.
And then build another, but failing less.
And then another, with your fingers moving so fast across the keyboard that some girl at Starbucks confuses your thumb for Vin Deisel in FF7.
If you want to love programming again, you’ve got to build things that you love. I know it’s hard to go to class. I know it’s hard to write code when you feel like it doesn’t matter and that no one will read it. I know you feel like you can’t do this.
But listen to me, you absolutely can. You’re brilliant, man. People don’t just go into coding because “it’d be cool”. You did it because you’re an intellectual adept. You just don’t love it right now. If you want to love it, make something that you will love.
Build something as a birthday present to your little cousins. Build something to tell your mother that you appreciate her. It could be that it’s a phone app that just says you love her. Or maybe a Java application that sends texts messages with family inside jokes? Don’t build software for the rest of the world. Build it for you. You can do it. I’ve heard some of your ideas. Don’t be afraid to chase your dreams. Gandalf wasn’t, and he defeated the Balrog.
Trust the Process
What’s the Big O notation of a brute force algorithm? What’s the Big O notation of a merge sort? What’s the Big O notation of this split sort? Who cares, right! I know that’s what you’re thinking. But trust the process.
Regardless of what I believe about the university system, you’ve got to trust the process. It’s not about Big O. It’s not about Lex and Yacc. It’s about changing the way you think.
I want you to take a step back and look at what computer science is. It’s a crazy mixture of math, computer architecture, and algorithmic thinking! You’re incredible for even starting this journey, much less almost finishing it! When you take that step back, ask yourself why. Why does all this matter? Why Big O, why Algorithms at all?
Remember, you, a human, are learning how to communicate with a machine. You’re breaking down HUGE problems into tiny bite sized chunks and telling a robot how to do it. That’s all this is about. How do you get those tiny little web robots (in my case) or Java robots (I guess?) to do your bidding? If you can master this way of thinking, you can do ANYTHING you want to on the internet. I’ll say it again. You are being given the tools that will allow you to build anything. Anything.
The only thing you’ve got to do is trust the process. Do the reps. Get your fingers on the keyboard and put in the time. Look at how far you’ve come. Do you remember your first programming class? When you were falling asleep because it was so easy. But the next day, you peed your pants in class because an array was basically that giant dog that guarded the Sorcerer’s Stone?
Look at how much stronger you’ve gotten. Look at the picture a few paragraphs up. Your brain looks like that dude’s arms! And it didn’t happen overnight. You can do this. Trust the process.
Finally, Teach Someone How to Code
I love what you’re doing with those kids. Teaching them Unity and game development is a blessing beyond measure to them. Some of those kids are going to have families one day. And you cared enough about them to show them a future with programming.
Keep teaching those kids. But also, find someone else. Every semester, a group of new wide-eyed freshman walk onto that college campus. Find a small group of them and teach them how to code.
Of course, don’t just stop there. Teach them everything you’ve learned about life and friendship. But teach them. The knowledge we have within us grows when we have someone to teach. And when we share our passions, we find that we only burn hotter.
I have a few discord friends that ping me a thousand times a day asking questions about Front-end Development, Databases, and GraphQL. These new friends mean a great deal to me, and I’m going to make damn sure that they succeed as Software Developers. I know that you can do the same.
My friend, I hope this letter warms your heart and gives you encouragement to keep pursuing this field. You’re an incredibly talented young man and I’m excited to see what your future looks like. Please consider what I’ve written, I’ve been thinking about these very thoughts for over a month now. I’m sorry it’s taken so long to compose them.
And to you, reader. I hope that this brings encouragement to you. You CAN do this. You didn’t pick up programming by accident. You ARE smart enough. You ARE good enough. Yes, it IS hard. But I’ve found that in this life, if it’s worth having or worth doing, it’s not easy. Keep trucking along.
I remember a time where I felt like my programming journey was like wading through quicksand and that every article and video I watched only dragged me deeper and closer to my own demise. I look back on those days and laugh, what I thought was a giant hole of quicksand actually turned out to be the finest training ground a young developer could ask for.
To my friend, and to you, dear reader…
With much love,