In professional life no matter what you do, you are replaceable if what you do is replicable. This is more evident in software product development companies as access to to rock star engineers (i.e. those who do incredible what they do) is key for success. Hence a software product development company will always replace those who can be replicated. This replace & replicate must have been same even in agriculture age or industrial age (think Ford assembly line).
There is a distinct difference of replicating what you do vs replicating how you do. Replicating ‘How you do’ is difficult, the most difficult it is, the less chances that you will be easily replaceable. Ok hoping I am not establishing a theory here. This thought came while running a startup, I find many people walk-in, work over the years and suddenly find that they are replaceable, it confuses them, irritates them, makes them feel that company is not understanding their value. However this is natural /bound to happen if you have stopped adding values to what you do and also bringing your own differentiation to it.
Lets take an example, during a software product development start, a set of process, framework and learning process gets established, each engineer gets it going as per the defined protocol. Over the time, only certain engineers think different way, add/suggest a different process/framework/methodology and 90% others simply follow what has been written/established on day one. Now these 90% claim they didn’t have time, they thought ‘doing as per rule’ is the way to go forward. However irony is whatever this 90% engineers did, all their knowledge is captured, product has been established and there is no differentiation in their thought/action, hence they are replicable & replaceable. They are not going to go to next stage of product development life cycle for that specific product.
Only those key people who kept on modifying their approach, questioned ‘why we do the way we do’, debated about different ways, forced some of their small initiative to be added by demonstrating advantages… these type of engineers are less replaceable, how they do is difficult to replicate’, they are fit for ‘software product engineer’. Here is my own analysis that I use for evaluating during interviews/assessment for finding a product engineer. If you score 3 ‘yes’, you are replaceable as a software product engineer. oops..
1. Are you using same programming language for last several years?
2. Are you using one framework for your product development for years without even checking what’s coming on in the framework roadmap ?
3. Do you think more number of years of experience in product development means more expertise?
4. Are you only a developer who writes code but who doesn’t know what a User Interface usability is?
5. Do you think writing more number of lines of code means lot of work?
7. Do you only read/visit Infoq.com or stackoverflow.com and hardly visit tech-business blogs like Techcrunch, Pluggd.in, Watblog, Mashable?
8. Do you think coding is fun but system administration/vi editor/server setup has no value?
9. You don’t find time to write blogs, talk tech things in your company/city?
10. Do you think if there is no complexity in software development (hi-fi patterns for sake of) than it wont be a great product ?
Note : This post is highly personal style, I am happy to hear strong arguments against it. Based on observation, talking to friends, other startups, and communities, I think there are less software product engineers in India vs software service engineers a.k.a ‘software outsourcing engineer’.