The Fundamental Software Skills for Technology KnowledgeIvy Pritz
Based on my observations of many engineers as their career paths developed, I noticed that some characteristics and skills are fundamental, not only to individual success but also for the team as well.
Technical knowledge is fundamental, but it is not everything
There is no doubt that technical knowledge is fundamental. The more an engineer knows about algorithms, design patterns, tests, databases, system design, microservices, agile processes and a host of other topics, the better he or she will perform. After all, this knowledge is the essential groundwork for producing good software.
The point is, that software engineering is not only about designing architectures and writing code. There is more than one solution to a given problem and in order to define the best solution, you need an in-depth understanding of the purpose of the software, the impact you can expect on business metrics and the criteria for evaluating success.
Depending on the size of the company, a development team might consists of people with different backgrounds, including developers, the engineering manager, product manager, and UX / UI professionals, all collaborating to deliver a great product. Another important factor is that some solutions may depend on other teams or companies. It is therefore crucial that the software engineer knows how to communicate and negotiate with other teams and organization members. Obviously other skills, like communication, result orientation and teamwork, should be considered, not only for the success of project or product development, but also to develop an outstanding career in engineering.
Contrary to what many people might think, software development is an extremely collaborative activity that demands intense communication both inside and outside the team. To illustrate this, here are a few examples:
Ceremonies: Teams that work with agile software development methods go through a series of ceremonies as their development cycles progress, like planning, daily meetings, grooming, retrospective, etc..
These ceremonies allow engineers to state their points of view regarding various aspects of software development; for instance, the best strategy for developing a feature, and in particular, how the development process can be improved.
Knowledge sharing: developers often need to explain to others how they arrived at the technical decisions made throughout the development of a project, or how to use certain new technology concepts.
Ideally, everyone within the team should be able to accomplish any planned task. The best results are obtained if knowledge is widely distributed among team members.
Communication outside the team: In many situations, it is necessary to interact with other teams and corporate departments.
- To define contracts and types of integration;
- To support development or bug fixes;
- To understand requirements;
- To give your work and achievements a higher profile.
Knowing how to listen and express your ideas and opinions in a clear and constructive way is often a challenge. It is also a fundamental part of the maturing process for the entire team.
Making this kind of decision is not easy, but it is necessary. You need to ask yourself what is the best solution to a problem given the time constraints and resources available? Which solution will produce less technical debt and at the same time achieve the desired result? Which solution will be easier to maintain? These are some of the questions that developers can answer based on their experience with other projects, technologies, and architectures. The main objective is to be able to state the pros and cons of each solution, given the market context and expectations.
Whether you used OKR or another method, keeping the focus on goals and expected results gives developers the opportunity to propose the most appropriate solutions to a problem within a given context, boosting the company’s ability to deliver value to the market. In addition, ensuring that achieved results are visible gives engineers a better perception of the impact of their work on the organization’s performance.
“Talent wins games, but teamwork wins championships” — Michael Jordan, professional basketball player.
“Every successful person knows how important they are to the team, but they also know that they would not make it on their own” — Bernardinho, coach of the Brazilian volleyball team.
A team of people with different ideas is a healthy team and some conflict is natural. Team members should know how to resolve their conflicts and not allow them to turn into confrontations. In the final analysis, everyone has the same goals: a successful outcome for the project, the team, and the company. Flexibility and keeping up the team spirit are vital if the team is to remain productive.
How useful was this post?
Click on a star to rate it!
Average rating / 5. Vote count: