Cracking the Code: Unveiling the Traits of a Great Software Engineer - Paper Review
The content here is under the Attribution 4.0 International (CC BY 4.0) license
What Makes a Great Software Engineer? May 2015 - Conference: 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering (ICSE)  - available online version - last accessed: Jul 19, 2023.
- The literature is based on novice and students starting their careers rather than experienced software engineers
- ACM curricula says software engineers need technical knowledge and project management.
Contribution of the paper is the understanding of software engineering expertise as viewed by experts software engineers.
Related research is extensive, but a few focus directly on software engineers expertise.
- Insights in software engineering came from at OOPSLA 2003, discussed the need for: design analysis, embrace diversity, ,multidisciplinary project teaming, large-scale development and quality code.
- Dijkastra: obvious and elegant code , constructed with provable correctness.
- Experts are more productive, systematic, and well-prepared.
- Research suggests qualitative and environmental differences.
- Setting, communication and alignment of goals are important.
- Effective conflict management.
- Experts have knowledge of code ownership, the technical domain, and argumentation skills
- ideally sample wide range of software engineers.
- Face to face semi structured interview - about 1 hour.
- Licensure and accreditation for software engineers is still uncommon.
- Authors based their selection on social “people having achieved some degree of recognition as software engineers”.
- At or above Level 2 - those are experts by other engineers via hiring promotion process.
- Random sampled engineers (round-robin fashion).
- Out of 152 contacted engineers, 59 was interviewed.
- 53 attributes (internal and external)
- internal: personality and ability to make decisions
- external: focus on emotional intelligence and decision making models to their software, their team mates, stakeholders and potentially millions of users
- 18 attributes
- Not great when started but learned to continuous learning - technology change fast
- This is also connected to what is dicussed in the course “Learning how to learn”
- Intrinsically interested in the area they are in, not just looking for rewards like money
- let new information to change how they think
- it is rare to have one engineering that have a complete understanding of they system
- creates behavioral feedback
- decisions should be made using data
- Decision making
- synthesizing the current context, decision alternatives, probabilistic outcomes and values of outcomes
- having book knowledge is not sufficient
- Knowledgeable about people and the organization
- creates shared context
- creates shared success
- managers have a broader view, engineers have a detailed view
- creates a safe heaven
- a place to improve from mistakes without negative consequences
- pains from mistakes are the best teachers
- not appreciate wasting time shifiting the blame for problems
- Software product
- simple and intuitive designs
- avoid complexity
Treats to validity
- Treats to internal validity
- informants could produce more attributes after the interview
- Treats to external validity
- small sample
- results might not generalize to other cultures
- organization size might also affect the results
- Productivity is one criterion for excellence
- Software engineering is a socio-technical undertaking, not just a technical one
- Simply delivering code is insufficient
- For researchers
- not aware of tools that help engineers be more well-mannered in emails
- evaluate tread-offs
- For novice engineers
- can use the attributes to aspire to be great engineers
- better present them to their employees
- For managers
- help senior engineers to improve mentoring, raising challenges and walking-the-walk
- avoid not well-mannered engineers
- For educators
- results rise questions about curriculum
- decision making is not part of the ACM computing curricula
- explicitly discuss what students will not learn in school/university
- P. Li, A. Ko, and J. Zhu, “What Makes a Great Software Engineer?,” 2015, pp. 700–710, doi: 10.1109/ICSE.2015.335.
Table of contents
- Related work
- Personal characteristics
- Treats to validity