Saturday, September 13, 2014

The 4 P's Of Software Management

The 4 P’s of marketing are very well regarded and known even by people who are not in the field of marketing.  One of the challenges that many in the software development industry face as they grow through their career is a battle in their hearts and minds between staying technical vs moving into the management space. It’s a constant battle which anyone coming from the technical background always faces.  I have tried to list down what I consider as the most important 4 P’s that one has to master to do well in the software management space.  These are extremely relevant especially in a software product based organization, but some may apply to a services oriented organization as well.  This assumes that individuals already have a good technical background or experience and hence does not consider that as an additional requirement since that is the basis of this blog.

Product
In order to grow in your career, you should have the knack and understanding of the domain, industry, and business the company is dealing in.  While, you may not have performed the role of a product manager, in order for you to gain respect across the organization and especially of your team, you will need to pitch in with your ideas and opinions on market trends, importance of capabilities for your potential customers, and weigh in with priority discussions.  This is typically thought of as the realm of product management folks, but in order for anyone to establish themselves as a leader for the company, this is a very critical skill to develop and hone.

Project
The next skill that you are expected to master and be good at is in pure project management capabilities and the ability to take any project, however complex, and deliver it within the timelines required for the company, working across different organizations, rallying everyone around the end goal of a good, quality project delivery.  While, typically this is thought as the expertise of someone with a PMP certification or project managers only, for someone to progress their career through software management, one should be extremely skilled and equal or better most of the project managers out there in the world. Obviously, it isn’t a skill that you will perform on a daily basis or on an ongoing basis, but you should have demonstrated these skills a few times to establish yourself and gain credibility.

Process
Any organization should never have an established, settled process that is followed to the “T”, especially in this day and age while developing a product.  As most organizations migrate from a waterfall development methodology to a pure agile model, and/or from a “walled development vs operations” culture to a “devops” culture, the processes have to be adapted and changed all the time.  If you keep your processes the same even for 2 releases continuously, you are not using the continuous improvement philosophy which is vital for an organizations success.  The reason I feel this is the case is because there is no perfect or ideal agile or devops model, and each company has to have their own version or variant of it, and adapt it to suit the needs of the company, product, team structure, culture, background and so many other factors. 

Hence, it is extremely important for anyone who wants to excel in the software management space, to ensure that they have a huge impact and contribute towards the process changes in the organization. Typically, this will go even beyond your teams or products and provides the opportunity for one to have a lasting legacy impact on the company.

People
The final P in the puzzle is obviously that of people management and the one that most technical professionals struggle with the most. They are so attuned to working with computers in their cubes and most uncomfortable in dealing with people. This becomes extremely critical because the success of a manager depends on him or her taking the team along with them and helping them grow and learn in their career, and unless one can extract the best from your teams, the manager and team will always fall short. The obvious thing to remember here is that teams and people follow leaders and not managers, and so if you think and act like a manager vs a leader, it will be very difficult for you to master this P.


Hopefully, you find these simple points helpful and ensure that you observe and learn as you work on a daily basis and come to the crossroads of this important decision in your career on whether to remain technical or take the plunge to move into the management track.

Saturday, September 6, 2014

Factors to consider while selecting a job offer

Some caveats – my experience is based on software jobs and work in this domain. There are always exceptions to some of the examples I may have quoted below since my attempt is to generalize as much as possible.

Oftentimes, I speak to graduating students or college students when I’m on a recruiting drive or as a guest speaker.  One of the most commonly discussed topics becomes the most attractive companies visiting a campus and their compensation structures along with stock options and joining bonus packages. Based on this, it’s clear to me that no one needs to be advised or taught about considering the salary structure and other perks when deciding about a new job.  However, based on my experience, I did want to list down other factors that candidates should consider deeply before making career decisions. 

Domain or Industry
Obviously, at the highest level one should consider the domain or industry the company you are joining is in since it better be something you enjoy and would love working in for maybe 5 to 10 years or even your entire life. Typically, most individuals will work in a maximum of 2 or 3 different domains in their life – of course, some may stay in only one domain throughout their entire working career.  So, you better ensure that the domain the company is working in is something you like or love, or at least do not detest it. In fact, if your gut tells you that you do not like finance, do not accept a job in a financial or banking industry, even if the package seems attractive, since in order for you to do well in a job and rise through the ranks, it will be critical for you to display your knowledge and passion in that domain.   

The company
One of my theories is also that for the most part, an individual has a DNA for thriving either in a smaller, startup type company or a larger, structured company. There is no right or wrong in this but it’s important for an individual to figure this out sooner rather than later. Now, there could be exceptions and examples of some who have flourished in both a smaller setup as well as a large company but as I mentioned, these would be exceptions.

If your gut tells you based on one experience of things not working well say for example in a larger company because of processes or structure, ideally do not take risks again even if another large company looks attractive from the outside, or if the loose processes or lack of process in a smaller company is something you do not like, it’s going to be hard for you to adjust to another startup.  So, firstly, ensure that you have figured out your own likes or dislikes when it comes to this basic structure and then begin the research on how well the company is doing. For public companies, obvious data should be available externally to learn whether it is on an upward swing or a downward trend. Ensure, you typically join a company while it’s on an upswing and things are exciting at the new workplace.

The work
This probably is one of the major factors that could influence one’s stay at a company in terms of the type of work that gets done within the group or by individuals in the team.  Hence, it is critical to find out, especially for people working in the software industry in countries like India, since a lot of multinational companies have software development centers in India. However, the work is typically limited to maintenance and bug fixing or following up on designs laid out by the HQ.  The truth is that besides very few exceptions, for exciting, leading edge work, you have to join an Indian based product company to be in a position of decision making. Another area to consider is whether the products being developed by the company are targeted for only the Indian market or globally.

Culture
I often say that one usually spends more of one’s awake or active time with your colleagues at work than even with your family, and hence you better like most of them.  And you better join a culture where you think you can thrive.  So, ensure you check out websites like glassdoor to learn more about the culture as long as there are enough reviews available there. Also, do not completely rely on one source while you are making this critical decision.

Final Thoughts

Unfortunately, the one thing which results in most departures from a company – the immediate boss or supervisor is something one does not have much control over during the joining or decision making process. This is because you either may not have much information or worse yet, may not know who your boss will be. However, if one is aware of the details, it will only be helpful to figure a little more out which unfortunately is only possible if you have friends at the company.  So, it indeed is strange that the biggest factor contributing to exits is something someone entering a company does not have much control over.