That's it, my time as a Hacker Schooler is officially over. I've spent an exciting three months in New York, met plenty of awesome people, discussed many interesting ideas and, above all, wrote A LOT of code. Here are some things I've learned about myself while being there:

  • My programming is actually not that bad. Before HS, I didn't regard myself as a "true programmer", mostly because I've never had any formal education in computer science or software development. Spending three months at HS, reading a lot of code from professional developers and working with other programmers taught me that my own coding is really not that bad.
  • There's much more to programming than programming. Writing clean, efficient and maintainable code is important, but there's so much more to being a successful software developer: Communicating effectively, knowing ¬†exactly which problem you're trying to solve, appreciating the work of others, accepting criticism and being able to criticize constructively, and above all, constantly keep learning and having a growth mindset .
  • Programming a lot won't necessarily make you a better programmer. While it's true that there cannot be mastery without practice, just churning out more code every day will not necessarily make you a better programmer. To really become a better programmer, you also need to constantly monitor your programming habits, identify bad ones and replace them with better ones. Personally, during my time at HS I ¬†got rid off my bad testing habits (
  • I don't like pair programming. There, I said it. Coming to HS, every facilitator and alumn advised me and my fellow batch-mates to "to pair as much as possible". So, naturally, I eagerly followed this and paired up on various programming problem with people of different skill levels, but I really didn't enjoy it much. Personally, I prefer to discuss ideas and possible solutions with people before I start to code, and I equally enjoy having my code reviewed early and often, but I just don't see the value of a "co-pilot" reading and commenting on my code while I write it, or me acting as such a "co-pilot". That said, I think pair programming can still be useful in small quantities, i.e. if you want to demonstrate a technique to someone or quickly try a new idea, I personally just wouldn't want to do it all day.
  • Persistence is more important than genius. In the software world, especially in the open-source community there are a lot of myths of the "genius programmer" that, in a streak of ingenuity, writes an amazing piece of software. The truth is, although talent and creativity is important, the most distinguishing factor of people that have built large open-source projects is that they just keep working on it! Most projects have amassed thousands of commits over multiple years of work before they caught on.