Thursday, May 5, 2011

Patterns of Success in Software Development

I have lately been involved in a project to integrate a number of products that came together via mergers and acquisitions; Products written in different languages, products that evolved over years acquiring different level of technical debts . As I was spending time with tools, technologies and teams, there were some distinct patterns that can be observed in successful IT shops:

  • Invest time in architecting the solution over writing code
  • Performance and Optimization considered in design, not in development
  • CPU and RAM freely used to conserve Input/ Output. Looking at the decreasing cost of computation and considering the fact that I/O is the biggest bottleneck in all big data shops, this is a good practice to adapt.
  • Follow standard patterns and best practices over home-grown coding.
  • Decentralized architecture – a lot of loosely coupled moving components working in tandem instead of a single centralized server orchestrating events.
  • Rely on metadata over manual actions
  • Invest in Quality people – small team of kickass engineers who are fun to work with
  • Step up and take time to understand the business problem instead of start coding outright
  • Standard taxonomy – each internal artifact is properly and consistently named
This list is no particular order and based on my personal experience. What patterns do you see that distinctly point to success or failure in IT teams and projects?

6 comments:

  1. In My opinion This one is most important since human resource key to success for any software firm :
    Invest in Quality people – small team of kickass engineers who are fun to work with

    Javin
    10 ways to use find command in Unix

    ReplyDelete
  2. The code is the design/premature optimization?

    ReplyDelete
  3. This comment has been removed by the author.

    ReplyDelete
  4. I agree with Javin. If I were to sort this list, the first item would be "Invest in Quality people – small team of kickass engineers who are fun to work with". Followed by "Invest time in architecting the solution over writing code".

    ReplyDelete