I want to talk about your scope of influence as a Software Engineer and how to expand it.
Your scope of influence in your first piece of software is a function. You are parachuted in a well isolated world and are told to implement a simple algorithm. As you find your marks, you develop a component. Eventually they let you take on a small project. The entire company now knows about you. You switch jobs and become a familiar face in the city. You talk at a big conference and people from all over the world follow you on Twitter. You might, one day, invent something major and make an impact on humanity. Your life as a Software Engineer has just flashed in front of you.
I am somewhere in a shade of green in the graphic above. Crossing the lines between these circles is a difficult affair. If that is part of your goals, I want to suggest a few practical ways of expanding your scope of influence. Circles, that I feel I have crossed.
From Component to Project
Your component can be thrown away and replaced by another in no time. So can you. In order to cross this chasm, your commits must have global project impact.
Start with trivial tasks of standardizing the number of white spaces or tabs or by removing trailing spaces after meaningful code. Touch as many files as you can. I used to make commits of thousands of files because I was irritated by the lack of periods in code comments. Am I crazy? The truth is that I was terrified about modifying so many files at once and that prevented me from refactoring large chunks of architecture that was very broken. So changing whitespaces or adding periods was a useless exercise that helped me. When you’re comfortable with modifying code left and right, find a major piece of infrastructure to rip out and replace by something better. I remember swapping a C++ core library from underneath a huge system, a seminal moment.
From Project to Company
Nobody knows who you are until you’ve built something that many people want. In order to cross this chasm, seek a need that goes beyond your team.
Around 2001 I needed a tool to send a massive amount of e-mail to stress test some service. I couldn’t find a decent one, so I wrote something new. I put it on an intranet site and kept updating it. Eventually a lot of people with similar needs in the company used it. Then I started another larger tool to help my team with our complicated builds. I made an intranet site for that too, and it took off. Six months later I was doing that project full time with executive support and a team of five developers.
When building something that your entire company needs you learn much more than code. You have actual customers and you suddenly find yourself needing to talk to people, presenting the project to them and arguing with skeptics. Working with people is hard and providing a useful service within a corporation is a good place to start.
From Company to City
You’ll find yourself solving the same type of problems as your friends working at other companies. In order to cross this chasm, organize a visit to a friendly business. Go with a million questions and drag your fellow coworkers. Bring pastries.
Every time I lift my head from the computer and visit another tech startup in NYC I come out pumped. I learn so much and meet new Engineers! The first company I visited with my current team was Foursquare about a year and a half ago and the last as of last week was Rent-The-Runway. I met dozens of new techies in between. Every single time, by brainstorming ideas I changed my mind on how to build something or at least it made me think.
When you have built a solid network that includes technologists from other companies, you have crossed this chasm. It will help you hire coworkers and find a new job. You’re no longer behind artificial corporate barriers, you’re free.
From City to World
What did you do when you crossed the chasm from project to company? You sought a company-wide need and made a solution public within the walls of your business. Time to do it again, but in public. Scared of so many eyes? The truth is that nobody cares until you build something really good. So my philosophy is that anything that is not core intellectual property can be open-sourced and is always a great learning experience. When you build something good, you’ll remember the moment when a developer from another continent makes a pull request into your project on Github!
You must also write. Start a technical blog. And don’t forget to give a 3 minute lightning talk about your open-source project at a meet-up. Standing and talking in front of people is hard, but they need to put a face to your name. Slowly graduate to big conferences. On to conquer the world!
World to Humanity
Don’t ask me. Most people that had an impact on humanity have written books, given TED talks and won Nobel prizes. Honestly, I have no idea and am certainly very far from any of these. Help?