Dr. Neil's Notes
General > People
Working Alone With Others
Through my career I have worked from home, on big company campuses, in small start up offices, and mid-sized companies. In my first software development jobs I worked from my bedroom, and then when I made a little more money, from a home office. Some of the companies I worked for did have an office, I might visit once or twice a month. Then I worked for a couple of mid-sized software companies that had an office, and an expectation of attendance, I would usually find hours that suited me, that often involved very early start times, and then getting out before the traffic got too bad. I also worked for several start-up companies, they often started in a room rented in a bigger office, and built into something bigger, having offices of their own. While I would be in the office during 'office-hours', a lot of the work I did was from my home office. In some of the much larger companies I worked with, the massive sprawling campus would provide a space to work alone, and places to work with others.
I have stated numerous times in my Notes that software development is a team sport. To build software products to scale, that are going to have an impact, requires a lot more people than most people expect, or realize. There are a very few exceptions to this rule. However, these exceptions can lead some people to believe an individual can deliver a fully working software product that has impact.
It takes an insanely smart, and motivated, person to achieve this. Occasionally, you find a person who is insanely smart, and motivated, working in a small team, and feeling as if they could be doing everything. This is the classic example of the 10x (they are ten times more productive, and valuable than other people in the team) developer. I have met and worked with such people, they are often way more than 10x, sometimes maybe as much as 100x.
In a small team, these 10x people stand out because they can individually deliver more than half of the work being delivered by the team. In a bigger team, the impact will reduce. I have observed such people completely change their outlook on the world when moved from a tiny team (3-5 people) to a larger development team (20-50+ people). The percentage impact that person is making is far lower, and the really smart person will realize that the biggest impact they can have is to now help other people in the team to achieve more. A 10x developer helping other people in the team achieve more, is how they can become a 100x team member. The people they coach and support become a multiplier of the output.
I am writing this, sitting in my home office, where I have done all my work for the last 2 years. Creating Notes, sketching out ideas, trying out new technologies, are tasks I find best done alone. I need time, and space, to think through ideas, pencil down notes, rewrite the notes, refine the thoughts. I might have the music on, often too loud. I am looking to get into the flow of writing, coding, or learning.
My best work is undoubtedly done in this state, no distractions, no other people. The fact it is a Sunday also helps. The best deep work I have done in my life is from my home office. Although when working with Microsoft, having an office where I could close the door, was second best.
Some of the most frustrating times have also occurred in this situation, where I have banged my head against a problem for way too long and not made any progress.
Communicating ideas with other people creates a feedback loop, where each person participating can break apart concepts, and add their own perspective to the discussion. This is why brainstorming works as a mechanic for solving hard problems. When you have two or more people contributing ideas, you would expect an additive effect applied to the result. The saying 'two heads are better than one' comes to mind. We often need to bring people together to help unblock problems, and get past the frustrating (apparent) dead ends.
This is why I love pair programming, and with current technology this is now achievable without needing to sit in the same geographical location as someone. With collaborative software tools, such as virtual whiteboards, shared documents, and development environments, I can now sit in my home office and pair program with someone in any other part of the world.
Best Of All
In the software development world I can now have the best of all worlds, I can work alone, while working with others. While I understand this might not work for everyone, I have found this last two years to be the most productive time I have ever experienced. I can create my own space for the times I need to get in the flow. I can virtually bring people into my space (or join their space) to solve problems and have conversations about bigger issues.
A final thought on the growth of ideas and innovations. Many of the projects I have worked on have been seeded by an individual, and grown by a group.
Most innovations come from a single person coming up with an idea and setting an initial direction. This initial idea requires the time and space for the person to arrive at the concept.
Turning the idea into a finished product, that delivers on the initial concept to create happy paying customers, has required a sizable team. To polish, refine, and improve an idea, a group of people will brainstorm, test, try paths, fail, learn, and work together.
Created: November 27, 2022 02:50:14