Archivo mensual de Abril, 2008

The PM fears -on Software Projects

1 Star2 Stars3 Stars4 Stars5 Stars
Cargando ... Cargando ...

Recently I published a survey in many local distribution lists and groups -here in Colombia- about the challenges of the Colombian Software Development PM role. My findings didn’t surprise me at all. The two main concerns for the project managers -apart of those that you can find in any PM book, “like keep the project on track within the cost and time estimations“, “have a successful project” are explained below -let me know if those applies for other projects:

  • Requirements definition is not accurate: Most of the times, clients do not know what they want or they just do not know it exactly -those inconsistencies or lags in their ideas become issues during the implementation or disillusions during the delivery.
  • Implement and execute a formal software development methodology. PMI theory says that PM role can be done without dependency of the product execution -in this case software development. Probably the pure management can be done without technical knowledge but, in my humble opinion, the stakeholder expectations management and the team management will require it. I’m pretty sure it should be the same for other knowledge areas.

The Scope definition challenge

Software development is more sensible and can be deeply impacted by the “what if” changes. Software is not like a building, so clients cannot perceive the progress and so many times changes are included without that concern -I do my best every day to avoid this to happen, but as PM my main responsibility is not to avoid changes, is to keep the course of the ship.

Scope definition for SW development is specially complicated. That’s why now we can find many undergraduate and graduate programs that address that need of a good “need specification“. A new profession have been created Business Analyst or System Analyst/Designer -I really like those programs but for now do not have enough money to take one :-) - if you want to learn more check the CMU or MIT programs.

Why scope definition and control are so complicated?

  1. Client do not know what they want. This is the typical example of a company that do not evaluate their needs before starting a software development project. It could be probably because they believe innovation is related to implement a new software product. My suggestion, get enough time to research with the stakeholders and the sponsor, the expected results and try to associate them to the business needs.
  2. Your company is sells whatever it takes to keep the client. Probably you were there, development teams complaining about the client services because they sell something that cannot be done with donating an organ -The Chicken and the Pig
  3. You need a technical person gathering the requirements. I was reluctant to include this item because I believe -I really do- if a company does not include a teki guy during the requirements definition FOR A SOFTWARE PROJECT then there is no hope! :-)

The key factor to simplify the scope management tasks is to have a change control system -a tracking system. If you cannot control the client requests, log, and plan them, you will have a lot of status calls, meetingitis, post-it-ingitis (i do not trust those guys with the monitor with fifty post-its with the PRIORITIES), or persons manually helping you -we call that here in Colombia chinomatic: chino can be translated -in Colombia- to guy, but in this context it means a person, that is not officially in charge of, but is more like an an assistant; and matic is an ironic use of the automatic word, obviously because it is manual procedure that the “chino” will execute. :-D

The development methodology

There are hundreds of methodologies for software development. I cannot even use this Blog to discuss them, however there are some elements that you have in consideration before start your project under any given methodology:

  1. You need time to do what you have to do. Today software projects seems to have the “agile pain“. Agile doesn’t mean fast, it means agile!!! -time cannot be reduced, there is no relativity in software development. If you have a sponsor or senior management that reduce the time by only including developers then my recommendation is to set the expectations since the beginning and use more than one release for the software product, in order to reduce the pressure periodically -BTW do not address the simplest things before, the idea is to reduce the pressure, not to postpone it.
  2. You should have the right team. This can be read as you do not need a team upgrade :-). It is possible to start a project -and even common for those projects that innovates a lot the development process through new frameworks or technologies- to have the need to evaluate the team to validate if the can handle the project. My personal opinion is, if you want to get respect and commitment from your team, be the example, train yourself and lead your team through those dark times. If you do not want to do it, the lead the request of getting a new team leader. -I love to change my hat to senior programmer / architect / developer / system designer / whatever and lead the team to the victory -almost all the times :-)
  3. Technology is out there. Many companies in the software development business, these days almost all of them related to Internet / Web based / Interactive Agencies, do not use or plan their infrastructure. Many of those companies do no understand the need to have real development environments for development, testing and even support to production environments. It is amazing but true how something so important that supports the team work and improves the performance. Methodology is not about documentation only, is also about infrastructure.
  4. Innovation also means Investments. Almost all the methodologies talk about process innovation, maturity of the process, cycles of  verification, improvement, or any other term that can be linked to improve the overall quality of processes and products. But even implement simple methodologies will required an extra effort that WILL HAVE A COST. The thing is, by improving the process you reduce the risk and time of a project.
  5. Pick one. Last but not least, pick one methodology, could be your own, could be a standard, could be something in a book that nobody except you read it. However, pick only one, and make it your own. Companies will mature their own process through the time, and will reduce costs of moving team members from one project to another by only implementing a formal process.

Web based project management tool

