Soft Skills, Software Development, and AI

2024-04-17

, , ,

I’ve always maintained throughout my software development journey that soft skills = hard skills. The code I write isn’t just for the sake of writing code, I could never contend to be a code monkey. What are the organisational goals? Does this feature align with those goals? How do we deploy? Who can help me push this through? Who are the customers? How does my work impact them? Code alone doesn’t answer these questions. But conversations do.

The developer community has had mixed feelings about the equivalency of soft and hard skills, though it’s not a premise that’s usually in the spotlight. Deep technical knowledge is the golden path of progression, and that’s still true - you need to be a master of at least one thing.

But now we find ourselves in the age of AI. When ChatGPT threw itself into the public domain, it rightly changed the world. Neural networks in the form of large language models never looked so good. ChatGPT can write code as well! This wasn’t a hype train, this was a hype spaceship. I did some small coding tasks with ChatGPT, and was reasonably impressed. Now devs with strong soft skills are going further than before.

I’ve worked with different organisations, some leverage synchronous communication heavily while others leverage asynchronous communication. My dev career has been tremendously boosted by my capacity to be effective in both forms of communication. For example, I once got a Slack request for a data migration from the product owner. It was vague, so I asked a few questions and set out some requirements on a Linear ticket so it could be tracked. This alone adds value to the business. I do it out of habit because it helps me determine what’s needed for a task. I’m also a remote worker, proof of my output and productivity is required in remote environments more than in-office. Plus, I can get sick, fired, quit, who knows - the verbose tickets and documentation will help the dev that comes after me pick up and move forward.

This habit is now super powered with AI tools at my disposal. No less than 5 times I’ve been able to take the tickets I created, with clear problem definitions and requirements, to prompt ChatGPT to get the solution. The code will work as is, but I would typically format it to the expected style, and make other minor adjustments while sanity checking the code. Granted, those tasks were straightforward enough that I could do it myself. On the onset it looked like I saved a few mins of my time and some typing. But I’ve saved something a little more important - my brain power, my energy. Energy is more important than time, the more of this I can save with bigger tasks, the better.

What are the hard parts of software development? Knowing what the problem is. Knowing what the solution is. Designing the solution. Executing the solution. AI gives me a shortcut, I can figure out the problem and the solution, it can design and develop for me.

Admittedly, at the time of writing we haven’t reached that point. There are problems I can quicker solve by coding myself instead of creating an effective prompt. These LLMs hallucinate… a lot… GitHub Copilot has had some cool contributions, but so many times it gets in my way while I’m writing or coding. The current state of the tools tend to write a lot of suboptimal garbage code. Adding unnecessary complexity, I sometimes find myself writing the code myself. As such, there are days I don’t use any of the AI tools at all while working - I’m more productive without their limitations.

Despite those limitations, these suite of tools are constantly improving. Leveraging human communication, soft skills married with technical know-how will elevate developers of today and tomorrow. Soft skills should never have been neglected, and now more than ever, they are necessary.

© 2024 Marcus Sanatan