>The Art of Managing


As an technology entrepreneur, you will need to manage a lot of things. This will include, not only the technology (programming and software development), but also administration, management of team, Human resource, sales and even writing business plans/marketing plans and what not. Yes, not only this but a lot more.
This will not be easy and who said entrepreneurship is easy. It will test your endurance and will push you to your physical limits. But in the end, you are responsible for everything.
So here is my guide of what one needs to do to manage his/her time while launching their enterprise.
  • Short Meetings
    • Schedule project meeting with staff. It should not last more than 10 minutes and at max 20 minutes. Discuss what needs to be done. Make quick minutes. Schedule and set deadline to the team. Use a collaborative project management tool and assign them to the team. 
    • Keep these meetings short and regular. Even meeting daily will be great.
  • Use Technology
    • Information Technology is not there to build solutions for your clients, it is there as the best tool for you to make yourself and team more productive. Use technology to the maximum. Here are a few recommendations
      • Redmine for Collaborative Project Management
      • Google Apps:  for email, document sharing and intranet based services
      • GoogleTalk Chat: Collaborate more online. You can ask a lot of questions through google chat than in person. Do it regularly and Google will even keep track of your chat in your email account.
      • WordPress: For a quick way to make and manage your company website. And do not forget to use its plug-ins. You will be surprised by the power it offers.
      • GNUCash: For maintaining your financial accounting. Its a great alternative to paid accounting packages.

  • Hiring
    • Do not hire too many folks. Hire only the essential. That will keep your enterprise cash flow positive. And if someone is badly needed, see if you can do with a part time individual rather than a full time resource.

  • Seek a Mentor
    • As an entrepreneur, you WILL make mistakes. No doubt about it. So get yourself a senior and experienced person to assist you. Ask him a lot of questions and take his advice. I am sure you will grow much faster than without him/her.

  • Office Space
    • Scott McNealy (former Sun Microsystems CEO) once commented after the 1990s bubble burst that they acquired too much retail office space in too short a time. It’s always good to show off a big office and a big team. But can you really afford them? So start off by sharing office space. Find other small enterprises and see if they can give you office space. Do not spend your precious little money on renting/leasing/buying big offices in anticipation of new hirees.

  • Work Hard/Play Hard
    • You will be expected to work 70 hours a week or more. You will also be expected to lead by example. You will be needing to be there for everything. But dont take work to your head. Go and have some fun as well. Take up some physical activity. Like hiking, playing cricket, racquet ball/squash, jogging. Anything. It is the secret for a healthy lifestyle. Without it, you will inevitably run into many health problems as you advance in life. So avoid the obvious health hazards and do the right thing. Get yourself in physical health.
So if you can do the above, you have a better chance to succeed.

>Lessons for Budding Project Managers


Over the past many years, I have worked with numerous project managers and team leads. Some of them were really great and I learned a lot from them. However, others suffer from what I call, “Jaldi kya hay” syndrome and usually are below par at their performance. They tend to make the most common mistakes one can think of and yet do not see anything wrong in doing so.

So for all those budding project managers, I have put together a list of things to be mindful of. Use it as a guide and as your rule in your organizations.

Martial your solders: Have the whole team involved during any major project, especially during the critical days before the release of any software product. And if you find someone sitting idle and not doing any task, assign them something to do. For example, let them do research on a particular topic. It is better than doing nothing.

Delegate Responsibility: The bulk of the work should be done by the team members hired to do the job. Many managers think they are better software engineers than their team members, therefore end up doing last minute work themselves by pulling all nighters. If the manager is doing it, then what is the purpose of the rest of the team? It cannot be emphasized enough that this is not your job description to code, rather you are expected to manage and coordinate with the team and get them to deliver the tasks at hand. If you believe that the current team members cannot deliver, then you must also consider the fact that you have hired the wrong people. Therefore, learn to delegate or let them go.

Plan ahead: There could be a time, when certain team members take short leave or call in sick at the critical juncture of the project. Unfortunately for you, the client does not care about that. Therefore, plan ahead and let the team know that they must be present to meet the deadline. Send them a car (or a taxi) to pick them up if they cannot come to the office for some odd reason, treat them to a lunch/dinner if they sit late or come over the weekend or whatever in your power to keep them motivated enough to get the work done on schedule. Otherwise, it is your neck on the line, not some junior programmer’s. Also make sure that the team knows the deadline schedule clearly. Post it on their notice/electronic board or send them an email reminder. Just make sure that they know it that they cannot miss the deadline and it should definitely not be something they find out at the last minute. Learn to plan ahead and monitor the progress.

