SECTION 03 / 3

PART C | WHAT MAKES A GREAT SOFTWARE ENGINEER?

3 min read
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.

Illustration 23 • Coding, decisions, communication, and learning.
Illustration 23 • Coding, decisions, communication, and learning.
Open image ↗
Coding, decisions, communication, 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.

Illustration 24 • Macro choices shape systems; micro choices shape implementation.
Illustration 24 • Macro choices shape systems; micro choices shape implementation.
Open image ↗
Macro choices shape systems; micro choices shape implementation.

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.

Illustration 25 • The lecture’s five-step rational decision process.
Illustration 25 • The lecture’s five-step rational decision process.
Open image ↗
The lecture’s five-step rational decision process.

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.

Illustration 26 • Explain the same issue differently to different audiences.
Illustration 26 • Explain the same issue differently to different audiences.
Open image ↗
Explain the same issue differently to different audiences.

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.

Illustration 27 • Learn from blogs, communities, conferences, and research.
Illustration 27 • Learn from blogs, communities, conferences, and research.
Open image ↗
Learn from blogs, communities, conferences, and research.

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.

YOUR STUDY PROGRESS

Finished this section? Save your progress.

Back to top ↑