Upgrade to Pro — share decks privately, control downloads, hide ads and more …

What your mum didn't tell you about software development

What your mum didn't tell you about software development

A presentation I gave to a Year 12 software programming class during my student teaching at Lynfield College.

Chris Jester-Young

August 27, 2004
Tweet

More Decks by Chris Jester-Young

Other Decks in Programming

Transcript

  1. What your mum didn’t tell you about software development Chris

    K. Young Presentation for 12ISP August 2004
  2. Software isn’t just coding  Contrary to popular belief, being

    good at coding doesn’t make you a successful programmer.  The skills required to become one are usually learnt by experience rather than study.
  3. It’s all about the customer  The customer sponsors the

    development of a software product, so their input is vital.  They have functionality, performance, and/or timeframe requirements.  They often revise requirements to adapt to their changing needs.  Consequently, developers need processes to cater for changes.
  4. A process, not a product  Product lifetime is typically

    long, often outlasting the original developers.  Therefore, software is normally maintained by more than one developer.  There are many aspects to a successful software development process. This presentation will discuss three of them.
  5. Software design  Code needs to be partitioned into small,

    easily-understood units.  Tightly-coupled units depend on each other’s internal details, making their implementation difficult to change.  Therefore, each unit should have a single responsibility, which other units access via a complete, minimal interface.
  6. Complete, minimal interfaces  “A complete interface is one that

    allows clients to do anything they might reasonably want to do. … A minimal interface…is one with as few functions in it as possible, one in which no two member functions have overlapping functionality.” (Meyers, 1998, p. 79)
  7. Code review  Code is normally maintained by a team,

    which has a set of coding standards to ease maintainability.  In a code review, a team member critiques code written by another member.  This serves two purposes: to allow more team members to understand the code, and to enforce coding standards.
  8. Software testing  In order to ensure correct operation of

    a software product, it needs thorough and regular testing.  Coders write unit tests for every unit they have, based on its interface, which are executed by an automated process.  This allows regressions to be detected and fixed swiftly.
  9. More than meets the eye  There are many more

    aspects of running a successful software project.  As a developer, I’m not too knowledgeable about some of these, so I won’t go into them.  In conclusion, coding is only a miniscule part of software development.