You cannot make salad with just a few cherry tomatoes

You cannot make salad with just a few cherry tomatoes! If you do, you cannot call it “salad”. If you are running business based on that, you cannot survive too long!

The nature of software development in 2022 has become so complex. We cannot say: “I want to learn and use “X” only!” Today so many people are trying to become technologists; in particular programmers/coders. So many people are encouraging it as well, from top politicians to friends and family: “Go, make big bucks easily!”.

There is a sense of undermining the profession. I think we should not undermine any profession; for example, some may look (physically) easier than others. Having said that, anyone can become anything regardless of their age, gender, race, if they work very hard and they enjoy it. We also need all kinds of professionals to avoid survival crisis. Pandemic showed us how important nurses, truck drivers and farmers are (just to name a few professions).

So, let’s take a look at programming for the web/Internet and make a list of skills/abilities that one is strongly recommended to have:

1. ability to use a computer
turning it on/off, log in/out, use a keyboard, a mouse/touchpad etc.

2. ability to install/uninstall/use some common software applications
… under Windows/MacOS/Linux etc. such as connecting to a wireless router, use an internet browser, a file browser, text editor, word processor, image viewer/editor, etc.

3. ability to use a terminal or a console
… under Windows/MacOS/Linux etc. which then requires ability to use DOS/PowerShell, Bash, Zsh, etc.

4. ability to use a project management system
… and related tools such as Jira, Trello, Confluence; understand overall requirements and our tasks to complete.

5. ability to use a version control system (VCS) such as git or svn.
… e.g. checkout code, make+commit+push some changes

6. ability to use a code editor or integrated development environment (IDE)
… like Notepad++, VS Code, IntelliJ. We need to be able to configure it, install required extensions/plugins.

7. ability to read/write code, understand the programming language, in order to make the necessary changes.

That was just a simple list to understand the ecosystem that a programmer works in. It took a while to get to the bottom: the most important skill.

In case of web-based software development, that mainly includes JavaScript, HTML, CSS. In rare cases, we could get away with knowing only JavaScript but that would mean we are not “versatile” developers. Depending on the product requirements, we may need to specialize in some areas a lot more than others. Working on a computer game, which is running inside internet browsers, is just one of them.

In many cases, we need to integrate with other libraries, systems, APIs and components, like data storage systems and messaging systems. SQL and ability to work with SQL or NoSQL databases are very important. We need to understand the overall architecture, data models, workflows, user journeys, and how a software solution is hosted in the “cloud” which would require many more skills in AWS, Azure, GCP etc. Containerisation is an important topic to cover as well – e.g. Docker and Kubernetes are popular tools in this area.

In many professions, e.g. medicine, we find people are specializing in smaller areas such heart, brain, skin, etc. Likewise, it is not odd to see a database expert, systems administrator, quality assurance engineer or a cloud engineer in the world of programming. But it does not mean that they do not have wide range of skillset, at least high-level, i.e. basic understanding of other areas in computer programming.

Nowadays, we see many people are graduating from their schools/universities, with a very narrow skillset. It is annoying to see many junior Java developers with a few years of experience and without much clue about what they have been doing. It is important to widen our horizons and to be eager to learn more and more. It is a never-ending process. In addition to Java or topics we learned at school, we need to look at the most popular technologies in the world, and hence the most popular skills in demand such as:

* JavaScript, HTML, CSS, React, Node
* Python, R, data science, articial intelligence
* Mathematics and Statistics
* C, C++ and Rust
* Swift and Kotlin
* Golang
* PHP
* Data architecture and SQL
* CI/CD pipelines and automated testing
* Security and Privacy
* Linux system administration, Networking
* Cloud technologies
* APIs
* UX design
* Work in a team (not many people are capable of this)

Happy coding! 🙂

Leave a Reply