DEV Community

Cover image for 11 Essential Non-Coding Skills Every Developer Needs to Master
Ahmed Salif
Ahmed Salif

Posted on

11 Essential Non-Coding Skills Every Developer Needs to Master

NOTE: This article was published on https://lancecourse.com/en/blog/11-skills-developers-need-that-have-nothing-to-do-with-code. I am just sharing the same article with you here.

Regardless of the language you program with, as you practice, for some time, you will realize that the hardest part of being a developer is not the code itself. The reason why one cannot be universally "the best" in programming is because there are so many contexts that are not defined by the code logic only, but by so many decisions and anticipations from various stack holders multiple times. This changes the center of gravity of the situation from being the code to more measurements and metrics.

When you have to deal with that, you realize that the points I am discussing in this article require a major part of your mental effort.

This is addressed to programmers who have been practicing for a while. I aim to call your attention to the importance of these points and let you know their impact on the business.

It's also a good guide for the new learner who is beginning. While most of these points might not make much sense today, you can start to practice them and build the habit of incorporating good practices in your work.

1. Maintenance strategies

This might come as a surprise to many that your maintenance strategy is the driver of your project. It tells you the interest level of every stack holder. It's the reason why you often have to decide whether to go for this language, server, stack, etc. It guides our decisions on how serious we are on a project.

Most importantly, the boss loves great maintenance strategies because it saves so much money for the business. Your ability to foresee what the project will be like in the future helps you to define the best architecture and design to make it easy to maintain and grow the project. This skill grows in you as you work on more and more projects.

2. Ideation

It's the process that cuts across every aspect and stage of every project. You think of the micro and macro aspects of the project, from its infancy to maturity, beginning from its most abstract aspect to its concretization.

As a software developer, you will develop this skill that allows you to be some kind of "an oracle" that you can sense ideas and invoke them forth. You should develop a sharp mind for critical thinking.

3. Modeling

Modeling is the tool that allows us to apprehend complex situations and make them manageable. You should develop the kin eye to visualize situations and systems into comprehensive objects on which you can develop and apply all your theories. This skill is super crucial because you work in a virtual world and most situations or problems you will be working on will come from reality. You need to model these real-life systems into their virtual equivalent to 1) adapt them to your work environment, and 2) to be able to easily manipulate them conveniently.

4. Naming convention

If you are the type of person your family members usually call to find names for newborn babies, you must understand the importance of good names.

Up to now, our programming languages are text-based and require us to use words to represent parts of our codes. Although they come with a grammar(syntax), there is still so much flexibility in how we should name every token we use in composing the source codes.

It's from this flexibility that naming problems emanate. Every source code is a letter from one developer to another(even to yourself). Your code should be linguistically clear and meaningful even if your logic has to be superfluous. As an example, check the two blocks of codes below.

The second one is clear and gives you an idea of what one is trying to achieve. On the other hand, the first one does the same thing, but it's not obvious.

let i = $_(".tabs") for(i = 0; i < i.length; i++);
Enter fullscreen mode Exit fullscreen mode
const all_tabs = Aray.from(document.querySelectorAll('.tabs')) 
all_tabs.forEach( tab => {...} )

Enter fullscreen mode Exit fullscreen mode

It's extremely important to come up with clear and well-structured rules on how you pick your tokens' names. It may come to you as a surprise if you are a new developer, but the names you pick for your variables, functions, classes, etc. have a huge impact on the success of your project.

5. Codebase organization

While most of these points target the end-user, the code base organization benefits or hinders directly the developer. Even here, the naming convention is crucial. You will be surprised to find yourself spending minutes thinking if you should name a file styles.css, style.css, main.css, or even css.css. Do you get the point?

Then comes how you put the files together. Should you use subfolders or not? If you have to use subfolders, how deep can they go? Or should you rather use namespaces, and how deep and meaningful must those also be? This is one of the oldest problems developers have always dealt with because computers use file systems as the primary storage system.

This issue, in large part, gave birth to the design patterns we know today. As a futuristic mind, your job will always be to find the perfect codebase arrangement that will benefit you and the various stakeholders in the future.

6. Platforms awareness

The diversification of our computing systems requires your understanding of how applications you build run and behave from one system to another. It also affects the project cost considerably. For example, deciding to build on the Apple platform application will have different implications in terms of cost and time, compared to building for Android. All these platforms, one way or the other, always have a say about where your work is going to live as their home.

The developer must take their work further to analyze all these platforms and make sustainable decisions for the business.

7. Update strategies

As part of the maintenance strategies, update strategies must be thought through thoroughly before you even begin work. As a core part of the business, applications need updates. It's not something to avoid either.

So you need to embrace it strategically to ensure that you work less and ensure the growth of the system. When you deploy one or two real-life products that people use continuously, you realize how complex updates can be. As an example, imagine you have a version 1. Then in version two, you keep the business logic the same as in version 1, but you come up with a new UI that 45% of your users, through A/B testing, love, and some 30% love the UI from version 1. Either you go for a hybrid UI experience or you decide to ignore one group in favor of others, all boils down to the dilemma with updates.

To crown it all, update challenges don't only affect the user experience, but they affect every single aspect and stack holder of the project; be it a minor or major update. And guess what? You can never avoid them.

8. Migrations strategies

The Migrations strategies deal with the elevations or eliminations of parts or modules of a project. The Migrations strategies are also part of the maintenance strategies but they can be more flexible.

Some upgrades can come in as a simple desire from the developers or any other stack holder. But it does happen that we are forced to upgrade. The beautiful part of upgrading it, we can freeze the application environment and keep it running without any upgrade. The only thing we lose there is growth.

9. Deployment strategies

Projects during their life cycle undergo various changes. These changes need to be gracefully merged with the existing state. This process as simple and subtle it might look, is super important and delicate. One must always plan it carefully and continue to improve it as much as possible to endure smooth continuous integration.

10. The true value of UI and UX

If you have worked on real-live projects before you will understand that, in general, your boss, does not care much about the business logic, for it's seen as a black box, but what they perceive as value is the UI and the UX. The same thing goes with the end-user/customer.

You could be using the most sophisticated algorithm and formula under the hood. It does not matter if people can't feel comfortable using it. See it as the first impression you must give when you dress up. People will judge you based on their first impression. Be very careful with the UI/UX duo, it can make you, or break you.

10. Servers/distribution strategies

Regardless of the type, or size of the applications you build. They all need a distribution strategy. Let's take an example of a website, are you home-hosting it, or are you going to use shared hosting? A dedicated hosting? If so, a VPS, or dedicated? Or would you go for a cloud host with AWS, Azure, Google Cloud, etc?

And even if it's a desktop application, how you distribute it is a considerable business matter that you must address before development. Will you use client/server architecture, or a single bundled application? Will you provide automatic updates or freeze every downloaded copy? How are you going to manage licensing and prices? In some cases, you even have to consider laws too.

11. Always work with your strongest strengths

Read the rest on https://lancecourse.com/en/blog/11-skills-developers-need-that-have-nothing-to-do-with-code

Top comments (0)