Issues with Software Engineering and Engineers

  • Working software is changed unnecessarily for a variety of reasons which lead to broken products, or lower performing (slower/less efficient)

  • These reasons can be for non business cases and for superficial reasons

    • For example

      • To try new technologies

      • Boredom

      • Improve something cause it is looks good

      • do something cause it is a challenge

      • change something cause the way it was written was not to your liking or taste

      • rewrites for no gain for the stake holder

      • Forced to use new technologies due to management say so

  • A lot of this driven via ego-driven decision-making of team members, including new CEOs, tech leads, or engineering CTOs, who feel the need to make changes to demonstrate their knowledge or expertise.

  • This leads to people

    • massaging their egos

    • showing off

    • doing busy work instead of impactful work

    • doing stuff for their resume

    • Wanting to have fun rather doing things for the aim of the business

Solution

  • the importance of targeted reasoning and objective observation when making changes to software, focusing on genuine improvements rather than cosmetic changes.

  • Use a scientific/engineering approach to making changes that will bring the most benefit short and long term

  • Use shared ownership

    • refer to code as ours

    • Avoid you or I, instead use we and us

    • pairing

    • pairing in code reviews

  • Psychological safety

    • people who are scared will not take risks or feel confident to do work that is impactful or can be seen to have consequences if it does not work out

    • look to prevent major issues from leaking out from mistakes

      • code review

      • pairing

      • testing in different environments

      • ease of rollbacks or config changes

      • CI/CD pipelines

  • On self improvement

    • Dont get too tied up with the code/product

    • humility

    • therapy

Last updated