Yesterday, one of my friends asked me a very interesting question. He asked me "How would you define a good Engineering Organization"?. Both of have spent long years as part of various Software Engineering organizations and hence was very surprised that this question was brought up. We ended up discussing various aspects of a good Engineering Organization for quite some time.
Just my thoughtss...
So the idea behind this post to provide my take on a "Good Engineering Organization" and also to consolidate some aspects that makes a particular organization great.
caveat: The post is based on my experiences in Software industry, where these kind of Organizations are referred to by names like "Software Development Organization", "Product Development Organization", "Software Engineering Organization", etc.
In my view, the core charter for an Engineering Organization is "to ship (or deploy) good quality, usable software in the fastest possible time within the budgeted costs".
The moment I mention this, many questions pop up:
a) What about research and innovation?
b)What about requirement(s)?
c) Have you thought about scope creep?
d) What about design and process?
e) What about resources?
f) What do you mean by good quality?
g) What about maintainability? etc.
Yes, these are key questions that need to be answered. But a good organization would allign the answers to the above mentioned questions in a way that would ensure a good product being shipped in the fastest possible time with reliable quality. The ability to work around the constraints and still meet the core charter would differentiate of a Good Software Engineering organization from the rest of the crowd.
Next comes the question, on whether there are any key attributes that can be used to identify a Good organization from the others. My answer would be "Yes", but this is more of a gut feel - as I do not have enough data to validate or refute any of the claims i am about to make below. The observations comes from my own personal experiences in working with different engineering organizations for significant period of time.
So here goes my list:
a) A clear charter and direction to the team. - This really helps because everyone involved knows what to chase and more importantly "what not to chase". The charter need to be well articulated in a simple sentence.
b) A good set of smart people with a clear purpose - Never underestimate this. Bottom line, this is "people game". You need to look for a set of smart people who are self motivated to excel as part of the "CORE TEAM". Once you have it you have crossed the biggest hurdle.
c) Cohesive Team - The team need to be a cohesive whole, who have free and open communication channel. They should work in a open culture where there are no secrets hidden behind the closets (or secret projects and agendas). They are willing to help each other out to reach the final objective of realizing the core purpose.
d) Working Iterative Process - I have seen organization flog this item like crazy. But what helps is to have a simple iterative process which is easy to implement and follow. The basic idea would be is to get things fast, so that you can check and validate your process. A good process is one which even the youngest as well as the oldest engineer in the team can follow with minimal effort and can talk about the same with a sense of pride.
e) Standardized tool sets - The organisation should use a standardized set o t tools and development paradigms. They help ensuring re-usability and leveraging commonality.
Comments
Post a Comment