Learn the art of transitioning: There will be times when certain team members are moving out (quiting the team) or moving into the team (joining the team). Make sure you have a plan to manage this transition, especially during a major launch phase. All assignments have to be done before such a transition can take place. And if that is not possible, then make sure that there is ample time spent by the outgoing person with the new team member (replacing him/her) in passing on the knowledge. Creating an excuse for not doing work because you did not have the right resources will not win any sympathy from anyone. Not even your boss let alone the client. Therefore, learn to transition between players especially during tight deadlines.

Manage time: Do not schedule any unwarranted meetings when you have a major launch pending. If you cannot allocate time for the most critical project that you are managing, certainly, your team will never make time for it either. Use project management softwares and other similar tools more diligently. If you are not going to use them to assign and manage tasks, the team will never use them either to manage their tasks.

Be Stern and Strict: There is no free lunch, especially in a deadline oriented software company. The whole team should be there taking it as seriously as you are. It is not really worth the effort if two people out of twenty work while the rest take it easy. Learn to be stern and strict but gentle at the same time.

Grade with a Teacher’s eye: The work performed by the team needs to be graded, bullet by bullet and point by point as defined and agreed when assigning tasks. As a manager, you should focus on making sure that the team does what it is assigned and does not do what it wants and when it wants.

Do one thing, but do it right: In a typical software house, one will find the team doing a lot of work. However, if the manager is not careful, then the team will do work in a disjointed fashion, using different servers/platforms, messed up coding techniques and half hearted attempt at meeting client requirements which they poorly understand or visualize. There is no point in showing the client 500 hours of work that makes no sense and nothing seems to be totally complete or working properly. Five hours of focused work that meets all requirements for a particular sub task is much much better and appreciated by everyone. Make your team start one thing/task and make them finish it properly before they move to the next task. Learn to focus on the task at hand, and your results will improve dramatically.

Murphy’s Law: During a major release, what can go wrong will go wrong. There is no question about it. The server will crash, the software versions will be incompatible, the libraries will be missing on the deployment machines, the code will not run on deployment server and so on and so forth. Therefore, anticipate ahead and expect the unexpected to happen. Test everything in advance, try things out differently and have a fully functional version running on a mirror machine somewhere. The client will not care about new issues that popped up right there and then. They only care about work done on time and on schedule. So no amount of excuses will get their confidence back.

It is not done, till it is actually done: Never claim that it can be done in a few hours without first analyzing the problem at hand based on the available resources. Sometimes, working on a few simple pages could take dozens of hours to code. It could be the complexity of the problem, or the team could be stuck on some software bug. Therefore, never commit or claim it is complete or you can do it in so many hours/days till you have thoroughly discussed the problem with the team and your client.

Communications 101: This cannot be emphasized enough. Sometimes, managers are shy of speaking to their customers or even communicating with their team members. At other times, they simply never inform anyone, including their bosses, the issues they are facing or progress they are not making. It could be lack of resources, or even lack of time to solve a certain problem. In short, inability to share information and keeping everyone abreast of the latest development could mean disaster. When everything is honky dory, no one notices and all is well, but when things begin to go bad, then everyone starts pointing fingers. And when something does go wrong seriously, and the client and your boss find out the hard way (missed deadlines, angry client, etc) your neck will be on the line. So make sure that any news, especially bad, that comes out regarding the project, comes from your mouth.

>Effective Project Management


Projects fail quite frequently due to the manager’s inability to manage them properly. Sadly, many projects initiated in the IT field miss their deadlines and are usually well over their budget. Good Project Managers are also hard to come by, especially in developing countries, which further complicates the situation.

