I have spent most of my career in the IT industry in varying roles, but what I love most is development. It offers the most opportunities for creativity and innovation, especially web development.
In this article I will take you through some of the skills you need to be a great developer.
You can never have too many languages under your belt. On the other hand, it’s no good being a Jack of all trades and master of none.
You should be a Ninja with one language and a challenger with one or two others. Have a good understanding of the strengths and weakness of many languages will allow you to select the right tool for a particular job.
A great developer can pick up almost any language and start working with its basic concepts quite quickly. Over time you pick up the intricacies through reading the docs and asking loads of questions.
Frontend Web Development
Learning languages is only part of web development. Being able to use multiple frontend libraries and frameworks effectively makes you stand out.
There are many libraries and frameworks out there, and which ones you need will depend on your circumstances, but in general, a great web developer will know:
- React & Redux
- VueJS & Vuex
You also need to know some of the more common templating languages
The user of a web application only thinks about a backend developer when things go wrong, but they marvel at the talents of frontend developers. As developers, we know that the frontend guys are relying on the quality of the backend.
You often get much room to innovate on the backend as you try to find solutions to connectivity and speed issues. As such, you need language skills and knowledge of infrastructure.
The languages great backend developers may need
Which you need will depend on the company your with, but knowing there strengths and weaknesses is essential.
- NodeJS — Essential
- Python — Essential
- PHP — Essential
- Java — Familiarity
- Go — Familiarity
Continuous Integration, Automated Testing and Version Control
Users of our applications expect that bug fixes and new features to be delivered within hours or at least days. Fast delivery like this is only possible with Continuous Integration and Automated Testing. A great developer has the following skills.
- Git — Essential
- Subversion — Familiarity
You will understand the difference between the following and the popular tool chains used in each.
- Continuous Integration
- Automated Testing
- Continues Delivery
You will also have a good working knowledge of at least one of the following continuous integration tools.
You will know what to test and how much to test. This skill requires that you have embraced testing as a necessity rather than a nicety. Seeing good tests is a clear sign of great developer.
Many problems that developer’s face come from issues with the infrastructure he or she is working with. As a developer, you might be the first person to identify the problem. Being able to describe the issues to Architects and Database teams and have the knowledge to recommend solutions is another sign of a great developer.
Some areas of infrastructure & technology that a great developer might have are
- Docker and orchestration tools such as Kubernetes
- Event streaming such as Apache Kafka
- Database engines such as Oracle, MSSQL, MySQL, Postgres, and MongoDB
- API Gateways
- Networking, Routers and Proxy Servers
A Great developer will be able to write SQL in different dialects and know how to write queries that give the best performance.
Some frameworks provide ORM’s, which will automate the creation of SQL. A great developer will make the best use of these, but bypass them if significantly better performance is achievable with a raw query.
You should be able to write SQL in at least two of the following dialects and be familiar with the others.
You should also know when triggers and views are required and preferably have skills to create and maintain them.
No SQL and Object Storage
As the type of data we deal with has evolved over the last decade or more, more and more data is now unstructured. Emails, Tweets, and other documents now make up a larger volume of data than relational.
A great developer knows when No SQL or Object Storage is more appropriate than a relational database. You will have the skills to create and manage datastores as well as set up new databases for development environments.
You will be comfortable using JSON and XML and know how to employ technologies such as parquet files and interact with them in your code.
A great developer knows that access to data sources such as databases should be via an API. If your code will access a database, one of the first things you should design and write is the API. You will be able to collaborate with architects, and network teams make sure the API’s are reusable and managed via a secure gateway.
To be a great developer is not just about code. It is about developing software that deliver’s a high quality solution to the customer. Software solutons are more often part of a complex infrastructure. A great developer will understand how this architecture is interlinked and be able to write code that brings it together in a stable, structured and supportable fashion.
The most important takeaways
No one is born a great developer. It’s a never ending cycle of learning and experimenting. If your new to development, don’t feel disheartened if you don’t have the skills I discuss in this article, see it as a todo list. If you take anything away from this article, it should be these three things.
- Great developers are always learning.
- You don’t have to know everything about everything. Anyone who says they do is full of shit.
- It’s normal to have imposter syndrome. Get used to it; it means your passionate about your trade and eager to learn more.