The Foundational Pillars of Successful Development: Community
Tags: career
Published: 2020-01-10 19:34:40

In this series, I will focus on what I view are some of the necessary, foundational pillars of software development that result in better code and better experiences. First up, is Community. 

---

There are many components of successful development, and there's no end of arguments on which is the keystone holding it all together. 
Architecture and Style are undoubtedly important components of development, but I feel that Community is what keeps a developer moving forward when they've been staring at a wall of curly braces and semi colons for hours trying to figure out why their code is not compiling.

# Making Friends

Lets be honest, most people in the software development field are socially awkward. We gravitate towards this career path because it means less talking to the public and more zoning in to solve a problem. It's a great thing getting into the [Flow](https://efficientsoftwaremethodology.wordpress.com/esdm-home/what-is-flow/) of things, and some of us can spend hours or (unhealthily) days in this state. We remember to eat or drink from time to time, and if we're lucky, we have someone that cares about us pop in every now and then to remind us not to die. 

Even though we typically don't enjoy frequent interaction with other "people", we don't always hold that same aversion towards our Cohorts in Code. They get us, they understand us, and we can speak with them on a level that the general public would just scoff at while exclaiming "Nerds...". These Brothers in Brackets and Sisters in Semicolons are our people, and having yourself a nice group of people to call your own can really boost your productivity and overall enjoyment of the development career path. 

# Branching Out

Having local groups of people to call your own is certainly nice, but you really start building those social synapses when you find communities online that share an interest in your technology de jour, be that a specific language, framework, or coding style (Tabs vs Spaces, Fight Fight Fight!). Finding a local community is a good way to meet new people and build up that local group of your people, but it's also a great way to grow your knowledge. Many local meetups are looking for speakers, and no matter what level you know about a specific subject, there's always someone that knows less than you and would be interested in learning what you know. Everyone has something to teach.

Personally, I learn best when I'm attempting to teach someone. Often if I'm going to be giving an introductory talk or lesson on a framework or topic, I'm barely one step ahead of the group I'm teaching. It helps keep the information fresh, and it gives me motivation to have it sink in and really understand it. That way, I can help the people I'm teaching get past the confusing and annoying parts that I just learned, without breaking their spirits by subjecting them to the 3 hours of "*WHY WON'T THIS BUILD*" that I just sacrificed to the code gods. 

# Making an Impact

Participating in online communities that cater to your technology interests isn't just about learning new things and meeting new people. It's also about encouraging and being encouraged. It's particularly beneficial for getting help on a particularly stressful bug or getting encouragement that your design decisions are valid and functional and not just the ravings of a caffeine-fueled,  3 AM, byte binge. On the other side of that coin, _you_ can be the voice of encouragement for others that may be in the same position you once were when you were getting started, or maybe you've already encountered that specific bug and know exactly how to solve it. Sharing information, knowledge, and support is a key component of what makes communities, friendships, and just life in general work so much better. 

# Get Out There

Communities are extremely important for successful software development, as we rely on each other for myriad things to help get us through those days where we're bashing our heads into the keyboards in frustration. I'm not saying that you can't be successful in a software development career without embracing the communities around you, but you _will_ have a tremendously more difficult time. There are those rare individuals that will sit down at the keyboard, black out for a few hours, and come to as their build finishes on a glorious masterpiece. Most of us aren't like that, and, in my experience, most of us wouldn't want to be. That kind of solitary development often ends up in _extremely_ opinionated code and the person behind it usually ends up being kind of a jerk. Communities and friends help us to become better people, and in the process, better developers.