views:

114

answers:

6

Hi all,

I hope that I'm not the only one and I can get a answer from someone with more experience than me, so I can think cleaner and I don't get depressed with this developer's life.

I'm working as developer for a small company three years now. In that three years I'm working in the same project and sincerely, I think this project could be used as a CASE STUDY because it has all the situations that cannot happen in a project and that makes a project fails.

To begin with, and I believe you've already noticed, the project has 3 years already (develoment only) and is still unfinished, because in every meeting there is a "new priority" ,or a "new problem" to be solve or a "new feature" to be add. So, first problem is no target set. How can you know when something is finished if you don't know what you want? I understand Management, because they see an oportunity and try to get that, but I don't understand how can they not see (or hear us) that they'll lose all they already have and what they'll eventually get.

Second, there is no team group. My team consists of three people, a Senior Developer, a DBA and, finally, I for all the work (support, testing, new features, bug fixing, meeting, projet management of clients, etc) aka Junior Developer. The first (senior developer), does not perform any tests on his changes, so, most of the time, his changes give us problems (us = me, since I'm the one who will fix it). The second (DBA) is an uncompromising person and you can not talk to him, believe me, I tried! In his view, everything he does is fantastic... even if it is the most complicated to make it... And he does everything he wants, even if we need that only for 5 months later and would help some extra-hand to do the things we have to do for now. As you can see, there is very hard to work with no help...

Third, there is no testings. Every... I repeat, Every release of the project, the customers wants to kill us, because there is a lot of bugs. Management? They say that they want tests before the release. Us? We say the same. Time? No time. Management? There is always some time to open the application and click in some buttons. Us? Try to explain that it is not so simple. Management doesn't care... end of story. Actually, must of the bugs could be avoid with a rigorous work... Some people just want to do the show to the Management. "Did you ask for this? Cool, it's done. Bugs? The Do-all-the-work guy will solve." Unfortunally for me, sometimes the Do-all-the-work also has to finish it. And to makes this all better, I'm the person who will listen the complaints from the customers. Cool, huh?

I know, everyone makes mistakes. But there is mistakes and mistakes...

To complete, in the Management view, "the problem is the lack of an individual project management", because we cannot do all the stuff they ask, even if there is no PM for the project itself. And ask us to work overtime without any reward...

I do say all this stuff to the management and others members, but by telling this, the I'm the bad guy, the guy who is complain when everything is going well... but we need to work overtime... sigh

What can I do to make it works? Anyone has a situation like this, what did you do?

I hope you could understand my problem, my English is a little rusty.

Thanks.

+5  A: 

Moving targets, no team structure, no testing, no milestones, no schedule. You're right. The project is a beautiful mess.

There's a name for your project. It's called a Death March. (The book is a must-read.)

If you're a junior developer you probably don't have a lot of weight to throw around, especially if the senior dev and the DBA are essentially doing whatever they want, even if what they are doing is dooming the project.

In order to actually fix some of the problems you'll probably have to go over the heads of those directly above you, possibly as high as the owner or CEO of the company. But in doing so, you're assuming that person wants to help you (that they aren't leading the death march themselves) or that they care, and, you'll be burning bridges all over just getting to that point. High degree of difficulty, low chance of success, and low return on investment of your time and political capital.

In short: you're screwed.

There's not much you can do, sadly, as long as you're working with this screwed up company and screwed up project. Your only real solution here is to get out. Keep cashing your paycheques for now, but start looking for an internal move within the company (if there's another team needing a developer, and that team doesn't suck) and also start looking for a new job outside the company.

Buy the book in the meantime. You will see your company reflected in every page.

Shaggy Frog
I agree - this company sounds like a train wreck. He said it's a small company, so I doubt there is much opportunity for lateral move (and how long can this company stay afloat anyway?)
Greg Harman
If they are milking a cash cow somewhere, it's possible they could go on death marching indefinitely. I've seen it happen.
Shaggy Frog
Yup, they are milking a cash cow somewhere ;-)
Bruno Costa
+2  A: 

Not strictly a development question, so may be better off on career overflow. But it is a problem most of us (developers) suffer various degrees of. So it is very relevant.

I think to answer all of this in a sufficiently would take far too long. However I recommend to you a great book called 'Dreaming in Code' ( http://www.dreamingincode.com/ ) which explains problems software developers face, discusses why they happen and speculates on how they may be mitigated. I really enjoyed reading it and hope you get the time and that it may help you :)

Jacob
+1  A: 

It seems you are talking and describing the company where I work.

When I was reading your question, I thought... this guy is working by my side... are you my colleague?

I understand you so much, but so much, that I just feel like whining. I am on the same position, and I only advise you to search some new job out of that company.

Good luck :D

rpf
+1  A: 

I was once in a very similar position as this. The company was small, most of its employees didn't have larger-company experience (and hence there was little knowledge of best practices and common processes), and inflexible deadlines abounded.

What did I do? First I tried to change the processes by introducing what I knew and demonstrating by example. Once it became clear that I was not getting any uptake, I quit and found a much better job working with great people on great projects.

You gotta know when to hold them,
know when to fold them,
know when to walk away,
know when to run.

Ether
A: 

I'd probably try to get under the Senior Developer myself. To elaborate a bit more on that, I mean that you ask him what should you do now, do next and then one more thing so you have a few things to do at any point in time. Rather than work like a couple of disconnected developers, it may be useful to try to see if the senior developer will lead. At a minimum, you should be able to know what he is doing and avoid collisions. At best, you work as a team and kind come together over this mess. I'd be tempted to say that you should leave the DBA out of this unless it is a database-intensive application you are building.

JB King
Well, yes, it's a database-intensive application. And we have others things to do that needs him 100% in the things we have to do now. And like we're a small team, everybody should help.
Bruno Costa
+2  A: 

If there is no schedule and no targets, then why can't you set your own? If it's important to you to test things before you release them, why not code-test-code-test-code-test instead of code-code-code hey-you-meanies-you-didn't-give-me-time-to-test? If they keep piling things on you and all you say is "yes boss" then it's not surprising they keep piling stuff on you.

Get yourself some kind of backlog tracking mechanism. When they pile things on you, add them to the backlog with a priority. When you are asked about progress, show the prioritized backlog. If they say "that's not pri 3! We need that right now!" then move the priority up. If you have a dozen things that are all pri 0, ask them which ones are pri 0.5, or decide for yourself, which will teach them not to have a giant tie for top pri. Do things in priority order and test and document them before you do the next thing. Work with discipline. You will be less stressed, and if you are happier you will be more productive. Maybe the rest of them will change and maybe they won't, but nobody is ordering you to work in a sloppy and disorganized way, so don't react as though they are. Be the kind of developer you want to be.

That said, make sure your resume is up to date in case they go out of business or toss you out for spending too long testing instead of throwing it at the customers and hoping it works. Doing the right thing always feels better but it isn't always rewarded.

Kate Gregory
Nice comment. I do my job, I've my scheduler with my things in order. I test my code to prevent errors go to the clients. Unfortunally, I can test other's people changes and still do all my work. People needs to keep in mind, that there is no QA, so they need to test every code they do or ask another people to test and test the code of that person too. Team work.
Bruno Costa
Yes, testing each other's code is a nice habit, if there is anyone else you can rely on for that.
Kate Gregory