One of the reasons software developers love what they do is because they love learning.
When you first start to learn a programming language, it can feel like an overwhelming undertaking.
Especially these days.
When I was 14 I took a three week work experience job at a small software development house and I remember the owner being marginally impressed at a game I’d written (in AMOS for the Commodore Amiga - yep, that long ago), but then he looked at me and said:
“You need to learn C.”
With one language I could have recreated all the products that software house had developed. But these days, you need knowledge of multiple languages and multiple frameworks, knowledge of databases, knowledge of DevOps-style tasks so you can deploy your creations, knowledge of compilers, transpilers, build tools and containers.
Despite the enormous array of tools available with which to build applications, these skills are a commodity. It’s true that the longer you spend learning the more confident you become that you can learn something else. But there are other skills that are as important, if not more important in today’s environment.
I once worked for a software company that employed maybe around 50 developers, but two stood out.
These two were the true rock stars. Their opinions were valued above all others and it often seemed like they ran the company themselves. They enjoyed direct access to the top of the tree and their every wish granted by the executive team.
I wondered what it was about them that garnered such respect by the company’s founders. I felt I’d had the same amount of experience and offered the same skill level.
Eventually it occurred to me.
They didn’t write software, they solved problems.
I think one of the best skills to deploy if you’re joining a small company is to be empathetic towards the company’s goals. There will be many priorities over creating perfect bug-free software and establishing solid methodologies and 100% test coverage. Unless the company has raised considerable capital and can afford to hire a huge team that takes 3 months to put everything in place, you will just need to be in build mode, and your product needs to be done and out the door in 3 months.
You won’t always have the luxury of time to make everything perfect or refactor some code to where you’d like it. Sometimes bugs have to stay unfixed or features left out because the business has greater priorities. Showing respect for these, and driving your decisions from these can make a huge difference.
Experience helps in these cases because experience will help you make better decisions - mostly in terms of what not to waste time doing. Speed is the priority in those early days.
If you’re able to demonstrate empathy to the company’s founders, it puts you in a great position to build trust and loyalty because they know you’re on their side; that you’re invested in all facets of the business and are not just an employee or a siloed member of the team.