Working in a Software Company
Try to freeze your requirements before the start of the project. In practical scenarios it is very difficult to control the end customer. But if you can at least control the changes that will make the project more comfortable. (But if you can at least control the changes it will help you manage the project comfortably).
The best way to control changes is by taking official sign offs from the end Customer. As the saying goes, building quality software and skating on ice are both easy to do provided requirements are frozen.
Do not try to be a hero in the project. Because heroes also have to go through all the hardships. So believe in distributing the load equally which is not only good for the project but also for you in the long run. Do not try to be an octopus - unfortunately you were born with only two hands.
Every project has parasite developers. In short every project has developers who constantly take help from others thus bringing down their productivity. Yes it is possible that they are your friends, but think for a moment - what’s smarter, giving a person one fish everyday from your catch or teaching him how to fish. Step in to help others when they are stuck but you should know when to step out as well. There’s a thin line between helping somebody cross a tough hurdle and
carrying him on your shoulders - always be aware of this.
If you are a developer avoid doing their work from start to finish. Yes, give them hints but do not do complete coding for them.If you are a project manager you should analyze such kind of developers and take effective action at the very beginning which may even mean removing the resource from the project. Remember, your team is only as strong as its weakest link.
Do not make projects your learning ground. Customer’s pay heavily for making software so do not make it a learning ground. In many projects developers try to implement new technologies in mid of the project just by hearing jargons.
Test, Test and Test. That’s the key to success for any software project.
Do not hide your defects. Developers are the best guys who know where the code will crash. Do not hide it, analyze and fix it. Do not cheat and leave the same till it goes to the end client. Avoid ego issues during the project. Many times in a project developers and managers get stuck up with ego issues. Sometimes stepping back makes the project move further Tackle bigger problems of the project first. The best way to complete any project is to start those screens which are used by the customer more often. For instance every project has non-frequent masters code them later and start the transaction screens first. Many time developers end up doing nitty gritty work and forget the bigger part of the project.
Do not talk about stars. Every project starts with talking about stars but later ends up somewhere else. Developers talk about concepts of OOP, full database normalization, design patterns etc etc. These fundamentals are important but it should end up with only jargons. Some times practical deadlines make it impossible to implement these features. Keep yourself flexible and compromise with quality when you have deadlines…..believe me it’s not a sin if a customer is giving you unreasonable deadlines.
Maintaining a right project hierarchy is very important i.e. the A model. In a model you have one senior person at the top, project manager, team leader, senior developers and then juniors. The right proportion of people from each grade is important. On any level if you have too much concentration you will have ego issue and promotion issues. Do not treat your project people as a resource. Project managers have this jargon of thinking of every one as a resource. That’s bookish thinking; any one working in a project is finally a human being with emotions. The moment you consider them as a resource they will also consider you as a resource. Moreover the word resource reminds you of water resources, mineral resources, oil & natural gas resources, etc which become empty some day - you get the point. In your own interests wipe off the word from your vocabulary.
Make yourself visible. If you think you have done something good show it, advertise it, make it visible. It will help you during your assessment.
Avoid getting into project politics. Peace of mind is the most important thing. Getting into egos and politics will only complicate things.
If you are working in a maintenance project upgrade yourself time to time. Change is the only constant in life - this is painfully true in the software industry more than anywhere else.
In case you are maintaining some other developers’ code do not criticize the code. Who knows in what circumstances the project was made .If you are a project manager in the project do not make it a compulsory rule that you will never touch coding. Remember juniors respect their seniors only if they sit with them for development and understand their difficulties. This is a time tested rule - people only respect leaders who lead from the front rather than issue orders from the rear - don’t be a preacher, let your actions do the talking.
If any resource is working on a project for more than a year his performance comes down. Prepare a proper KT plan and bring in new resources and roll the old resources off for some better prospects. Avoid unnecessary meetings.