Project management is not rocket science and nor are we born with it. It is easy to learn and understand. Here is a guide to which I adhere to when managing large projects.

  1. Define scope of work: Develop a preliminary scope of work. It should be an overview and not necessarily a detailed specification for work. Try to identify major limitations and constraints that need to be addressed. Establish clear goals and objectives. Therefore, be clear of what you are trying to achieve from this project. Based on the above information, create a simple list of tasks and a basic schedule for delivery. Remember, this is not a detailed analysis. It is just a preliminary scope of work so that one can get an idea of what needs to be accomplished in what time and what issues can occur during its life cycle.
  2. Identify core team disciplines: Based upon the scope of work defined above, identify all the needs and resources that are required. It should include the business, technical, support and any other that may be required to accomplish the project in the given time. Once that is clear, estimate the time and skills required to accomplish this project.
  3. Identify customer needs and wants: From the start of the project, continue to gather the basic set of requirements from the client. And use this information to define the initial scope of work. Keep the communications channel open with the client and have regular interactions till the scope of work is refined and finalized. And make sure that both sides have agreed upon mutually acceptable set of deliverables for the success of the project.
  4. Develop plan of work: While defining the scope of work, interact and get regular feedback from the client as well as the team that will be working on the project. And based on the project requirements, finalize all key project objectives. Make sure that all tasks are prioritized and properly assigned. This will help in making sure that the team performs to its optimum and limited resources can be managed efficiently.
  5. Approval and implementation of work plan and budget: Initiate and hold regular meetings with the client and the development team to approve and accept the work plan. Get their feedback and modify it accordingly. The feedback may affect the eventual budget and time line. Get the client and your team to agree on and approve the project timeline. Also make sure that the budget is approved with mutual agreement.
  6. Ensure coordination and communications: This is one of the most critical and important aspect of any project. Ensure that communication channels are always open between the client, the team and all other parties involved. Have regular meetings and delegate responsibilities but hold them responsible for delivering on those tasks. And most importantly, keen an eye on the project deliverables and outcomes and make sure that they follow the schedule assigned.
  7. Satisfy the customer: This cannot be emphasized enough. We have all heard the phrase, “customer is always right” and therefore, their advice and feedback is critical for the success of any project. Continue to hold regular meetings through out the life cycle of the project. Get their buy-in for all major changes and modifications. Make sure that all communications are documented, included changes and approvals. If there are any major modifications, get their justification as to why is it required at this time. Make sure to review the impact of changes on the project and if the work plan needs to be modified, get the client written approval for it.
  8. Assess and adjust performance: Conduct regular internal project reviews. If required, work closely with each individual in the team to keep their productivity to the optimum. As project manager, one can improve the productivity of its team members by making sure that the team understands the scope of work (including modifications required). Keep a close check on the progress including monitoring the, actual work performed vs planned work. Make sure that you address all major issues, concerns and opportunities with your team members. Also, be quick to respond to any changing conditions. Identify them early and take prompt actions.
  9. Indicators of success: Throughout the project life cycle and especially when it nears completion, make sure of the following questions are answered. Consider them as the guide to see if the project was a success or not.
    1. Were the customer expectations met?
    2. Was the project completed on time? Were all deadlines, milestones met?
    3. Did the project complete within budget? And if not what were the budget overruns?
    4. Were the customer’s objectives and agreed upon deliverables met?

>The Effective Executive, by Peter Drucker


I recently came across this book The Effective Executive by Peter Drucker and I recommend all budding entrepreneurs read it thoroughly. Especially those who would be managing a fledging startup right out of school.
Here are five things that Mr Drucker recommends all managers do.

  1. Time: To be effective is to know “where your time is spent”. Time is one commodity that cannot be replaced or changed. Once lost, it is gone for good. Therefore, all managers must be careful of what they do with their time.
  2. Focus on results: A lot of us tend to work long hours but fail to achieve the desired results in a given amount of time. We strive to work really hard, rather than smart. We should set up goals before initiating a task. What needs to be achieved in what time. What results are expected. Once that is clear then we should execute the task.
  3. Build on Strengths: Get the best out of the team by making them do what they are best at. Not all of us are able to handle everything. Some of us are good managers, others are great at taking orders and executing them. For example, in a typical software house, some are excellent software engineers but fail to see the finer side of managing a large project. While others may be weak in programming, but can manage large and dispersed teams quite well. Others can handle customer relationships and clients much better. Find what is the best among your team and give them the work that they are ideally suited for.
  4. Keep a clear focus: Always be clear of what you want to do. Trying to do hundreds of tasks in a short span of time will not achieve desired results. Rather, you will end up behind in most of those tasks. It is better to prioritize and clearly focus on a few tasks that you can achieve in a finite amount of time. Do them and reassign the rest to others.
  5. Make effective decisions: Never shy away from making decisions, but weigh them before making them. Always get everyone’s opinion, but make your own judgment.