Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I joined my company 2 years back which is a startup company that has been around for 5 years now. From the beginning I've been working on one of the Microsoft technologies. Just after few days I joined the company I learnt that the company doesn't have a working process in place right through the software development life cycle. The employees are left unmonitored and the schedules, deadlines, milestones and the quality didn't come off as expected.

I've been always passionate about programming and more importantly patterns and practices in both technical and non-technical areas and kept myself busy in my learning curve. Meanwhile the company's productivity started deteriorating every day. There is no mutual understanding between the management and the employees (just 12). The management didn't care much about the employees' benefits, their work environment, realistic schedules etc. Due to the miscalculations from the management the developer teams has been pushed to work crazy many a times. This made the employees unhappy making them to lose interest in their work. So they started producing very bad results affecting the company's growth. There always was mistakes equally on both sides, the management and the employees. The trivial reason I find is that the management failed to educate employees about the process, importance of quality, software development patterns, practices etc. The management was always keen in delivering results and failing to look on 'how to' deliver the results.

Recently I've been elevated to be a team leader (I just completed my 2 years) as the management believed that I have the technical proficiency as well as the managerial capabilities to handle a bunch of products. I was having a more intimate relationship with my colleagues more than a professional relationship. So I'm finding it very hard to employ some rules and establish a working model within the company. And so far I've been receiving adverse results if I push it a little bit more.

Moreover I need to make myself qualified for this role and feel confident about the working model I propose as I've no good hand to guide on this. I kind of have more bookish knowledge rather than the practical experience.

What can I do on this situation? Should I abandon the company or should I put more effort to set things right?

"In a company of 10,000 people if 5 guys fail to work properly the company can withstand it. But in a company of 10-15 people even if one guy doesn't perform well it impacts the company's growth in a huge way."

share|improve this question

migrated from stackoverflow.com May 30 '11 at 17:31

This question came from our site for professional and enthusiast programmers.

    
"I was having a more intimate relationship with my colleagues more than a professional relationship " This is where you have failed. I do not know how to recoup from that. i work in a company with 5K employees and i am "intimate" with NOBODY. its not cos i am worried what might happen if they make me team lead ; but just cos it makes sense ! –  Ritwik G May 31 '11 at 4:57
    
@RYUZAKI:"Failed" is a very strong word. Every so-called failure is an opportunity. –  Richard DesLonde Jun 2 '11 at 14:11
    
nonetheless he has let himself down. but i could be wrong of course –  Ritwik G Jun 3 '11 at 5:53
    
I agree that you should keep your professional face on at all times at work. Some people think they can get personal and act however they would at home or with friends, but I agree with you, you can't do that. And on re-reading, I see that you didn't mean the word failure to indicate that he has no chance of recovering. :-) –  Richard DesLonde Jun 11 '11 at 9:32
add comment

5 Answers

I would stick with it. You have an incredible (possibly once in a life-time) opportunity. Any time you have a bad situation and are given the position to do something about it, you have an opportunity to make something great happen.

Here's what you need to do.

  1. You are right, motivate the team.
    a. Team motivation can be counter-intuitive. According to a 2008 white paper by the Harvard Business Review (Employee Motivation) the prime motivators are (in no particular order):
    • The drive to acquire - This is best leveraged through reward systems. This doesn't necessarily mean giving raises and bonuses, but it means to reward good word. Find out what matters to your team members (corner office, tickets to a ball game, hold a meeting to recognize individual and team achievements, etc.) Again, it doesn't even need to cost you anything. It just means recognize their performance.
    • The drive to bond - Make them feel part of a team. Create a team culture of "teamwork, collaboration, openness, and friendship". Bonding experiences are helpful here. So are things like team t-shirts, hats, logo's, etc. Anything that identifies them with belonging and being part of something important.
    • The drive to comprehend - This one boils down to the desire to make a meaningful contribution. Take time to explain to them the "why's" of what you are asking of them. Engage them in brainstorming, etc. Engage, engage, engage! Give them challenging work and expect them to be able to figure it out (of course supporting where necessary).
    • The drive to defend - This is the drive that will challenge your new role as team lead. Harness this drive to your advantage. Make them feel secure in your position as team lead. You aren't there to make their lives worse, or make them work harder, etc. You are there to make their jobs better and more fullfilling.
  2. Act as a buffer between the team and management
    Management seems to have no idea that their technical team makes their company. You need to act as a buffer between management and the team. Protect them! Fight for them. You will have a hard time from management on this one, but the results will speak for themselves. If you are getting results, they will be ok with how you are managing the team. The team's job is to produce a product. Make sure they are not worried about things that don't relate to that, i.e. management's politics, etc. Don't let management push them into slave labor, etc.
  3. Improve the product for the company.
    This is where the rubber meets the road, so to speak. This will make management happy, and will fullfill your team. This is where the reward of the opportunity before you is. To do this you need your teams help!
    a. Talk to your team and solicite their help with improving everything. They are an incredible resource. Together you can all figure out things that will work to improve your work. This has the added (crucial) advantage of commitment. People tend to be much more commited to something they had a hand in deciding on. For instance, if you all decide together that you need source control, and that you want to use SVN, then everyone will be much more commited to using it and following the processes the team outlines, since they had a hand in deciding it. The main point here is you need to get the team on your side. b. Talk to management. Tell them the state of things. Tell them where you want it to go. Tell them you need them to be a bit patient as you whip things into shape. Get them to buy into the idea that your team needs to be motivated. You need management on your side.

