We’ve all seen the typical depiction of a software developer in Hollywood. An anti-social lone-wolf who locks himself away in a corner and writes code. That’s about it, they just write code.
I bought into that image of software developers in my earlier years. In fact, as a shy teen, the idea of being able to lock myself away from the world while I created things was one of the main appeals of software development for me (apart from the keyboard smashing part of it). Creation and innovation were the main goals, but I wanted to do it all by myself, so I could feel like the cool geniuses in the movies. After a little bit of research which involved typing “best programming languages for beginners” on google, I immediately embarked on my dev journey, filled with excitement for my future as an independent tech wiz who can build and hack anything without help from anyone.
The initial stages involved learning basics in algorithms, data structures, and programming language syntax. Underwhelming, but I believed this was nothing but a small stepping stone on my way to the fantasy. However, that fantasy quickly fell apart when it was time to actually put the skills I learned to use. After messing about with print statements on the console window, It was time to build real projects. I realized how many aspects of development go into creating a functional piece of software.
Design, planning, development, testing, analysis, and documentation are just a few of these aspects. Even as someone who identifies as a full-stack developer, I couldn’t even begin to scratch the surface of the software development cycle of the massively ambitious projects I had in mind all on my own. I started to yearn for a team, not due to a change in personality, but due to the demands of a large project.
During my undergraduate studies, I got the opportunity to work with multiple people on group projects. Most of the time, these groups were assigned by the lecturer, so we could not choose who our partners would be, something I thought was negative initially, but taught me some invaluable skills. Firstly, I learned to coordinate my efforts with other members of a team. During the development process, there are a lot of tasks that are interdependent.
Having people keep me active in order to progress to the next stage of development improved my productivity immensely as I had partners to keep me accountable for my work. The most important skill I learned during this time however, is one that arguably doesn’t have a direct relation to code at all. That is the ability to socialize and interact with various unpredictable characters in a work setting. I believe this was the most important skill as it elevated my effectiveness to a new level. It opened up new possibilities in my career. Being comfortable enough to communicate with team members, managers and clients, allows me to have an impact on various aspects of a project. I find it ironic that being a part of a team made me a more complete developer as an individual, but I fully embrace this new mentality.
Ultimately, being a software developer means so much more than writing hundreds of lines of code in isolation. The goal of software development should be to provide a solution to real-world problems, and just like with any other type of solution, that means communicating and collaborating effectively. In many cases, the software we build is going to be used by people or is at least going to be delivered to people. This requires a certain level of skill in dealing with people that has to be practised intentionally. If being the cool independent hero is your preference, go ahead. However, most developers (especially those working in teams) could benefit from honing their softer side in order to improve, rather than always chasing technical prowess. My suggestion: let’s be better people to be better developers.