Soft-Skills are often overlooked in programming. How are you doing in the areas most software developers fall short?
Company Mentioned
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 principles 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 on any project, structure and standards are key for long-term success. If you’re using a 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 . 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 ten years of experience as a software developer, I’ve found it 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 so 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 overestimated 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 underpromise 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 not to give up on a project. Work with your client or team to figure out what it means for said project to be completed. Do your 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 the software is to optimize the 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 knew it was the better move to be kind and do my best not to retaliate. If the tech lead had been more kind from the beginning, it would have been a better experience for everyone.
I’ve also been in situations where I know more about React than my team members. There were some situations like a team member not knowing what was wrong with his repository when he simply needed to install dependencies from package.json — in situations like this, it’s important to 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 knew more about React, my team member introduced me to the term “,” which you probably have been doing but might be unaware of the terminology.
It’s best to lead by example with respect and kindness. Programming is about community and sharing knowledge! It's 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:
And it’s 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.