Feeling qualified: This is a tough one sometimes, but you can sort this out. There are three things I would advise in this case.

  1. "Fake it till you make it". No, I'm not telling you to actually fake anything, but I am telling you that you can fake the confidence in yourself until you actually are. Also, read read read, and learn as much about project management, and relevant topics to your project etc. as you can. You will grow into the role. Just remember that everyone starts in management or as team lead sometime, and we all survived. :-)

  2. Enlist your teams help. There will inevitably be things you aren't sure about. No big deal. You shouldn't be expected to know everything. Here you can enlist your team to help you with gaps in your knowledge.

  3. Be flexible If you do make a decision that turns out to be wrong, don't be afraid to backtrack. Changing your mind shows you are not a blowhard commited to being right, but a professional commited to doing what's right. Any reasonable person will respect someone else for changing course when they learn that it was the wrong one.
share|improve this answer
    
Just added the "Feeling qualified section" . . . –  Richard DesLonde May 31 '11 at 4:59
    
Incredible answer. Just helps me a lot. –  NLV May 31 '11 at 6:55
add comment

Since this is about motivating the team, I'll answer that part first.

  • Most confusion arises from not knowing what to achieve. If you have a project to do, first clarify from the management what you have to achieve and how to achieve it.

  • Find out (from the team & internet) what tools you'll need to achieve your task.

  • Communicate this to the team. Everyone knows when they're being exploited, and they'll resent working for the management. Remind them that as professionals, they're being paid to work and even if they're going to quit, what will work out best for their resume is to do their current work properly.

  • Plan out small tasks which the team can achieve, show the success to the management and try convincing them to provide you the tools and power to plan out slightly larger tasks. People get confidence from small successes.

  • You can achieve anything you want with the most unskilled team when the team knows for sure that you're working for their benefit. They'll then do anything for you.

If the management still does not care, then have you read the book "Rich Dad Poor Dad"? There are people who are taught from childhood, to exploit people like you because they know you are willing to work in bad conditions because you have a conscience. The best thing to do is to leave such a workplace. If you believe you can improve situations, it'll be good on your resume. If you can't, leave. If the company you're working for isn't helping you, it's hurting you. Because it's destroying your career.

share|improve this answer
    
I keep reading your last paragraph again and again. –  NLV May 31 '11 at 6:57
add comment

A couple things to think about:

  • You are still part of the team, but you have a new role. You will only be successful as a leader if you are respected by the team. Make sure that they understand that you believe the process changes you propose will benefit them by helping to create more predictability and eventually helping to keep the team from being beat up on unrealistic schedules. Ask for their help on finding the best way to phase in improved practices. You must have buy-in from the team or you will not get the changes to stick.
  • Whatever you do, don't overpromise to management. Let them know you are working with the team to find ways to make development timelines more predictable and possibly faster. You will be trying different approaches until you find the best one. They will be concerned that you are going to slow things down with un-needed (in their eyes) processes. Gently reassure them that you're not turning the place upside down, just trying to phase in changes that will help them get more predictable turnaround on development.
  • After you've given it a good try, don't feel bad if you decide you want to move along. Leave on good terms (it's time for new challenges, I'd feel more comfortable in a company with a different processes, etc.). Two years is not a long time in a position, but it's long enough that prospective employers would not be alarmed (but never, ever, bad-mouth the position you are leaving) if you hcan state clearly and positively why you are moving on (one of my standard interview questions, btw: "What are your criteria for your next job?"; if the answer is mostly comparisons to the current position, it may be cause for concern)
  • If you successfully introduce changes that improve the business, you have some great stuff for your resume, but you may lose interest in leaving. Not a bad problem!