1 Star2 Stars3 Stars4 Stars5 Stars
Cargando ... Cargando ...

More than ten years I was forced to wait to see a real web based project management tool -by real I mean a decent software product that seems to address the PM needs and it is not a poor desktop application pushed to the web -like Microsoft Problem Server -oops I mean Project Server. Browsing the web I found the PMXPO 2008 and the SIIA CODiE Awards 2008 pages. Looking at the CODiE Awards 2008 finalists’ list I found @task, a company dedicated to deliver real software that uses the web.

I will try to get a demo or at least a try to that software product. As developer I know a lot of things about web development but also as PM I feel frustrated about the poor quality of the products delivered -that is one my personal reasons because I decided to start the SpZ Framework project. However, there are hope on new products that are jumping in and doing a great work.

Open UP project management - the discipline

1 Star2 Stars3 Stars4 Stars5 Stars
Cargando ... Cargando ...

According to the official OpenUP website the PM for a software development project that follow the OpenUP methodology is supposed to

  1. Encourage stakeholder consensus on prioritizing the sequence of work
  2. Stimulate team collaboration on creating long term and short term plans for the project
  3. Focus the team on continually delivering tested software for stakeholder evaluation
  4. Help create an effective working environment to maximize team productivity
  5. Keep stakeholders and the team informed on project progress
  6. Provide a framework to manage project risk and continually adapt to change

Points 1, 2, 5 are common to all PM in the universe, stakeholder management, expectation management and motivation management are part of the communication ability required as part of the role. However there are some other points that make me feel not so good:

Focus the team on continually delivering tested software for stakeholder evaluation

Stakeholder evaluation expression seems to be wrong. Stakeholder could be anyone with special interest in the project but not necessarily with decision power. Therefore, stakeholder is not the target of the deliverables for testing. More than one time you will be asked for “What if…” items, “Now that we already do this why…” items that everybody hate. Deliver & Deploy should be done only to the focus group -the right persons that will manage the results in an effective manner and following the software specs, probably an offshore QA team, a client QA or internal QA.

Help create an effective working environment to maximize team productivity

The working environment could be a lot of things, but probably means all external factors related for example to company environment, place/location and contractual stuff. However as IT and software developer I recommend to improve also the software environment -i.e. improve the software tools that the team use to do their work. I will recommend free/open source software :-) but obviously is not necessarily the situation for every project. Something that is common in the companies is to have tools but most of the m out of date, not legally acquired -at least in Colombia is a common practice- not working. As PM you should validate the work effort to build the software but also additional effort imposed by the use of the tools -even the time logger tool that I hope you use. If you will ask the team for additional tasks like time logging, change control documentation and other tasks related to software development and project management, be sure that they can do it fast and easy.

Provide a framework to manage project risk and continually adapt to change

A framework is a set of tools, for a person that is handling a project in progress in quite unfair to ask her/him for also the PM framework. In the most of the cases PM should ask the PM Office or the historical records of the company projects to get templates or at least examples. In the case there is no information available you will have to take a look to the templates available in the Internet :-) - I hope I can finish my templates soon so I can post them.

OpenUP site provides a lot of useful information but please validates it before use.

Integrated open source tools

1 Star2 Stars3 Stars4 Stars5 Stars
Cargando ... Cargando ...

PM should not have to deal with IT project strategy however almost all the time PM are “abandoned” in the middle of nowhere with a simple request: build a software tool that probably the client do not understand at 100% and it for sure is not documented.

The first steps are to (re)build the project scope and have a plan, but in the meanwhile your new team will need to have the tools to start their work. As PM you probably will have your own tools and templates but the team will have an IDE and that’s it. You should not deal with technical issues, but the reality is that as PM team will depend on you to get the right/optimal resources to simplify the developers work.

If you are those lucky guys that receive a software project since the beginning and not sometime after then you will have a better chance to get the right resources. My recommendation: Keep it simple but useful -even notepad is a useful tool if you use it correctly.

