It is pretty stereotypical of programmers in particular to have some sort of game-changing idea, drop out of college, and start a company. Well, college is only four years (most of the time) so statistically it is unlikely that this idea will come to you in college. Obviously, if you are a professional and have an idea like this, then you just quit your job and start your own company or something. But “quit your job” does not have the same ring to it as “drop out of college”. So this got me thinking about what you should do if you have an idea like this while in high school… should you, dare I say it, dropout of high school? Let me give you some time to finish gasping… are you done yet? Great, let’s move on. Honestly, if you were surprised that I just mentioned dropping out of high school, then you clearly didn’t read the title. To answer my own question: NO YOU IDIOT, DO NOT DROP OUT OF HIGH SCHOOL. Sorry for calling you an idiot and yelling at you like that. Sometimes I really lose myself.
I hope most rational people would agree with me when I say it is a bad idea to drop out of high school. It is just common sense. Honestly, the title of this post is pretty far off because I actually want to talk about how I think students with an interest in programming should approach high school. But obviously that doesn’t have the same ring to it. So sorry for the clickbait (except that I’m not sorry).
Now I know it is becoming a lot more popular of a topic in high schools and more classes are being added, but when I graduated in 2017, there were only 3 programming classes for 2000 students. If you are anything like me (which I really hope you aren’t for your own sake), you were/are super excited to get to high school and have access to the miniscule amount of CS classes available. This is a good feeling to have. It means you are excited about the possibilities of your desired field and will be motivated to learn. Despite this, (I really hate to burst your bubble here) you really won’t learn anything substantial from a high school CS class. Now obviously every high school is different and before you yell at me that you took a class on compilers or the linux kernel or something in high school I want to clarify that I am talking about averages. Even if your school does, MOST schools will not offer anything above introductory programming classes. When I was entering high school, I was highly motivated to learn programming, had quite a bit of programming experience already (for my age of course), and was pretty excited to just be able to talk about it with someone other than myself (I wish that last part was a lie).
As I said previously, most high school programming classes are introductory ones. Students tend to learn the most from them when they have no background whatsoever and they are motivated. However, if you are coming into it with any sort of experience whatsoever, you are probably going to be bored when the teacher spends a week going over if statements. I WILL say it is nice to have a formalized learning plan and class. When I was learning programming on my own, I was mostly watching youtube videos and looking on documentation websites. I didn’t really know how much I knew because it wasn’t a formal education. Taking programming classes in high school gave me a formal self recognition of what I knew. Classrooms are also great (no matter your experience level) because they provide an opportunity for questions. Now obviously, you can ask questions online too, but if it is a stupid question, then the responses will probably make you want to cry. Teachers are there to help each student understand and (at least in my experience) are welcoming to all questions (even if they are stupid) unlike Stackoverflow. Even if you have programming experience and you ask the teacher a question that they don’t know, it will spur a give and take conversation where both of you will try to figure it out. Most of the time, this will result in you learning even more than you asked for (not even an intentional pun lmao, I caught that one when I was editing). Don’t get me wrong I love the opportunity for questions, but it is a double edged sword. Chances are only a small percentage of the students in the class will have some sort of prior experience with the material. As a result (like with any high school class) people will be asking a lot of stupid and repetitive questions that will bring the class to a grinding halt. This can limit the amount of material that the teacher can cover, not to mention being really boring for someone who already gets it. If you do find yourself in this situation, try to make the most of it! Offer yourself as another avenue for confused students to ask questions. It can be hard to do this without sounding like a know it all, so instead just show the class that you get it by asking “reach” questions and making your projects/presentations stand out. Now I want to clarify here, do not ask “reach” questions that you know the answer to, because trust me, that will also make you sound like a know it all even if you don’t think you do. Also try to keep the reach questions as on topic as possible. If you are unsure that you can formulate good “reach” questions that will not make you sound like a know it all, then DON’T TRY. Just stick to wowing everyone with your projects. You would be surprised how much you can end up learning by teaching. Going into my classes in high school, I was also looking forward to finding students who were as motivated as me to learn computer science. Unfortunately I was misguided and didn’t end up finding anyone, but your mileage may vary. You have to assume if you are interested in programming and are taking the class as a result, then there could be someone else that had the same idea!
Obviously there are a ton of pros and cons to high school computer science classes and really any class that you are interested in. I want to take the rest of my time here to go over some action items that I think every high school student (interested in CS or otherwise) should take seriously. Firstly, take all the computer science classes that you can. Don’t rely on them to get good at programming because like I said they are mostly introductory. Instead, focus on collaborating with others. You will probably work on a lot of projects in a group or individually. For individual projects, wow the rest of the class so they come to you with questions. For group projects, focus on collaboration. Nothing ever gets done in the real world with just one person. Gaining experience very early on working with a team will get you used to it and set you apart when you are applying for internships and jobs later on. Facebook for example employs thousands of engineers divided up into hundreds of teams. Do you think they would be more likely to hire someone who mostly has experience working in a team or individually? See what I mean?
Finally, don’t just care about the classes that you are interested in. If you like programming, then don’t avoid your english homework. This was a big problem I struggled with in high school (as you can probably tell by these posts, I didn’t pay much attention in English). I hated writing, english, languages, and pretty much any other non-stem related field. So I didn’t try as hard. And honestly, I think I have suffered because of it. Almost every subject will help you with whatever career you choose. Specifically for software engineering, here are some examples if you don’t believe me: English/writing/grammar will help you with writing reports, documentation, comments, and even variable names. Knowing more than one language will help you be flexible in where you can work. Math is the foundation of computer science so this is obviously helpful. I had a hard time coming up with something for science because the application is not as important. But the fundamental ideas of using formulas and systematic processes to solve problems are the foundations of all engineering fields. Finally, history. For the life of me I can’t think of anything useful in computer science from history so you have my permission to sleep through that class.
Basically, go to high school, don’t drop out, and do your best in every class while taking classes that you are interested in. it took me a long time to come to that conclusion which is pretty sad because it is pretty standard advice. I don’t want to parent anybody here (because I would be a terrible parent) but I hope you will take this advice to heart. I had my mom read this too and she agrees with all my points here. My mom is like one of the smartest people I know and is great at parenting (I mean, how else did I turn out so great?) so you know that my advice is sound.