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 the company currently I am working on as a fresher. Due to the limited number of skilled people in GIS software development, and since I was among one of them I was directly recruited as a Project Manager.

I was quite conversant with Java and GIS, and I have done self motivated research on location based services, but not with project management and structured software development. It was one year after my graduation as a Geology special and during the previous year I was working as an academic in a University.

Thanks to the interest I was having at work, an opportunity shown up, and eventually I was made responsible for the Business Intelligence department of the company as well. The company believed in me. I myself studied data warehousing and BI concepts and was successful in combining GIS with BI as well.

Also I am currently working with two developers on our BI tool in C# WPF, where I also play the role of a developer at times (which I like).

I tried extremely hard to adopt good software development methodologies with agile project management, but it was not very successful. Also, though I believe in well designed code as far as a product is concerned, due to the lack of technical knowledge my CEO has (who is directly above me), I normally do not get the amount of time needed to do it. The time taken is greatly enhanced by the lack of expertise we have in the specific coding language as a whole too (for instance WPF opposed to Java). Also there is no version controlling system in place as well.

I am extremely fed up with the way things are going as it is not structured and I find most of my time thinking than working as to how to get things structured. I hope you guys with good professional experience will be able to help me overcome this situation.

share|improve this question
3  
I am not sure if you already have, but have you discussed the situation with your immediate colleagues? –  Fanatic23 Apr 30 '11 at 7:20

3 Answers 3

up vote 13 down vote accepted

We had a similar problem (without the technical details, of course) in the company I work about two years ago.

You just need to do it one step at a time. Don't try to adopt the agile software development in a rush. There's a lot of stuff to learn and apply. Don't let the lack of expertise to bring you down either.

Build slowly (but as fast as you can :P), steadily and surely.

I would recommend the next steps (to do this, you might switch from management to development for a while, but that should be fine)

  1. Learn a good version control system, and learn it well. Personally I would recommend git or mercurial. There is a lot of documentation on both.
  2. Build a solid core on practices and patterns. Read books, read blogs, watch screencasts with the team members. This will give a new air to the development.
  3. Learn TDD/BDD and try to apply it in the new code, as well as in the old code that you might touch when doing a new feature.
  4. Do pair programming. Two heads think better than one, and also 4 eyes are better than 2 :).
  5. Find about the latest and most common used tools in the community of the language you are currently developing. Learn about them and try to include some of them in the project. See how these were built and learn.
  6. Use scrum. Iterations, stories, story points, impediments are all concepts you should get familiar with. For me, scrum has proven to be the best workflow for software development and management. Apply it and learn from each day experience.
  7. Teach by example. Most of beginner developers are eager to learn new stuff, but also some of them are very lazy. Anyways, show them the new stuff you've been learning and applying and hopefully that will tickle their brains.

Also, if possible, hire a consultant just so that he can check out the process and give better advice.

Don't get lazy or discouraged. Just learn from your mistakes and try different approaches. This is just the beginning!

Edit:

Here are some of the links and books that I've been reading/using lately...

Learning git: Pro Git

These are some of the blogs that I would recommend (most of them are .NET oriented):

For books, you can see Buiding A Solid Programming Core list on amazon. I would also recommend these:

share|improve this answer
    
@Edgar, thank you very much. It is cool and I think what you have explained will work well for me. As I do not see other way let me know if it is ok to take your answer as correct and stick to it blindly. –  picmate May 1 '11 at 10:42
1  
@picmate Sure man, that's your call. Also, when teching by example, be sure to praise any progress the developers make. –  Edgar Gonzalez May 1 '11 at 13:17
    
@Edgar, sure thing. If you know any good resources that I might use, please put them for me as well against each point in your answer (if applicable). Also is this the way any good development firm get on with their software development? (since I have never had the chance to be in a good development company) –  picmate May 1 '11 at 13:29
1  
@picmate first of all, this steps are not to be applied separately. They overlap each other, they're not in any particular order (except for the first one). I'll be posting some links later in the day –  Edgar Gonzalez May 3 '11 at 19:26
2  
@picmate. Since the CEO has no technical knowledge on what you do, you can convince him through what he knows. For example, you can explain that if have version control in place, you can avoid loss of work, and thus financially prevent loss of revenue in restoring lost code, Or by learning best development practices, you can help the company by being efficient, thus reducing the time to develop a feature. –  OnesimusUnbound May 6 '11 at 5:03

As the manager, it's your job to get the time required to complete a project properly. When approaching the CEO, make sure that you have all figures backing you up and reasons why estimates are as lengthy as they are. It is your responsibility as a manager to make the CEO understand why it takes n hours/days/weeks to complete a given task. This can sometimes be difficult, but I haven't met a CEO who wants his company to fail yet and I bet if you put it in those kind of terms (if all else fails), he may change his tune.

If the CEO is unwilling to grant you the time needed to complete tasks, then IMHO, be ready to either move on to another job or get prepared for continual death marches. As a last resort, explain to the CEO the burnout that will no doubt come from unrealistic expectations.

Having said that, you also need to make sure that your developers are providing you with accurate estimates (tremendously difficult, nearly impossible without proper technical designs done, which should also be in there somewhere).

Agile isn't good in all development domains. Works for some project types, fails miserably in others. You might have to try a few different methodologies before you find one that works well.

Get version control set up. Really, it takes 5-10 minutes to get Git set up, a few more minutes to get the basic operations down and a day or two of reading to get the more advanced concepts down.

share|improve this answer
    
thanks. I am working on git. –  picmate May 1 '11 at 13:46

Hmm, not sure if I met you at an Agile/XP event in Toronto - this sounds familiar

It sounds like you need a break. Take a long weekend, get drunk if you like, and forget about work for a few days.

Ease up on yourself. Self-teaching is good, and just because a methodology doesn't work with the personalities involved, doesn't mean you're doing it wrong, and it isn't a personal failure.

There is a (beta) pm.stackexchange.com site, targeted at Project Management, you may well get some useful advice/support there - but by all means, keep the question here too.

Moving on to the techie stuff:

there is no version controlling system in place

Put one in as your top priority. I prefer centralised systems like SVN (Subversion) over git/mercurial, because a stolen laptop won't have as much history locally. Especially important if anything super-secret (like passwords and ssh-keys) were checked in by mistake. But, it's a matter of taste. Nothing wastes more time than bugs from 'manual version control' - e.g. putting code back to what you think it was.

Good luck

share|improve this answer
    
Hi, thanks for the answer and probably it was not me whom you've met in Toronto. I am in this position for nearly one and half years. Do you think I am wasting time without any success? –  picmate May 4 '11 at 4:44

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.