Software Engineering for
small Product Companies
      Raman Kannan
What makes ExultSoft
                           Product/Technology
                                   Success depends on a
                                   good product or new
                                   technology




  People                           Processes
 Most important asset of                collaborative and concerned with
 the company                            completing a project as a whole
Process
•   Must be predictable
•   Must be repeatable
•   Must be harmonious
•   Must be smooth and reliable
•   Must be adaptible
•   Must be learnable
•   Must be simple and documented
Optimizing the Process
• Auditing, documenting and improving
• What SDLC model do you follow?
• Do you know which phase consumes
  maximum effort vs maximum time?
• How do you optimize – without some
  historical statistics how can you leverage
  Pareto Rule?
• Do you track lessons learned after
  mistakes?
What cannot be measured, cannot be improved!
Process visibility
• Do you involve your customers when
  appropriate at the earliest time
• Do you see your managers to be enablers or
  bureaucrats?
• How do you escalate problems?
• How do you leverage each error that is
  identified?
• Process transparency – does management view
  the same status you do?
People
• Must be self empowered
     – Each engineer should be perpetually
       optimizing -- improving and learning
     – Do you know what errors do you make when
       coding?
     – Do you know your own SWOT
         • Strengths, Weakness
         • Opportunities, Threats

Everyone can contribute to marketing – brand ambassador, identifying new clients
How to know thyself?
• Gather minimal statistics
    – Types of errors you make
    – How good is your estimate?
        • Do you estimate the size of the product?
        • Do you estimate the time it would take?
    – Time management techniques
    – Planning
    – Preparedness
These are not to find fault with you but help you improve by yourself.
Planning
• No one plans to fail!
• But most who fail, fail to plan.
• Planning is very important.
• Everyday you should have a plan
• That plan should include a bit of learning,
  bit of introspection
• How can I do better? How can I improve
  the product or customer experience?
Specific things you can do
• Record how long you take to correct a
  defect? – develop a statistics
• How many defects do you typically
  introduce?
• What type of defects do you introduce?
• Do you document your own engineering?
• Do you document your design process?
• If you do, can someone review and follow?
     Again, what cannot be measured cannot be improved.
Team
• It is not the individual that counts – it is the
  collective
• Do you help others learn new technologies, your
  product, your effort?
• Do you learn from others?
• Do you help others excel in what they do?
• Do you help others improve by giving them
  appropriate tips?
• Do you hold others accountable when they do
  not pull their weight? – this is important
      All the wheels have to run at the same speed!
Products
• Products includes technology
• How good is your product design?
     – Functionally
          • Is it useful to a customer or more than one customer
          • Engineering right product vs engineering product right
     – Structurally
          •   Is it reliable, easy to maintain and easy to understand
          •   Easy to modify and improve upon
          •   Easy to integrate within an external environment
          •   Architecture is key
Software design is hard, but that is the investment. Do not start writing code.
Design hard. Review your design. Document your design!
Mother of all products
• Requirements Document
  – Duly signed/dated off by customer
    • This should be agreed upon during the
      engagement process
• Test Plan/Acceptance Document
  – Duly signed/dated off by customer
    • This should be agreed upon during the
      engagement process
• Design Document
Learning from mistake
• Mistakes and tribulations are essential to
  grow!
• Do you accept you have made a mistake?
• Failure and mistakes – makes us stronger
• People who do nothing make no mistakes
• Do you use them to grow?
• Making the same mistake more than once
  is one too many!
Product Engineering
• Is a multi-faceted, collaborative effort
• Small firms depend on good product
• Good products are possible with good
  people, processes
• Mind your process/mind the company you
  keep
• C or C++ or Java or .Net – they are
  incidental to product quality

Software engineering for small product companies

  • 1.
    Software Engineering for smallProduct Companies Raman Kannan
  • 2.
    What makes ExultSoft Product/Technology Success depends on a good product or new technology People Processes Most important asset of collaborative and concerned with the company completing a project as a whole
  • 3.
    Process • Must be predictable • Must be repeatable • Must be harmonious • Must be smooth and reliable • Must be adaptible • Must be learnable • Must be simple and documented
  • 4.
    Optimizing the Process •Auditing, documenting and improving • What SDLC model do you follow? • Do you know which phase consumes maximum effort vs maximum time? • How do you optimize – without some historical statistics how can you leverage Pareto Rule? • Do you track lessons learned after mistakes? What cannot be measured, cannot be improved!
  • 5.
    Process visibility • Doyou involve your customers when appropriate at the earliest time • Do you see your managers to be enablers or bureaucrats? • How do you escalate problems? • How do you leverage each error that is identified? • Process transparency – does management view the same status you do?
  • 6.
    People • Must beself empowered – Each engineer should be perpetually optimizing -- improving and learning – Do you know what errors do you make when coding? – Do you know your own SWOT • Strengths, Weakness • Opportunities, Threats Everyone can contribute to marketing – brand ambassador, identifying new clients
  • 7.
    How to knowthyself? • Gather minimal statistics – Types of errors you make – How good is your estimate? • Do you estimate the size of the product? • Do you estimate the time it would take? – Time management techniques – Planning – Preparedness These are not to find fault with you but help you improve by yourself.
  • 8.
    Planning • No oneplans to fail! • But most who fail, fail to plan. • Planning is very important. • Everyday you should have a plan • That plan should include a bit of learning, bit of introspection • How can I do better? How can I improve the product or customer experience?
  • 9.
    Specific things youcan do • Record how long you take to correct a defect? – develop a statistics • How many defects do you typically introduce? • What type of defects do you introduce? • Do you document your own engineering? • Do you document your design process? • If you do, can someone review and follow? Again, what cannot be measured cannot be improved.
  • 10.
    Team • It isnot the individual that counts – it is the collective • Do you help others learn new technologies, your product, your effort? • Do you learn from others? • Do you help others excel in what they do? • Do you help others improve by giving them appropriate tips? • Do you hold others accountable when they do not pull their weight? – this is important All the wheels have to run at the same speed!
  • 11.
    Products • Products includestechnology • How good is your product design? – Functionally • Is it useful to a customer or more than one customer • Engineering right product vs engineering product right – Structurally • Is it reliable, easy to maintain and easy to understand • Easy to modify and improve upon • Easy to integrate within an external environment • Architecture is key Software design is hard, but that is the investment. Do not start writing code. Design hard. Review your design. Document your design!
  • 12.
    Mother of allproducts • Requirements Document – Duly signed/dated off by customer • This should be agreed upon during the engagement process • Test Plan/Acceptance Document – Duly signed/dated off by customer • This should be agreed upon during the engagement process • Design Document
  • 13.
    Learning from mistake •Mistakes and tribulations are essential to grow! • Do you accept you have made a mistake? • Failure and mistakes – makes us stronger • People who do nothing make no mistakes • Do you use them to grow? • Making the same mistake more than once is one too many!
  • 14.
    Product Engineering • Isa multi-faceted, collaborative effort • Small firms depend on good product • Good products are possible with good people, processes • Mind your process/mind the company you keep • C or C++ or Java or .Net – they are incidental to product quality