share|improve this answer
1  
+1 for not over-promising. 9 times out of 10, bad timelines are born from bad estimates from developers. –  Demian Brecht May 31 '11 at 4:54
    
Yes, I do agree. But most of the times we are forced to deliver sooner than it actually takes. –  NLV May 31 '11 at 9:29
add comment

I wouldn't head out just yet, but I would keep my eye open for good opportunities. If something comes up, you can tell them that it was just too good a job to pass up.

In the meantime, my first avenue of attack would be source control. Do you have it? If not, that should be your first, number one priority. If you're choosing, choose one that allows pre-commit and post-commit triggers.

Once you have source control, standardize the release process. Split development/releases into branches, repositories, or whatever your source control software supports. Only code in source control can be released. (Yes, I had to do this at one company.)

After that, you should look into improving the process for the code going into source control. Various ways to enforce that may be through source-control commit triggers, or through continuous integration setups (they can do more than just compile code).

When it comes to your (former) peers, be up-front with them, but don't back down. You were (presumably) put into this position for a reason. Double-check with your boss if you have to, but just tell the others what you expect. Use the tools you've put in place to help enforce it for the absent-minded. If anyone is more than just forgetful, perhaps ask your boss for advice. If most on the team support you, the bad apples may move on of their own volition once they see how the environment is changing.

share|improve this answer
    
We use SVN as the source control tool. That is not the problem. We are just not able to deliver results because we get stuck in different stage of developments due to poor pre analysis, putting bad schedules (in our company the dev resource give the schedule for their task) and un-professional attitude towards development. The dev just don't care about bugs. They just think QA will find it and it'll come back to us and we can fix it. –  NLV May 31 '11 at 3:30
    
Having an intimate relationship with your colleagues is not professional. Change the "bad schedules" on your team and change the attitude towards development. –  Ramhound May 31 '11 at 13:32
    
@NLV: Have you tried documenting the schedules and letting people know you expect them to a) keep it updated or b) meet it? Also, a post-analysis might be eye-opening. Also, it sounds like there are a lot of projects going on. Are all of them equal priority? If not, could you drop some and focus more on the higher-priority projects? It may not get every project done in just as much time, but I've found it's a real boost to have 1 done and out and 1 in development, instead of 2 stuck in the middle of development. –  Caleb Huitt - cjhuitt May 31 '11 at 20:45
add comment

If you get up and leave now, what will the employer think of you? "This guy who joined my company 2 years ago just decides to pack his bags and leave when things start looking bad." He or she may be reluctant to be a reference for you in the future. Other employers will note that. There potentially goes two years of experience with software. Also, what are you going to tell your future employer when he/she asks you why you left? What will you say then? Your future employer will also be thinking: "is this guy going to leave when I'm in trouble as well? hmm." Despite obvious financial reasons for leaving plus the lack of focus and interest from your coworkers, it will hurt your reputation; something that people can spend a lifetime forging.

I understand the difficulty of balancing peers and work ethics; I have trouble with that too but you must balance work ethics with social interactions. I suggest you stay and at least act on it for at least one push at the work ethics before throwing in the towel. Try to motivate your peers, try to set things straight, that way if you plan to leave, your employer will say "can't blame him, he tried to make things right, but it just didn't work out." Be more encouraging. It's far better to have intimate relations with your coworkers and ask them to do something than have a parasitic relationship with them and ask them to do something. Try to have them understand where you're coming from. Your duty as a manager is to manage: and that includes making sure people are getting the job done. It is also their duty as an employee to do their job. If they're stubborn or aren't motivated at all, that is something beyond your control. I'd bring it up with the big boss if that's a possible option.

I have no experience as a manager in any way, I just share the same programming passion as you do. Heck, I'm still in school but I hope this helps you. =) I wish you the best, and good luck.

share|improve this answer
    
Thanks tf.rz. I can extract some useful points from your post. –  NLV May 31 '11 at 9:30
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.