views:

63

answers:

4

Working at client (non-IT) place as a .net programmer (alone) and asked to develope a windows application. No project manager, no SRS, no technical people to lead..., etc.

Directly getting requirement from customer on-their-need basis. It keep changes and has lot of ambguity. As the client is not understaning need of freezing requirement, it becomes huge headache to deal with. Has to do self document of requirement, coding, testing, bug-fixing and delivering build, educating users for application use by myself only. Reporing to a Boss, who is non-technical guy and always not understanding these problems.

Now it becomes, single developer-to-do-all SDLC activities. How should I proceed with this work environment?

+1  A: 

Count your blessings, I'd say. Usually all the people standing between the developers and the users are just getting in the way of making successful software.

I think it is a good idea to adopt some agile tooling to organize yourself, like a scrum whiteboard, and by defining sprint periods/iterations. That will allow to manage your boss's and users' expectations, and still give them control over what should get priority. Don't forget to schedule for SDLC tasks, so you can make them visible to your boss. You should feel free to consider agile tooling as a supermarket: take what you think is useful and keep the rest in mind for later consideration.

As far as requirements documentation is concerned, I'd keep it very high level. I would not mind skipping it altogether but I can imagine that it feels sloppy, and it is perhaps also a way to document your achievements.

jdv
+1 for suggesting agile/scrum. Using iteration/sprint based project planning is a great way to give the users the flexibility they need while creating an environment you can actually get work done.I'd give you an extra vote if I could for suggesting shopping around and adopting what you need instead of dogmatically adopting a full agile methodology. Don't change anything if it doesn't solve a problem for you.
Mendelt
A: 
Abel
+1  A: 

Start by making demands on your environment, and on what is asked of you:
Demand that requirements and deadlines are fixed and agreed upon, in writing, before you write a single line of code.
Demand that you are given enough time for testing and bugfixing in the development cycle.
Demand that you are given time to setup source control, automatic builds etc (whatever you feel like you need for your development environment to promote effective work).
Demand that you are given time to write documentation, so that you can spend more time writing code and less time doing application demos.

Continue with backing it up:
Document and show your boss some statistics on how you use your time. If it turns out you use much less on actually writing code, maybe he'll consider giving some of the less programming-related tasks to some other member of the department.

And finally, remember that this this is not the only company in the world:
Robert L. Lead has a very good point in his How to be a Programmer: A Short, Comprehensive and Personal Summary: under Recognizing when to go home, he simply states:

Quit if you have to.

This might not be a very compelling option, but should it come to it, leave the company for the greener grass on the other side. Even telling your boss you're ready to quit if your working conditions don't improve might help you actually get what you want. I doubt that your company want to be left with a software product that suddenly can't be supported or updated, because their only developer quit.

Tomas Lycken
Seems we were a bit on the same level ;-). Clear post! I like the document-your-current-time bit.
Abel
'Quit if you have to.' That's a great way to build a career. Knuckle down and get on with it.
High Performance Mark
@High, I'm not sure if you're positive or negative to what I'm saying, but if the working conditions in this company are really the way the OP describe them, maybe this isn't such a good place to build a career...? Besides, since he's the only dev. on the team, and it seems there are no plans to hire more people, what is the likelihood of a promotion? Why would they promote someone they need in his current position?
Tomas Lycken
High Perf. Mark: I've got to agree with Tomas - he works in a non-IT company, with no technical peers. How is this a good environment to learn other than the slow and hard way. Also, just because you're in a job doesn't mean that you're married to it. If it's not a fit, or one side is exploiting the other, it's fair enough to bail. Your employer can boot you out if things don't work out, you can fire your employer as well.
FrederikB
@Tomas: sorry for the lack of clarity -- I am absolutely opposed to your suggestion.
High Performance Mark
@High: Would you care to elaborate on why?
Tomas Lycken
+1  A: 
FrederikB
You said just what I said, but in better words. Well played ;)
Tomas Lycken
Well, we're trying to solve the same problem and share the same perspective. :) You put more emphasis on the hands on stuff, I look at more from a project management angle.
FrederikB