Four Years in Professional Software Development
Four years ago, as of next month, I graduated college and began my career as a professional software developer.
I've learned that technology is the basis for my employment and that soft skills is what makes the career.
Positive Soft Skills
A week or two ago I was talking with a gentleman who said that we should always be positive and never be pessimistic about other people or existing software systems (paraphrasing).
Now that seems like an obvious statement; however, it's all too easy to deride existing software systems and to not empathize with how things became the way they are. I fall into this trap often. Instead of moving forward by tearing down our predecessors, lets move forward by building up those around us.
Yesterday, I was at Codestock and saw the fantastic closing by David Neal and one of his points was to encourage those around us and to praise them for their strengths before they leave the company or team, instead of just saying how great they are when they leave.
These fantastic people are making me think about how I interact with those around me and that I could always hope to improve by building people up more.
Business Soft Skills
In my mind, business soft skills usually end up falling into three categories: negotiation and explanation and investigation, and they are not always separate.
Negotiation, explanation, and investigation happen over the phone, over email, and sometimes in person. And like all interactions, how you make them feel is just as important as being factually correct, concise, and unambiguous.
While you are representing your team, your department, or your company, and the other parties are doing the same for theirs, it's best to remember that they are human, you are human, mistakes happen, and that you both are working together toward a goal for mutual gain.
Technology matters, and technology doesn't matter. If you don't have soft skills and don't talk to people, you better be a monarch of your chosen technology and know it very well to get a job. If you have soft skills and talk to people, you can build up that reputation for problem solving and an aptitude to learning and be perfectly fine with whatever technology.
Now even though you may have an aptitude for learning, there's a still lot of cases where having at least X years of experience is a hard requirement to get past the resume screenings. In an ideal technology world, this wouldn't be true since we know that technology is constantly changing. But from the perspective of a small company or small team with a very limited budget, they likely don't have the time to let you learn or the team to mentor you, and so they need to purchase services skilled in Y language right out of the gate.
Each city's community of software developers is small and close-knit and well connected on social media. It's a small world and act like it is.
Reputation is everything for a software developer. All the time we get bombarded with content saying "build your personal brand", and this just means to build your reputation. Your reputation is all that a personal brand is.
This ties back to positivity. Respect others in this small world of software developers.
Not only software
Software development is a fantastic culture. We have personalized T-shirts, conferences, inside jokes, and lots in common. I see so many books and other content specifically labeled "for software developers" and that's really neat. But there's also a whole other world: the real world.
Don't get stuck in only the software development world. Go branch out and have other hobbies and interests.
I don't blog, tweet, or post about these things very much but I have other hobbies besides software. I love reading books and my science fiction and fantasy collection is significant. My obsession with boardgames is excessive. I occasionally fence with swords. I also like running, but I've fallen off a bit lately.
Respect other's jobs
Software development may be just a job for many people and we should respect that. It's not feasible or reasonable to expect that everyone does software at work, and then goes home and does some more. People have lives. In many cases, software development may just be a lucrative field that enables someone to support their family, and I can respect that.
Even if we sometimes spend time outside of work, doing open source or writing blog posts or working on user group/conference presentations, remember that these things are not required to be successful. These things take a lot of time.
I enjoy software development and I am fortunate enough to be paid to do what I enjoy. Not everyone is so fortunate. Also, whether a person is a software developer or not should have no bearing upon your respect for them.
Respect everyone, acknowledge your mistakes, constantly be improving, don't let the past tie you down, and don't be defined purely by software.