Below is an article originally written by Chrissie Deist at PowerToFly Partner Braintree. Go to Braintree's page on PowerToFly to see their open positions and learn more.
Like many of the developers at Braintree, I didn't study CS in college. Instead, I stumbled onto an online Python course four years after graduating with a degree in economics. I remember the thrill of writing my first program, which not only worked, but actually did something useful. Admittedly, the "usefulness" of the program -- which found the most common word in a text file -- was debatable, but the experience revealed to me that tedious manual tasks can be accomplished with problem-solving logic and a few lines of code.
I recently attended a DjangoGirls meetup hosted by Braintree, where I spoke with a number of female developers whose experience was similar to mine. We all shared a passion for the problem-solving aspect of programming, but we had grown up thinking that software was the domain of the solitary geniuses who had been rebuilding computers and configuring servers since early childhood. Even until recently, I often wondered if I could ever be a "real" software developer because I didn't have the right background.
What attracted me to programming was its logic -- identifying a problem, then figuring out how to write code to solve it.
I quickly discovered, however, that logic is only one component of software development. In my first few months at Braintree, I faced a continual stream of terms and concepts that were foreign to me, but which seemed elementary to everyone else. Proxy servers, gpg encryption, database clusters, middleware, worker queues, continuous integration, ssh agents, program threads....¹ I was fortunate to have coworkers who responded to my questions with patience and understanding instead of open shock at my ignorance. But even their helpful explanations sometimes left gaps in my understanding. I often turned to Google, which led to Wikipedia articles containing even more terms I didn't know, and a seemingly never-ending "wiki-hole." At times, I took this struggle as a sign that I didn't belong in the software industry.
I know that this feeling of imposter syndrome is not unique to female developers, but because women are less likely to have been encouraged to explore programming at an early age, they are more likely to enter the field unfamiliar with fundamental concepts.
Braintree is committed to breaking down the barriers that keep women out of tech, so I share my story with the hope that it will encourage women who might otherwise think they don't "have what it takes" to be a developer. An innate understanding of the software ecosystem is not what makes a great developer. A love of problem-solving and the willingness to work through difficult concepts, to ask questions, and to be honest about what you know and don't know -- these are the essential qualities of great developers.
I also write this as a call to more senior developers. When working with less experienced developers (male or female), share not only what you know, but also what you once didn't know. One of the most helpful things I was told in my first few months at Braintree was, "Don't expect to feel like you know what you're doing for at least six months. Maybe a year." Knowing that I was not alone in my confusion allowed me to ask questions and make mistakes, and to do the best I could within the boundaries of what I knew while working to push those boundaries further. I can easily imagine quitting if not for the encouragement of those around me, the positive feedback on the things I was doing well, and the reminder that the things I had yet to master took time.
I've now been at Braintree almost a year. I still ask a lot of questions. But increasingly I find myself in conversations where I'm using and understanding language that would have been gibberish to me six months ago. And the biggest difference isn't just in terms of what I know, it's that the new questions I have no longer make me question whether or not I belong here.
- ...SSL certificates, SDKs, ports, sockets, deploys, cron jobs, Redis, virtual machines, builds.