The past several months have been an exciting and stressful time for me. My wife gave birth to our first child, I started a new job, I started an online Master’s program, and I gave my first talk at a conference. Naturally, I needed to take a break from writing to focus on more important parts of my life. Now that I am through the first semester of my online program, I have free time again to focus on writing and contributing to open source projects.
In this post, I would like to explore an idea that first struck me back in the summer. I was assisting others in
switch statements eluded me: do they use case equality
like the back of my hand, and for a split second I could not remember a critical part of a control flow structure.
Quickly reminding myself of case equality, I was able to easily answer the other person’s question. However, this
occurrence deeply affected me, leading to this tweet:
Give back and educate. Forces you to really understand what you claim to know and challenges your currently accepted ideas. #programming— Jeremy Fairbank (@ElPapaPollo) June 28, 2014
This idea has stirred in my mind since that tweet, and speaking at and attending the recent Nodevember conference gave me the impetus to finally expound upon it. I feel that this concept transcends more than just sharing what you know and is about building an accountable and edifying community. We all have unique perspectives and experiences to share, and we can all learn from one another and our own transparency. Given our industry, I think that it is appropriate to view this as making yourself open source to the rest of the community. I hope this post serves as an encouragement to everyone in our field and opens the door for every voice, regardless of seniority or gender, to be heard.
On Knowledge and Experience
Do you realize that you know some cool stuff? You are a programmer and can affect electrons in amazing ways! It does not matter what your seniority level is; you already have a repertoire of knowledge and experience from which you can create fascinating programs and tools. Do not kid yourself!
And yes, you know so little. I always feel disheartened when a junior developer laments knowing so little and stands in awe at the level of knowledge possessed by senior developers. Sometimes the biggest kept secret is that we all know so little! We have all barely scratched the surface. There are new programming languages, new frameworks, and new approaches to problems and algorithms. We will never grasp it all, but we grow each day.
How do we grow? Through an open community that is constantly willing to share new discoveries and share help without judgment. We are all just making pull requests against the biggest repo of programming knowledge. So, start making some pull requests. I guarantee you that someone does not know what you do. And vice versa. How will anyone ever learn if no one ever shares his/her knowledge? Sharing what you know may be the final piece someone needs to reduce a problem to a simpler implementation.
Even if you do not have the exact knowledge or experience for a particular problem, I am sure you have an opinion or an idea on how to solve it. Share it. Solving programming problems usually starts with a simple plan that does not depend upon the details of which language or technology. We developers tend to take a tunnel vision approach to programming. When we think of one approach, we typically stick with it, but another set of eyes might be the fresh perspective to provide a better solution. This type of collaboration is imperative, especially for open source projects!
As we become transparent about our knowledge and ideas, we need to be open and supportive of one another. Yes, that junior developer’s idea might be absolutely terrible or someone’s excitement over learning HTML might seem silly. Do NOT treat that person flippantly or beneath you. If someone has a bad idea, then patiently show and help him/her understand a better way. Congratulate and encourage new learners. You were there once. The last thing we need to do is discourage others from cultivating a love and passion for computer science. They could be the ones to create new algorithms, frameworks, or languages that push forward our field.
Over the past several months, I am sure almost everyone has seen the graph above. I think this resonates deeply with the issue of a closed-off community. I do not doubt that several factors are at play with the decline of women in computer science, but we cannot deny that the most significant portion of the problem is rooted in sexism in our field (whether from colleagues or advertising).
Why are we harassing and discouraging women in tech? Have we forgotten our history? Many of the first programmers were women! The programming language Ada was named after Ada Lovelace, arguably the first computer programmer. She envisioned the potential of computers back in the mid-19th century. Many women helped program the first computer to aid in ballistic calculations during World War II. Grace Hopper, a remarkable woman in several rights, created the first compiler and is credited with coining the term “debugging.”
There is a lot to be said on the topic of women in tech, but I do not have the objective data to back up all my claims or the time to give this topic a proper treatment in light of the overall theme of this post. (However, please do not misinterpret my lack of detail as a flippant treatment of the topic.) Suffice it to say this is a serious issue and indicative of closed-source communities. Obviously not everyone in the community is misogynist and exclusive, but there is no denying this problem still exists. Being open-source is not only sharing your ideas but considering others’ ideas. Therefore, open your mind and allow your ideas and perspective to be challenged by other people. Give them space to explore and change the world with you.
On Your Time
In light of the topics I have briefly explored, I feel that to become “open source” we must open source our time. We cannot begin to share our knowledge and build an edifying community if we do not offer up our time. Join a local user group, start a blog, give a talk, or volunteer at a coding camp for kids. Such altruistic endeavors have no doubt helped form many great programmers and helped build a vibrant programming community.
Coincidentally, you will find that your own knowledge will grow throughout your efforts. Countless times when I have explained a concept, framework, or language feature to someone else, I discovered that my own understanding of it expanded. If someone has inquired about something I only understood at face value, then I have been forced to dig deeper, so I can better explain it to him/her.
Happy New Year, Open Source You
So, start the new year open sourcing yourself. You owe it to the community and yourself. I promise you will not regret it.
If this topic deeply interests you, I encourage you to share your own experiences or ideas in the comments. Here are a few articles that I found useful in formulating my ideas:
- Egoless Programming: You Are Not Your Job
- The Ten Commandments of Egoless Programming
- When Women Stopped Coding
- Technology’s Man Problem
- Women in computing