Educational books like this are good, but they aren’t everything. You also need to utilize websites for coding challenges, online courses, video tutorials, friends, a social media presence of your own, and more. See appendices B, C, and D at the end of this book for a compendium of online resources to help you get started with your online presence.
If you haven’t gone to college yet, I highly recommend majoring in computer science. If you’re already in college, you can either switch majors or just take up CS as a minor, depending on how far along you are in your degree. But even if you’re either unable to go to college (such as for financial reasons) or uninterested in studying computer science in a formal setting, that shouldn’t stop you from becoming a software developer. I also don’t want people to get the wrong idea and think you have to be college-aged in order to learn software development. You can pick this up even when you’re older.
There are plenty of great resources for learning things online, like Youtube, Udemy, freeCodeCamp, CodeChef, Leetcode, and Coursera. I recommend starting with Youtube tutorials and Udemy courses. Two good courses on Udemy include GitHub Ultimate: Master Git and GitHub and Complete Python Bootcamp: Go from zero to hero in Python. They will run you about $10 each, and they’re totally worth it. Another attractive online learning option is MIT OpenCourseWare, which features classes called MOOCs, or Massive Open Online Courses, which are free to enroll in. However, one criticism of MOOCs is their low rate of completion.
That being said, people who spend too much time on LeetCode or HackerRank become really good at technical interview questions and not very good at actual coding. It’s good to do some practice interview questions, like the algorithmic problems on LeetCode, but don’t spend too much time on it. Make a personal website. Make some apps. Learn about real-world tech stuff too, not just algo questions.
I don’t recommend coding bootcamps. They are usually unaccredited, expensive for what you get out of it, only teach the basics, and vary wildly in quality.
Aside from online resources, there are in-person ones too. Some online tools can help you meet people in person to develop apps or just network or view presentations about fresh tech topics.
Some sites for meeting up with people include Meetup and Eventbrite. To a lesser extent, you can use Facebook. But Facebook seems to be in continuous decline these days. You can also look online to see if there is a LUG, or Linux User Group, in your local area. There are people at LUGs who help each other learn about Linux, and you can make a friend or two in the process.
Makerspaces, also called hackerspaces, are also good places to meet people. They are more about using tools and machines and having a space to work on projects though, but there will still be opportunities to meet people.
Toastmasters is an incredibly valuable asset with plenty of local meetings throughout the world. It can help you hone your public speaking skills while also helping others with theirs. Toastmasters meetings give attendees different roles. Sometimes people prepare speeches, other times you’re improvising. You might be given the role of a counter, who keeps track of the number of times a speaker says “uh” or “um” during their speech. Someone else is in charge of keeping track of time. If you’re not great with public speaking, it’s still a good group to join, because it can help you get better with an important life skill, even if it is something that many people dread.
Hackathons are typically 24-48 hour events where people get together to work on tech projects in small groups. You are not allowed to work on something that you already started before you went there. You have to start and finish the project all in one go. I’ve made an app at a hackathon before, and it was enjoyable. You get to meet lots of people, learn new tech things, and there are prizes for the top projects. You typically make an app, sometimes with a theme, and then at the end, you show it off to judges. People overemphasize the closing ceremony and all its accolades, which I’m not very concerned with. I think the experience of doing a semi-improv coding challenge and then being able to potentially meet with local recruiters is much more valuable.
Hackathons are a mixture of being convivial and professional. It’s a time to hone your coding skills, get group project experience, and have fun. Moreover, depending on the event, it can also be a time to show off what you can do to employers who might have representatives at the event, scouting out future talent and handing out business cards. You might have your qualms about going to a hackathon because maybe you don’t think you’re talented enough and that everyone else will be smarter, but just go.
Hackathons aren’t about security-related hacking. They mean hacking together a project in a short amount of time. But hacker conventions are the kinds about security — hacking, pen testing, malware analysis, security research, that kind of thing. Some people suggest that you should be careful about the electronics you take with you to a hacker convention. Sometimes, people will try to hack the devices that you bring with you. Some people even take burner devices that they throw out after the event is over. Hackathons don’t require the same level of paranoia as hacker conventions though. Some examples of hacker conventions include ShowMeCon and Defcon. Even if you can’t make it to a convention in person, you can view the talks on Youtube. Just look up Defcon presentations. They are fascinating and educational. Some of them might go over your head, but they’re worth checking out regardless, even if they are sometimes about very complicated security topics.
An event similar to a hacker convention is a CTF, or Capture The Flag. The objective is to hack something, and get access to something like a key.txt file or something to prove that you did it. A CTF is a fun and legal way to practice your hacking skills, because you’re attacking servers at an event where you’re allowed to do it and the objective is to hack it. This is not the same as attacking some random website that you don’t have permission to mess with.
My advice for hackathons is simple: don’t be aloof. Meet new people and find a project to work on. The event will be over before you know it. Hesitation can ruin it. In many cases, if you’re not in a group, odds are that other people there aren’t in groups either, and it’s okay to meet people or just join. Just ask. People go to these kinds of events to be open-minded and meet new people, so don’t feel like you need to know people there already. You can also arrange groups on social media, such as Slack or Reddit, but I’d suggest meeting new people. If your group is comprised only of people you already know, you’re doing yourself a disservice. Be amenable with regard to tech choices and project direction. If you know multiple programming languages and someone in your group only knows one, use that language. Try to find common ground. There’s so little time that you can’t afford to be irresolute. Just pick something everyone can contribute to and work on it.
Sometimes, it can be stressful when you encounter a bug and everyone’s sleep-deprived (very little sleep happens at hackathons), and the clock is ticking towards the deadline. But even so, don’t lambaste people during hackathons even if they’re not doing the right thing.
A successful hackathon will leave you feeling jubilant. You’ll be glad you went. After my first hackathon, I felt sad that I didn’t start going to them earlier in life.