Not Just Coding: Must-Have Skills for Today’s Software Developers
Software development is getting a lot more competitive. With the rise of AI tools, it’s easier than ever for anyone to be good at coding.
It might also seem tough to stand out when most programming jobs these days have over 1,000 applicants.
Here are some basic principals in which most software developers fall short.
Communication
It has long been a stigma that programmers are notoriously bad at communicating. If you can respond to messages timely, speak clearly and professionally, and always keep your word — then you will set yourself apart from most software devs.
Design, Structure, & Standards
Don’t just hack things together and make “spaghetti code” — be aware of software design best practices like Object Oriented Design and the Model View Controller.
When working in any project, structure and standards are key for long-term success. If you’re using a library or framework like React or Angular for example, you should have designated directories for your styles, your pages, and your components.
I recently worked on a React project where the structure was very disorganized and the page components were built like spaghetti code without separation of concerns. Separating out API calls and reusable components and suggesting standards for our team to practice went a long way for our whole team.
Meeting Deadlines
I’m not sure if it’s because everyone seems to underestimate how long a task will take, or that they don’t account for testing and debugging.
In my 10 years of experience as a software developer, I’ve found it common practice to miss deadlines. From independent freelance projects, to corporate SCRUM teams — freelancers and teams alike commonly fall short on their project objectives for releasing software.
If you can make accurate estimates and meet deadlines, and then you build a reputation to back that up, you’re a huge step ahead of the competition.
Don’t Procrastinate — Be Proactive
It’s easy when you’re in software development to procrastinate. You see a task, and you know what it will take to complete said task. Maybe you even over estimated the hours it would take, and you think it will actually take you a shorter time — so you procrastinate. This is easy to fall into, but it is bad practice.
Be proactive on your tasks. Think of it like a game where you get more points by going under the estimated hours and delivery time by as much as possible. That will score you the most points and set you apart from the average Software Developer.
Stay in scope — do not Over Promise, Under Deliver
Like missing deadlines, it’s common especially for new developers, to over promise and fall short of the targeted goal.
On the flip side of this, if you can manage to under promise and over deliver, that will really set you apart from other software devs and your client will love you for it.
That being said, it is important to push back on certain things that are out of the agreed upon project scope. It’s a good idea to allow a bucket of hours for revisions, if the client is still not satisfied, then you request an adjustment of the contract. It’s also important to remain flexible, and the client will respect staying true to the contract. This is where communicating early, effectively, and often comes into play.
Don’t give up — complete the project
With all that being said, it’s important to not give up on a project. Work with your client or team to figure out what it means for said project to be completed. Do the very best to meet that goal, and make sure that both you and the client are satisfied with the end product.
Optimization & Efficiency
There are always ways that things can be done better. Look for ways that the code can be improved or optimized, voice these early and often to make your client and team aware of potential optimization.
This is the secret sauce, if you can find a way to optimize software and show data to prove efficiency, you are GOATed. The goal of software is to optimize efficiency of rigorous tasks, if you can find a way to optimize or make something more efficient, you have stumbled upon the holy grail of programming.
Be Kind, don’t be cocky
It’s so important to be kind. I’ve been in a team where I got yelled at by the tech lead for not being able to get something the work the way he thought it should work. He then got on a call with me for over 2 hours and he couldn’t figure out how to make it work!
It made me so frustrated, but I did my best to not to retaliate. If the tech lead had been more kind from the beginning it would have been a better experience for everyone.
There are also situations where you might be more knowledgeable than your lead developer. In my own experience a lead developer on a React project did not know what was wrong with his repository when he simply needed to install dependencies from package.json — in situations like this it’s important to check yourself and not come off as arrogant, and respect that team members come from different backgrounds of experience.
You can always learn from others, even though I might be more experienced in React, the lead developer introduced me to the term “Function Overloading”
It’s best to lead by example with respect and kindness. Programming should be about community and sharing knowledge. Not about shaming someone who is learning.
Documentation
Going along with the sense of community and learning, it’s important to document structure, standards, and your project’s codebase so future developers can easily be onboarded and everyone is on the same page.
Sometimes you might be facing a project like this:
It’s also good to keep in mind that any documentation is better than none!
Aside from the humor & while much of this article may seem obvious —
Most software developers, myself included, are guilty of falling short on many of these skills. How would you rate yourself on these skills (1–10)?
Communication:
Design, Structure, Standards:
Meeting Deadlines:
Not Procrastinating:
Staying in Scope:
Completing the project:
Optimizing & making code the most efficient:
Being Kind:
Documentation:
Take your lowest scores and focus on improving those areas this year!
Nobody is perfect, but if you can optimize these skills in your software development work, you will be successful.
Thanks for reading and happy coding!
Peace out,
— Wes