PART C | WHAT MAKES A GREAT SOFTWARE ENGINEER?
On this page 6 headings
23. Four qualities of a great engineer
The researchers interviewed experienced software engineers and published their findings at the International Conference on Software Engineering (ICSE). The findings cover being a competent coder, interactions with teammates, decision making, and personality traits. Strong coding skills matter greatly, but are not sufficient by themselves.
A great software engineer also makes sound decisions, builds shared understanding through effective communication, and keeps learning. These qualities reinforce each other: good decisions need information, information often comes from other people, and technical knowledge must remain current.
Remember | Competent coding is necessary, but great engineering includes judgment, teamwork, and learning.
24. Coding competence and engineering decisions
Competent coding includes producing clean, modular, reliable code and practising effective design principles. Even if the UI, documentation, sales and marketing are good, a buggy, poor-quality product will not sell.
Engineers also make macro-level decisions, such as architecture, framework, and library choices, and micro-level decisions, such as which algorithm, data structure, or class design to use. Both types affect the final product.
Good judgment develops with experience, but the lecture emphasizes using a systematic decision process rather than relying only on intuition.
25. Rational decision-making: five steps
1. Identify the decision to be made. State clearly what must be decided.
2. Identify alternatives. List plausible options instead of immediately choosing the first idea.
3. Consider potential outcomes. Think through the likely consequences of each option.
4. Evaluate for the given context. Compare those outcomes against the project’s needs and constraints.
5. Make a decision. Choose the option best supported by the available information.
The process depends on gathering enough information. Engineers should ask others for help, listen to evidence, and remain willing to change an earlier opinion.
Remember | The correct choice depends on context; the process matters more than a favourite tool.
26. Communicate according to your audience
Effective communication is more than speaking clearly. It means explaining ideas at a level the listener can understand while preserving the correct meaning.
An engineer may need to explain the same issue to a non-technical user, a manager, and a technical colleague. The relevant details will differ. Avoid unnecessary jargon with non-technical listeners, but do not oversimplify so much that they form the wrong understanding.
Building shared understanding helps the team protect the product’s intended purpose.
27. Continuous learning and professional growth
Software engineering changes quickly. Programming languages, development environments, collaboration methods, and tools evolve. Great engineers stay curious, ask how things work, and keep updating their knowledge.
The lecture suggests learning through blogs, websites and forums, discussions with others, conferences, and academic research papers. The International Conference on Software Engineering (ICSE) presents emerging research and ideas. ICSE also has a track on software engineering education.
The course ends by noting that organizations may use different tools and detailed processes. Once you understand the underlying concepts, you can adapt to different ways of working.
Remember | Learning is not an activity that ends when a course ends.
Course summary
The course covered software processes; tools for requirements, planning, development and testing; code, including organizing code and best practices; and teams, including working effectively with others. Different organizations differ in tools and details, but the conceptual process is the same. Keep learning continuously.
