DEV Community

Cover image for Good to Great Designs - Q&A on Software Design
Subhankar De
Subhankar De

Posted on

Good to Great Designs - Q&A on Software Design

Architecture?

  • Big Picture, What, Where of the software development process
  • Architecture Patterns(Microkernel, Microservices, Layered, Event-based, Space-based)
  • Trade-offs(Quality, Cost, Portability, Time to market, Longevity, Technical debt, etc.)
  • Technology, Storage, Security, Disaster Recovery

Design?

  • How of the software development process
  • Design Patterns
  • Classes, interfaces, functions

What is a good design?

  • Solves a problem
  • Easy to understand
  • Follows a common design pattern
  • Doesn't reinvent the wheel
  • Supported by everyone
  • Cost of changing the design is affordable

How to create high-quality designs?

  • Applying software design principles is the key to creating high-quality designs
  • Flow Charts & User stories with good acceptance criteria
  • Manage essential complexity
  • Eliminate accidental complexity
  • Document the rationales of the design decisions
  • Lots of small conversations with a lot of different people to get alignment

How to evaluate a design quality?

  • Adherence to Coarse-grained principles like abstraction, encapsulation, modularization, hierarchy, cohesion and coupling
  • Subjecting the design to change and then evaluate the cost
  • Adherence to Project-specific constraints such as language constraints, platform constraints, framework and library constraints, domain constraints, architectural constraints, hardware constraints, and process constraints

Who is a good designer?

  • Good designer is a great communicator
  • Approach
    • What problem does this solve?
    • Select a style that matches the needs of the problem
    • How does this affect the user?
    • Why this is better than the alternative?
    • Designer shouldn't reinvent the wheel
  • Understanding
    • See their perspective
    • Remove distractions
    • Anticipate reactions
    • Clarify your assumption
  • Listening
    • Let go off the ego
    • Let them talk
    • Hear what they're not saying
    • Uncover the real problem
    • Convert "Likes" into "Works"
    • Ask for examples
  • Responding
    • Give up control
    • Lead with a Yes!

What are the tactics designer should use?

  • Appeal to a nobler motive during negotiations
  • Show a comparison
  • Propose an alternative
  • Give them a choice
  • Speak the language of your audience
  • Focus on acceptance criteria avoid gold plating
  • Postpone the decision, we are smarter tomorrow than today

Top comments (0)