Your team needs:

  1. Deal with versions. Even before start your coding phase you MUST have a concurrent version system. In the market you will find a lot, but probably the common ones -and open source are: CVS and Subversion (a.k.a. SVN). Versions will force the team to work closer and with the same structure. If your IT team do it well, you will appreciate it a lot.
  2. Common IDE. Developers have their own affairs with specific IDEs. But you are the PM, ask your IT lead and force them all to use the same. I don’t like democracy, PM rules! However, as developer, I love Eclipse IDE.
  3. Documentation System. Most of the developers around the world will hate to document their code or applications. At least here in Colombia, when you ask developers to document their code or provide formal documentation they will give you the bad-eye look (in Spanish the malde’ojo) and you will understand that not the greatest documentation will be available at the end of the project. So provide the team with the tools to make this pain softer. I recommend only WYSIWYG tools like a Wiki, Google Docs, or any other fancy tool.
  4. Track their progress/work. Development tracking tools are suspiciously linked to Bug Tracking but it is not necessarily the truth. I’ve been using bug tracking tools like Mantis BT and Jira as Tasks Assignation tools. Keep in mind that a Bug is a request to do (fix) something. So why you cannot split your work packages in work items and assign them to the team -as you do with bugs.
  5. Provide test environments. I have to say this, why non-developer centric companies like Creative Agencies building Web applications do not understand that a Test Environment IS NOT the developer’s computer. What is this all about? What is the mystery? Test environments are needed, mandatory needed. Release building is a complex task that will have a lot of manually interactions -team pushing changes and enhancements- and it is NEEDED to have a place where to put all together and validate it before release it to a client -even to a client test environment. Please do not cut costs here. I will start a facebook group named “Why we do not have a test environment?” -BTW I do not like facebook, I do not even use it.
  6. Put it all together and working. This is the real thing about IT support. Install software is a piece of cake, is not a complex task, put all together and make it work smoothly is the key. So ask you IT team to do it, or do it yourself, like I did for some of my dev projects. There are many ways to integrate everything but I’m giving you some useful links to found the way to do it:

SpZ Team is currently designing an All-in-One integrated solution. For latest updates check the Framework page.

Open UP project management - Set your information system

1 Star2 Stars3 Stars4 Stars5 Stars
Cargando ... Cargando ...

Project managers who work in software development projects could be those who know about the software development process, probably because they were developers in the past, or those who do not have or do not want to have any technical knowledge and decide to delegate it to a third person -also know as Technical Director, Technical Lead, Team Lead, and other nice names for the man who really manage the software development process.

However this is an article for those who put their hands on projects, probably not coding but are PMs really involved in the software development process. I will explain how to set a project information system based on Open Unified Process and open source software.

The idea is simple, set a information repository accessible by anyone in the project, since the beginning of the development cycle to avoid miscommunication errors. The strategy, use a formal set of templates to document the business needs and the software design and publish them in a project site, but allowing the full access to the development team.

Before begin: you are the PM, if you do not want to go into the details ask IT team to handle the process, it is not so complicated but it takes time. It is not that easy

  • Share the information since the beginning
  • Software projects have this quality, share the information is good, all the information related to the software design and software implementation is good. There is no restriction, developers will understand better their work and BTW you will be reducing drastically the “developer” dependency -does this line sounds familiar to you? “I didn’t do it, I do not understand the code so it will take a time to do/fix/solve it“The easiest way to share documents is to have an open system that allows you to publish information in a public site -public means only to those person you want to have access. There are many ways to do -share a folder through the network :-(, share a folder through versions management system :-|, or to have groupware like Microsoft SharePoint. My case is to publish them since the beginning by setting a Wiki software that will have an ACL, a version management incorporated and all directly online -my team members do not have to install anything else than any web browser.Do not trust the model? Check the proved model by browsing Wikipedia. There is no bigger documentation team in the whole world.

    I will recommend for this experiment DokuWiki. It could be not the best, but is good enough. If you don’t like it there are hundreds so you can pick one. However I will recommend those with WYSIWYG editors to avoid the need of WikiSyntax.

  • Define what to share and how to share
  • At this point you know how to share whatever you will share. But, what is supposed to be shared? Many organizations already have their own set of standard documents, most of them because where certified in something. Like the ISO certifications. So, use them, do not worry, during the project evolution you will see how the documents grow and mature supplying with the appropriated information.Do not have template document? I see, you are on a small company or in a non-small-messy one. Don’t worry there are tons of templates available for free. ReadySET and Method123 will give you a hand but hey, you have to do your homework and build your own ones to fit your process and specific needs.

Know you are ready to start sharing your documentation. Give your team the freedom to work with the documents but track their changes, software design is not a democracy -brainstorming is a democracy where votes do not count. Software design is a Dictatorship where those who has the experience and knowledge will prevail.

From Coder to Project Manager - metamorphosis

1 Star2 Stars3 Stars4 Stars5 Stars
Cargando ... Cargando ...

I’m now PM but I cannot forget my eight years of development experience. My PM metamorphosis take more than four years and even now I cannot leave my geekness behind.

I love programming, I love computers, I love tech details in my projects -and now I love my brand new iPhone toy -it is more a toy than a phone. Is it good to have such geekness running through my veins? The answer for me is: absolutely yes, I could not even imagine how to deal with the PM responsibilities of execution and monitoring and control of a process that I don’t understand or a deliverable that is not tangible product -like source code.

The awful truth of software development

Software development is a little bit frustrating. As developer I know that you probably could be the best coder ever, you can spend tons of hours coding the greatest application and that doesn’t mean success. Probably the project itself could be a success, you will met the scope, within the cost estimation and delivery time -something that I read in the books that is possible :-) - but it doesn’t guarantee the product success. We all know that poor quality software products have the greatest success in the history, like DOS, Microsoft Windows, and JavaScript, while others like OS2, Opera Browser and probably many software projects fail or simple do not have the same impact.

