The one thing that I wish I had known about computer science (and programming more generally) earlier is that it is a profoundly creative and interdisciplinary pursuit. What you choose to apply your problem-solving to is something that demands great ingenuity in how one transforms patterns of the physical world into a digital distillation. Coding is a process of both synthesis and genesis; not only is it guided by rules and syntax, but also something you create from scratch (like you would with a painting or a novel).
As someone who loves the arts as much as the sciences, I find myself like a child at a candy store--overwhelmingly excited by the possibilities of what programming can do. It took me awhile to get here, though. My interests in everything as a kid made it hard for me to imagine sticking with one discipline or career. In the midst of this indecision, I opted for something that seemed like the conventionally safer path: finance. Ultimately, this proved to be an uninspired life and I decided to switch careers before my youthful ignorance/bravery ran out. I fell in love with technology for its lack of fear for unimagined futures and its ability to sit at the intersection of many fields. To gain credibility in a field that I thus far had little formal training in, I decided to take up programming.
But even then, the story took some turns to get to where I am now--which is a few days since my graduation from Hackbright Academy (an engineering fellowship for women based in San Francisco) and the start of my journey as a software engineer. Although I decided to take up coding and found that I loved it, I felt unsure about pursuing it full time until I had the fortune of meeting someone at Hackbright who believed in me enough to talk sense into me and give me more guidance. The hesitation was rooted in a number of things: it seemed late and risky to switch into such a technically rigorous field; it seemed worlds apart from what I had known in my previous career; and I didn’t know if I would be “good enough.”
I think these are the same reasons why many people, women especially, do not pursue computer science. I wish that these stereotypes were not so pervasive--especially at high school and college levels when kids are choosing what to do. I don’t believe that everyone should be a software engineer or that all of the world’s problems could be resolved by code, but I do wish that decisions over majors and careers could be made with more information (like the profound creativity of computer science) and less stereotypes. I also wish that we spent more time making sure that women do not rule themselves out in the running based on some malformed self-perception, and that people had earlier exposure to the field to form their own opinions on it.
But it’s never too late. Many people have asked me where to get started on programming. With the abundance of open courseware and MOOC’s these days, the honest truth is that you could probably start anywhere. Find a few different recommendations from various friends or online sources, then stick with the one that works for you. The key here is to stick with it; programming takes time, but it should take time given how little exposure most of us had in our earlier years. It’s like trying to learn an entirely new way of thinking (imagine if you never learned to speak or do arithmetic until you are an adult). It will take time; but what will shock you is how fast you will ramp up once you are used to that new mental model.
Although self-learning is great, if you like coding and want to pursue it further than a hobby, go out there and engage with others who are doing the same. Whether you’re chatting up a novice or a professional programmer, these interactions will transform your involvement and learning to the next level.
In addition to Hackbright, I’ve also attended around 10 programming-themed meetups over the past year. The fun wasn't so much for the technical content as it was to be surrounded by people who wanted to learn the topic as well, and to be exposed to other working engineers. The one thing I really love about this field is that people are really interested in learning all the time (and quite often in topics not restricted to computer science and engineering). Its rare--and refreshing--to see such a large concentration of this enthusiasm.
Many people talk about programming as being incredibly self-empowering--that the aspect they love the most is how they are able to build anything for themselves. That much is true, but the even better part is how you will also be able to offer that ability to anybody’s idea. Code is not everything, but an application can serve as the careful and intelligent distillation of someone’s vision that others can then further rally around. It is an incredibly giving and powerful skill that everyone should be entitled to have.