Growing up I played a lot sports. I wasn’t aggressive enough to excel at any of them, but I played nearly all of them.
In sports, the team is crucial. Multiple parties, working together for a common goal. Similarly in the realm of web development, teams tend to be quite important to the sucess of a project. It is uncommon for a single person to know every aspect of a given domain, so being able to divide it up means one can apply multiple expertises across the entire work.
Through most of my career, I’ve been a part of a team. In small agencies there would be writers, account managers, print designers, and me. Similarly as a freelancer, I constantly join up with existing teams for the duration of a project. My particular department, however, tends to be a team of one.
I usually get hired to both design and develop a web property. In some cases I am handed design files, but even then it’s me alone working as the developer. This reality of my working situation has some definite disadvantages. For example, when multiple people are all touching the same files, version control is a must. When only one person is, the benefits are a bit less evident. Being able to roll back changes can be useful, and branching does provide a nice capability for experimentation, but usually I just commit for the practice. In a team I would do this as a necessity, as it is now I usually have to remind/force myself.
I also don’t tend to deal with a lot of project managers, therefore I don’t have a lot of exposure to the various methodologies people use to manage projects. I don’t make and/or track issues for myself, I don’t do code sprints, and I don’t get assigned project priorities when I come in each morning.
Most of all, I am missing out on the comradory. My wife doesn’t know or care that the latest release of React Native includes hot loading, but I bet there are some teams out there just chatting away about how cool it is. I don’t have a Slack channel for myself, and I don’t IM or Google Hangout with myself either. I also don’t get to bounce ideas off of anybody, and nobody is reviewing my code or offering suggestions about how to optimize it better.
Seems pretty rough, but it’s not all bad.
I’m the type of guy who re-indents a file when they start working on it. Maybe it’s using tabs instead of spaces, maybe it uses four spaces instead of two, or maybe I just don’t like the way it’s intermingling the PHP and HTML. As a team of one I enjoy having full control over a project. I get to choose what tools I want, what editor I want, and what settings I want.
Sometimes the funnest thing about starting something new is the research phase. Let me see what others are doing in this area, and let me see what I can leverage in my own work. So while I don’t have a ton of in-person interaction, I do have the internet and podcasts. A vast and nearly infinite sea of resources and videos and tutorials on all the newest stuff.
Without a team, I am solely responsible for the output and quality of a project. I have to oversee myself and keep myself on schedule. One of the worst development experiences of my career was when I was tasked with overseeing other developers. I knew enough about what I wanted to know that they were severely missing the mark, but at the time I didn’t know enough to step in myself, so I felt trapped. I will always prefer to learn something new and do it myself over hiring somebody to do it for me.
I take a lot of pride in my ability to teach myself. Through tutorials and practice I’ve learned everything from PHP to CSS to Angular to React, and I love how this industry just keeps going. Even better than experimenting with technologies is being able to use them in a project, and not having to argue with somebody about its technical merits.
Where I know I am limited is with the scope of any single project I can likely tackle on my own. Large organizations aren’t going to hire a single freelancer for anything, more than likely they want a team. So while the marketplace for services I can leverage has greatly widened what I can offer, it still won’t be everything, and that has started to worry me some.
Sometimes I imagine how great it would be to join forces and achieve something great with like-minded individuals. Other times I want to discover things for myself, and focus on projects that excite me. Sometimes I wish I had somebody to brainstorm with, to figure out the best solution to a challenge. Sometimes I find the prospect of combing through code of unknown quality so draining that it makes me want to avoid the project entirely.
Right now I don’t know what the future holds. Is joining a team crucial to my continued development? Or do I need to stop apologizing for my situation, and embrace the fact that I built myself and my career and while my situation might be different, it doesn’t mean it’s bad.