So as PM I deal with this situation every day, tons hours spent in coding and delivery could disappear by typing rm -rf. But coders has to keep on their work, with the same passion and they have to feel that support from their bosses and project managers: their work is important, their work is needed, their work is appreciated.

Software success is attributed to great ideas of the managers, clients or sponsors but, the real thing is that between a sentence like I want something to write my documents and a software product like Writely -formerly known as Google Docs word processing tool, Microsoft Word, and even FCK Editor are a huge difference and a lot of code lines made by unknown heroes.

Keep your heroes motivated

Real geek coders have a need to learn and research about new technologies. There is no maybe for this affirmation. Coders have to move faster in a connected world with thousands of new development initiatives every day -you don’t ask for Cobol -dear Cobolito- programmers these days for new projects, right?

As PM you have to understand it and keep a level of challenge as part of your software project -no the case of all the projects but you should try it at least on a few set of them. R&D is vital to keep coders motivated, and it could be part of your project -increasing the risk of failure on an unproven or not dominated technology, could be part of your company strategy -reducing the overall company revenue, will for sure, raise the team motivation and dedication and will keep the company innovation in a healthy cycle need for competitiveness.

Do not feel scary about innovation, it costs but it is needed. If you don’t believe me ask the Google guys abut innovation and check their company spirit. It is impossible to have a Google model everywhere but you should take a look to the other paradigm.

Free project management software tools

1 Star2 Stars3 Stars4 Stars5 Stars
Cargando ... Cargando ...

Let’s start talking software tools. Probably, if you work in a big company or an projectized one you will have an enterprise solution like Microsoft Project, Primavera, or Clarity. However there is a lot of small / medium and even big companies without any software tool.

This is the first of a set of posts when I will present how I start my projects when no software support is available. Of course I suppose you will have little help of the IT department to get at least some free/usable servers for your purposes. This one will present a small but useful list of tools and their licenses.

You will find a lot of tools that could make easier your life, but obviously, the success of any software tool is based on the use we gave it. Below you will find a list of project management software tools that I recommend for small/medium projects, all of them are free or open source projects

I think is good enough for now, I don’t want to make expectations about those projects, all of them have their pros/cons. If you have comments, feel free to submit them. The whole idea is to build a knowledge base for those who are starting to use a software tool or are evaluating its use.

Project management software upgrade

1 Star2 Stars3 Stars4 Stars5 Stars
Cargando ... Cargando ...

We all know that Microsoft products are not the bests in the market -except for the all might Microsoft Excel. But when we decided to move from Microsoft Project 2003 to Microsoft Project 2007 we were not aware of the big problems we will face in the near future.

We all were more than happy with the Microsoft Project Server 2003 -this is a great product, not the best but a great product, I will not blame on Microsoft products. So when 2007 version came out we evaluate the migration and take the fatal decision: UPGRADE :-(

I hope Microsoft refund the company I work for, not only with the product value but also assuming the additional costs we incurred when started using it. We even set a SWAT team inside the company to address the software defects -WOW, could you imagine a SWAT MS Word team in your company to address MS Word defects?

These are the kind of defects we found:

  • There is no ability to add persons to a tasks when people already submit their time -i.e. if somebody is included during the task execution you will have to create a new one for the same purpose.
  • Do not put blank lines in your project plan -What? Are evil blank lines?

There are more issues that you could even imagine but, I doesn’t make any sense to write them all, probably you will need years to read them all :-). When you and your team are forced to log their time more than one time (yes we do that every day for every work day of the year) because of PS issues you will see how many defects this product has and will pray to the software gods for solutions.

Probably you remember the great launches of the Microsoft products that demonstrates that they usually promoted/release products without concerns about the quality. Did you remember the Windows Millenium Edition (a.k.a Windows Me)? Probably you don’t. Try to reach it from the Microsoft site, try to even get support, it was deleted from our minds. Probably Microsoft will do the same with PS 2007, so copy this entry in your computers so they will not be able to erase your knowledge.

I’m pretty sure the Microsoft PS team will have a better/decent product in the future but BY THE DATE OF THIS ENTRY PUBLICATION, I will encourage people to not use Microsoft Project Server 2007 -or at least try it before buy it -and when I said try it I really mean it.

LEGAL NOTICE: This is my personal appreciation of the product and DO NOT represent the legal company position. This entry is not related to the company I work for in any way. I’m writing it because I feel frustrated about the poor product as final user and I hope somebody found this entry it useful. BTW, What does PS means? Project Server or Problems Served.