Are you just a ‘resource’?

In Project Management terminology, companies usually call an employee a ‘resource’ and hardly they consider the person a human being because at end of a business day it is not about charity, but is all about ‘money’. Since ‘resource’ is a relative term, it is often considered by companies as a volatile category and after many years of services this ‘resource’ will be marked ‘saturated’ hence either a replacement is required, or wait till it gets ‘expired’.

Small to Medium companies are usually selective when they hire people. They not only do technical interviews but also analyze the candidate’s attitude towards ‘art of learning’. Especially in the case of technology, it is getting improved and deprecated every day, every hour. Small companies cannot afford spending money after the project gets finished and person becomes unusable so they usually hire multi-skilled people or those who really put effort in continuous learning.

But the case is different in the case of Medium-to-Large companies. I know many people who got rejected by companies just because they do not have a graduation. Even after we have sufficient examples of billionaire establishments started by ‘drop-outs’, our corporates do not believe in skills over qualifications. They hire ‘highly qualified’ people and ‘wrongly nurture them’ to make them ‘IT Coolies’ (In Indian context).

It was just another day like any other day when one of my colleague, after two hours of his day’s work stood up with a depressed face and rushed into CEO cabin. I saw through the glass walls there both talking, then smiling and finally laughing. After some 15 minutes he is back to his cubicle with a pleasant face but did not sit, instead he took his bike keys and went out smiling. He never returned. From the CEO we came to know that ‘he did not enjoy his job but wants to help his family business’.

One of my colleague took a half an hour talk on ‘positive thinking’ where he stressed a quote “Do What You Love, Love What You Do”. Intention was to motivate people but one of the person got double motivated and confused the company ‘I want to start my own business. I quit!’

From couple of casual coffee chit chats with some employees I got that the reason for at least 3-4 resignations were because they were put in a job where they are not interested in.

First and second category people wanted to do something which they love. But the third category?

Horrible! Unfortunately, this is true. This scenario usually happens in companies where there some ‘process’ exists, which they claim.

Just after they graduate, they are very energetic and ambitious. They join companies to fulfil their dreams. What they expect is someone who can support to chase their dreams. They came through textbooks, hands on experiments, the motivation they got from their entrepreneurship cell, the success stories of Elon Musk and Steve Jobs. Their adrenaline rush is at the peak that it is the job of their first employer to support them. But… some companies give ‘some’ training, most probably what is relevant for the ‘job to be done’ which we call fancy – “on the job training”.

Many companies give them first an ‘internal’ project after letting them sit on a ‘bench’. When some client project comes? Yeah, ‘assign’ them to the project. There starts the person’s first technology. He continues with the project and technology until they find another cost-effective method to execute it.

When a new project comes, those ‘resource managers’ from Project Management Offices, they have the task of allocating resources ‘effectively’ as per the requirements so that they can bill the customer. They don’t bother whether you like the work but they will put you there. There starts the demotivation of job but you will survive as there is a motivation of salary.

What really is the point of living such a life? You live only once. Do What You Love, Love What You Do.

