Communication - An Important Part of Software Development
I have found that communication is a very important part of software development, especially important when working with non-developer team members. As you can tell from my writing, I am not the strongest communicator, but I have worked on improving throughout the years.
In January I will be taking an undergraduate business writing course. Though, I do worry about it taking time away from my graduate class that I am also taking in the Spring.
Why am I so keen on developing communication skills?
At work I once volunteered to do a presentation on Kubernetes, which I knew very little about. Kubernetes was new and many co-workers were curious about it and docker. So I spent a few weeks learning what I could in the little time I had a available and presented on some of it's features for about an hour. Unfortunately, I didn't know enough to answer the audiences excellent questions about things like server affinity and networking within Kubernetes. Even though I was not as prepared as I should have been, and presenting was a skill that I'm very uncomfortable with, this presentation lead to a good opportunity.
A co-worker in another department was asking people about Kubernetes because they were considering using on a research grant he was assisting with. Based on my presentation someone referred him to me. I was still new to Kubernetes but more than happy to help in any way I could. After a few meetings the co-principle investigator offered me the opportunity to work on the grant as well.
Over the next 5 years I dedicated part of my work hours to research computing, learning a ton that has applied to my current role as a software developer. I learned about infrastructure on a large scale, distributed computing, containerizing applications, I even learned a about some of the basics like network storage, networking, software development for the cloud and just a touch about DevOps in a cloud environment. This was a great opportunity that came about because of one presentation.
At work I build small software projects. Small as in I'm a one person team working on projects that take a few months to implement. Communicating with the end users who are asking for the software is very important. Otherwise I end up building features in ways that they didn't intend. I also have to communicate well when it comes to foresight of missing features, problems, and helping them determine a consistent process for the work function for which we are building the software. I was surprised how often processes are not solidified before they want to build a system around them.
My advice is to take opportunities to improve (or demonstrate) your communication skills. You don't have to go all in and get a communications degree, but taking an online course, reading a book, or offering to write or present about projects can go a long way. What I really mean to say is don't spend 100% of your time developing technical skills because technical skills are limited without the ability to communicate. The stronger your communication, the further you'll go.
I started this journal for the opportunity to practice writing. My writing is not strong now, but hopefully after a couple (or 5) years you'll notice a difference. Feel free to subscribe and leave you feedback in the comments. Also let me know what topics you are interested in learning more about.