Best Practices

Some simple, yet sometimes-forgettable practices to remember:

  • 4 attributes of good code: Maintainable, efficient, usable, dependable
  • Establish programming conventions before beginning
  • Make code portable. Don’t hard-code values
    • SPOD: Single Point of Definition
  • Be pro-active with tests. Use Test-Driven Development
  • Deployment considerations:
    • Keep only what is needed – nothing unused
    • Have a roll-back strategy
    • Use automation for repeatable processes – eliminates human error
  • Traditional Waterfall approach
    • Requirements, Design, write code, subsystem testing, system testing
    • The assumption is that this process is rigidly consecutive, e.g. Once requirements are done, they will never change. This does NOT reflect reality
  • General problems:
    • Poor code quality
    • Unmaintainable
    • Inaccurate understanding of user needs
    • Inability to deal with changing requirements
  • Specific problems:
    • Ambiguous communication
    • Insufficient testing
    • Bad requirement management
    • Undetected inconsistencies in requirements
  • Best practices
    • Develop iteratively
      • Resolve critical risk before making large investment
      • Early iterations promote early feedback
    • Manage requirements
      • Expect them to change
      • Agree with user on the WHAT, not the HOW
      • Prioritize the requirement changes
    • Component architecture
      • Permits re-use
      • Allows use of commercial software and APIs
      • Easy to break down tasks for a team
      • Improves maintainability and extensibility
    • Model software visually
      • Promotes unambiguous communication
      • Can hide/expose details in accordance with the requirements

Sources:

Wiki

Lecture

Blogs and Podcasts

This is a list of blogs and podcasts related to software engineering and technology in general that I’m trying to follow regularly:

Blogs:

  • Coding Horror: https://blog.codinghorror.com/
  • Scott Hanselman: https://www.hanselman.com/
  • JavaScript Tips: http://www.jstips.co/
  • David Walsh Blog: https://davidwalsh.name/
  • Daily WTF: http://thedailywtf.com/

 

Podcasts:

  • Hanselminutes
  • Data Skeptic
  • Partially Derivative
  • Wall Street Journal Tech News Briefing
  • Software Engineering Radio