Below are some points which I think you can avoid such problems when you are an ‘employee’.

  • Increase visibility Let the world know what you know. Don’t let your company assume your skills. Start a blog, write articles, publish whitepapers, join open source projects.
  • Bring power to your voice Resource Managers will think twice before they put you in a job because you are an influencer. At times, you will be the one guiding those PMOs.
  • Sharpen your Axe – Continuous Learning Just for the sake of your survival, we can say ‘I love my company’ but one day you will realize ‘company loves money more than me’. If you are caught with a situation you have to quit then this is the area where you get confidence to try something new.
  • Let your colleagues speak for you Guide them. Speak for them. In return they will also do the same to you. Befriend professionally with the colleagues of your same level or above, both inside and outside your company.
  • Initiate & Innovate Tell the company indirectly that you are very ‘proactive’. Find the areas for improvement and try to make it. Even if the company is not supportive due to bureaucracy, your efforts will be remembered when needed.
  • Soft Skills Improve your communication, leadership and interpersonal skills. Join some institute if required.

    Above are just my views and there will be much more you can add from your experience. Thank you for reading.

    This is a copy of the article I posted on MobConf Outlook.

     
  • Hey programmer, how fast you can develop a project?

    This is an age which time travels before ideas. i.e., you might encounter the subject of deadline before you come to know about the idea or requirement details.

    Depends on below properties, answers varies:

    • Number of years of experience – if you a manager,
    • Level of knowledge – if you are a manager,
    • Process – you or your company follow,
    • Type of organization you work,
    • Type of project,
    • Architecture of the project,
    • Number available resources,
    • Timeline of the project,
    • Budget of the project etc.,

     

    For a successful project at least some of the above points are mandatory. You can deliver a project in a fortnight but quality matters.

    Level of Knowledge and Number of years experience

    If you are an expert in the field which project need to be executed, then you an deliver the project really fast. But it is not always an easy task for a manager to train his team to make up with the same level of knowledge. But a manager can build a base for the project to work on. When team members are from different environments, and different environments use different processes, there might be a conflict-of-base occur. Every one including the manager must be patient enough to listen to others and build a powerful base. There will be convincing and negotiation in between, but sufficient time must be available for all these. This will be an one-time process so all the future projects can follow the same base.

    Technology changes every day, so it is very important to update knowledge day by day and make necessary changes in development and coding styles from time to time.

    When the technology or domain/concept is very new for the team, there will be a learning curve involved and the deadline of the project will be a bit far.

    Number of years experience must not be taken into account always. As I stated already, technology changes everyday and none get the opportunity to use all the technologies. So gap is a gap. For  a programmer, coding concepts and types of project handled remains same but the complexity of requirement and advanced technology he might use differs which surely impacts the deadline.

    Process

    Current world is for Agile, SaaS, Extreme Programming, Cloud etc. I still believe you cannot deliver a 99.8% quality product (hate to say 99.9% in this busy world) without using any of the standard software development processes unless it is a single line of code. Let me discuss in a generic point of view.

    There is no any company without a process. Process emerges automatically and get it aligned with the team. Fact is, it is not an easy task to change the process in a sudden. There will be much repulsion from the team members regardless of how complex and ugly process they currently have.

    Most customer-centric organizations unknowingly use Agile. They work closely with the customers and as a result most of the projects will be success. They get enough time for development directly from the customer and there will not be any deadline hazards as customer is aware of what is happening at the development center. The major demerits will be unexpected extension of scope which results in missing track of change requests and resource allocation problems for other projects.

    Type of Project, type of Organization and number of resources.

    As long as you have expertise, you can touch any domain. Similar projects you can deliver very fast as you will be able to use the same code base and in most occasions just a re-skinning of application will be enough. When ever you touch a new domain or technology, there comes a learning curve and situation differs. Company management must keep account of this fact and give sufficient time for developers to cope with it. From second project onwards they will be okay.

    When you estimate or sign-off a project contract, please do commit the schedule by keeping in mind that you have N number of resource and together they can finish the project in N number of days. You must be having proper benchmarking and proper tracking of all the projects in hand. You might want to work on different projects simultaneously or some of your projects might be in maintenance mode so all needs time. Put sufficient buffer. Your developer might be able to finish a complex task in 1 day’s time but he might get struck with a minor coding bug which result in spending more than two days.

    Many company owners are very proud to say they got a flat-hierarchy in their organization. But for the success of projects, a defined organization structure is mandatory. There must be one person who can take decisions. Unfortunately for most small companies, there will be multiple people handling customers and because of that all starts management and at the end developer gets over pressured and there comes production decrease. Proper tasks and resource handling must be done from a singe source. It is very important to keep the communication transparent so that task overlapping will not occur and we can control the deliveries up to an extend.

    Trust each other

    When you give a job to a person, give some freedom also and do not put un-necessary limits. He must get the feeling it is his job and he must take responsibility. If one is not good for a job, then he will get eliminated automatically from his position. In a typical organization, when you are assigned a job and you get an official status enquiry from another person of same level – there comes a doubt of trust factor which results in imperfection of the job.

    Dedication and commitment towards the company or people comes through trust only and you cannot buy it with money.

    Work pressure

    If you do proper project management – planning and resource allocation, there will not be any question of work pressure. When the pressure from top increases, quality of the produce decreases. Check any project you know. All long running projects will face fail-over problems or performance issues when the time is running. Such projects lacks because of short timelines.

    For small projects like a contest or campaign, there wont be much issues as the project will be up only for a short period of time. You must now expect product quality and timely delivery unless you have sufficient number of expert resources.

    End Notes

    Words never ends, but in this dynamic – busy world, I have limited time for these articles 🙂

    © NinethSense Feb 2011

     

    Hey programmer, how fast you can develop a project?

    This is an age which time travels before ideas. i.e., you might encounter the subject of deadline before you come to know about the idea or requirement details.

    Depends on below properties, answers varies:

    • Number of years of experience – if you a manager,
    • Level of knowledge – if you are a manager,
    • Process – you or your company follow,
    • Type of organization you work,
    • Type of project,
    • Architecture of the project,
    • Number available resources,
    • Timeline of the project,
    • Budget of the project etc.,

     

    For a successful project at least some of the above points are mandatory. You can deliver a project in a fortnight but quality matters.

    Level of Knowledge and Number of years experience

    If you are an expert in the field which project need to be executed, then you an deliver the project really fast. But it is not always an easy task for a manager to train his team to make up with the same level of knowledge. But a manager can build a base for the project to work on. When team members are from different environments, and different environments use different processes, there might be a conflict-of-base occur. Every one including the manager must be patient enough to listen to others and build a powerful base. There will be convincing and negotiation in between, but sufficient time must be available for all these. This will be an one-time process so all the future projects can follow the same base.

    Technology changes every day, so it is very important to update knowledge day by day and make necessary changes in development and coding styles from time to time.

    When the technology or domain/concept is very new for the team, there will be a learning curve involved and the deadline of the project will be a bit far.

    Number of years experience must not be taken into account always. As I stated already, technology changes everyday and none get the opportunity to use all the technologies. So gap is a gap. For  a programmer, coding concepts and types of project handled remains same but the complexity of requirement and advanced technology he might use differs which surely impacts the deadline.

    Process

    Current world is for Agile, SaaS, Extreme Programming, Cloud etc. I still believe you cannot deliver a 99.8% quality product (hate to say 99.9% in this busy world) without using any of the standard software development processes unless it is a single line of code. Let me discuss in a generic point of view.

    There is no any company without a process. Process emerges automatically and get it aligned with the team. Fact is, it is not an easy task to change the process in a sudden. There will be much repulsion from the team members regardless of how complex and ugly process they currently have.

    Most customer-centric organizations unknowingly use Agile. They work closely with the customers and as a result most of the projects will be success. They get enough time for development directly from the customer and there will not be any deadline hazards as customer is aware of what is happening at the development center. The major demerits will be unexpected extension of scope which results in missing track of change requests and resource allocation problems for other projects.

    Type of Project, type of Organization and number of resources.

    As long as you have expertise, you can touch any domain. Similar projects you can deliver very fast as you will be able to use the same code base and in most occasions just a re-skinning of application will be enough. When ever you touch a new domain or technology, there comes a learning curve and situation differs. Company management must keep account of this fact and give sufficient time for developers to cope with it. From second project onwards they will be okay.

    When you estimate or sign-off a project contract, please do commit the schedule by keeping in mind that you have N number of resource and together they can finish the project in N number of days. You must be having proper benchmarking and proper tracking of all the projects in hand. You might want to work on different projects simultaneously or some of your projects might be in maintenance mode so all needs time. Put sufficient buffer. Your developer might be able to finish a complex task in 1 day’s time but he might get struck with a minor coding bug which result in spending more than two days.

    Many company owners are very proud to say they got a flat-hierarchy in their organization. But for the success of projects, a defined organization structure is mandatory. There must be one person who can take decisions. Unfortunately for most small companies, there will be multiple people handling customers and because of that all starts management and at the end developer gets over pressured and there comes production decrease. Proper tasks and resource handling must be done from a singe source. It is very important to keep the communication transparent so that task overlapping will not occur and we can control the deliveries up to an extend.

    Trust each other

    When you give a job to a person, give some freedom also and do not put un-necessary limits. He must get the feeling it is his job and he must take responsibility. If one is not good for a job, then he will get eliminated automatically from his position. In a typical organization, when you are assigned a job and you get an official status enquiry from another person of same level – there comes a doubt of trust factor which results in imperfection of the job.

    Dedication and commitment towards the company or people comes through trust only and you cannot buy it with money.

    Work pressure

    If you do proper project management – planning and resource allocation, there will not be any question of work pressure. When the pressure from top increases, quality of the produce decreases. Check any project you know. All long running projects will face fail-over problems or performance issues when the time is running. Such projects lacks because of short timelines.

    For small projects like a contest or campaign, there wont be much issues as the project will be up only for a short period of time. You must now expect product quality and timely delivery unless you have sufficient number of expert resources.

    End Notes

    Words never ends, but in this dynamic – busy world, I have limited time for these articles 🙂

    © NinethSense Feb 2011

     

    Agile Software Development

    Agile Software Development is said to be today’s methodology. The modern definition was started around 1990.  It is pretty an old term now but would like to say something about it since it is now a big trend in Software Industry. I hope this will be good for beginners at least.

    Agile Software Development is a set of software development methodologies. Well, it is based on iterative development process. In this process the needs (requirements) and collaboration (from client to developer basically) work together. Agile model is successful in most cases since the project management process is always monitored in all directions. A set of best practices in software engineering is the base.

    Well the concept of this method is still developing though its Agile Manifesto and is considered to be non ending. There are many agile development methods. Most of such methods try to promote iterations, team work, collaboration and process adaptability though out the life of a project.

    These methods break tasks into small increments with minimal planning. Iterations last usually between one to four weeks only. A full software development process is conducted for each iteration. (i.e., planning, requirement analysis, design, coding, testing etc.). Each iteration will be demonstrated to the respected people (eg: clients). The plus point of this process is the customer can identify “is this what I need” and the development team can reduce overheard by identifying the issues at the beginning itself. It is helpful for the customers (or customer representatives) to add changes quickly as the new change will not affect the whole development process like in old days.

    Communication have a big role in this process. It forces face-to-face communications or or videoconferencing (or similar technologies) if possible on daily basis itself. Written documents are also important.

    Below is a very basic figure for your understanding:

    image

    To improve the quality of output methods like continuous integration, TDD (Test Driven Development), Design Patterns, Code Refactoring etc. are also used.

    There are merits as well as demerits exists for Agile method. But the full explanation of Agile Software Development is certainly out of scope of this post. So I halt.