Timeless software development skills

Modern software development. It’s full of tools, frameworks, languages, and plenty of heady discussion about the pros and cons of each. You wonder from one day to the next whether your framework or stack of choice is sexy enough to keep you employed for the next few years, let alone the next decade. Yet through the thick fog of hype, many fundamentals of programming remain. For example, Code Complete is still informing new developers about programming concepts they use every single day despite the last edition being released in 2004. How? Well, self-evidently, it focuses on the foundations of programming. But taking another step back, there are plenty of skills you can cultivate outside the boundaries of a screen that are essential to your success as a programmer. Here’s seven of them.

1. The Beginning

At what stage of the software development process is it easiest to make the biggest impact? It’s the beginning. It’s when the back of the napkin is getting written on. So while I would never tell you to stop learning keyboard shortcuts, know that you can have outsized returns by focusing on the start of the journey. What are you planning on doing, and more importantly, why? Cultivating your expertise on evaluating your ideas at this stage is critical.

2. Business Thinking

Sometimes as a code-slinger, it’s easy to ignore the business side of things. You are a black box, the requirements slide in on one side and the code slides out the other (with unit tests, right?). It turns out the reason money keeps showing up in your bank account every two weeks is that what you do is valuable to the business. It may be a simple concept, but it’s always good to keep in the back of your mind because we programmers are great at optimizing. When you realize that your compensation is tied to the business value that you provide, it changes how you think about what you do. Will spending six hours tuning this piece of code make the business more money? Maybe, maybe not. Take the value of what you do into consideration.

3. User Experience Design

Oh yeah, you almost forgot about the user! Don’t worry, it happens to everyone. You get caught up in the key stakeholder moving around the features and forget about what you are actually building and why. Some software developers have never seen a user in person. Don’t be afraid, most users don’t bite. Whenever possible, even though it might be inconvenient and uncomfortable, get in front of people actually using the code you write. You’ll be surprised at what you find out, I promise.

4. Communication

I’ve found that the more I communicate, the less stressful my job is. Here at Nebbia Technology, we have a daily standup meeting to talk about what we did yesterday, what we’re doing today, and any blockers we might have. It’s a fantastic way to create an open environment to communicate, and it often leads to discoveries about how we can help each other. Daily standups are great, but they are not the be-all and end-all of communication. Relating ideas to others and truly listening to theirs is the very foundation of society, so spending time learning how to do it better is never wasted.

5. Collaboration

Hey, you know that genius unicorn developer that spends months on end neckbeard-deep in Doritos and Mt. Dew, the one that develops the next big app and walks away with billions? Yeah, that’s a myth. Taken to the extreme, that’s how you end up with TempleOS, a technically impressive but functionally useless operating system. While all great software takes vision, it also takes collaboration. You need to work together to get anything of note accomplished. Learn how to work well with others, make them feel good about themselves, and you’ll notice that you’ll probably be happier too.

6. Take Criticism Well

I am going to be honest, I was not always a software developer. Strange, but true. At one point in my life, I wanted to be a film editor. I loved taking my vision and making it real, and that worked out really well on small pet projects. I realized later on that to make anything significant, an editor’s job is to take the director’s vision and make it real. When I figured out that my life was going to be nothing but hitting buttons until the director was happy, I became a software developer.

The grass is always greener, isn’t it? Software development is nearly always about taking other people’s ideas and making them real. And those people might not like what you make all the time. It might fit the requirements to the letter but not the spirit. Your co-workers might point out what you could have done better. Your users start complaining on Twitter about the latest feature. It’s all part of the process. Learn from their criticism, let it roll off your back, and move on.

7. Keep Learning

This is the most important. No matter where you go, no matter where you come from, the single-most important thing you can do is to continue learning. Learn about learning. Learn how you can make the most effective use of your time, and continue to hone that. Sometimes if you are in the middle of a book and the main idea starts to be re-stated, it’s ok to put the book down and read something else. It’s ok to gather just enough documentation to use the new JavaScript framework, and spend more time learning the fundamentals. I’m currently in the middle of the You Don’t Know JS series, and I’d highly recommend it.

The point is, never stop improving.