Starting development project
What issues will you face when doing the custom development? Here are some of suggestions that will help you:
Start small and manageable
We have seen examples where the people wanting to start a project had to hide from their own IT. You won’t have everybody on your side. The bigger the project, the more people will be against. It is smart to start small. Divide it in several smaller projects and run them one by one. Make sure that they deliver. This will prove to everyone but also to you that you are on the right track.
Some projects are complex from the beginning. If you have problems keeping all its aspects in mind, be sure that during the development its complexity will increase. You will have to know and manage every aspect of it from now on. I have seen projects completed and never being implemented for a simple reason. The people requesting the project have outsmarted themselves and just gave up. The project was bigger than them.
Don’t start long projects with many people. Very small teams are the best. Companies that have several people will often do better job than those with 100. All you need is several good people. The rest is ballast.
It is new for everybody
The job you are embarking on is new and challenging for all involved. Even the best developers have for sure seen for the first time some of the elements in the environment they will be using for the development. This goes in their job description of constant learning and acquiring new skills.
The development these days is in part a journey to the unknown. You will discover better ideas during the process and embrace them as they come. Don’t let the project last too long. Big projects that last for years always deliver products that are obsolete in many areas by the time they go live.
Don’t count on your experience
You may have successfully run other types of projects, but software project is something completely different. If you haven’t done one, and especially recently, don’t count on your experience.
You may have 10 years of experience in one job. This is in effect one year of experience repeated 10 times. Only what you have learned in the last year or two counts.
Have good s/w people that work hard to keep up with changes around you. Listen to them. Make decisions together. Be ready to admit that you may be wrong. It is better to sort it out now than to leave it to haunt you later when the project gets finished and goes live.
Build locally or outsource
The big buzzword these days is outsourcing. It looks like a solution to all problems. Instead of one programmer locally you can afford three abroad. Simple mathematics, isn’t it? Many have tried and most of them are not happy.
Here are several reasons why this doesn’t work well most of the time:
It was three people instead of one at the beginning. Things have changed in the mean time. There are more big companies sending projects there and they are now charging much more. There are also more middle men, taking bigger percentages of what you pay. It is currently more like two people for one here and this is changing.
Two people there will probably bring the same results as one here. You have to communicate with more people, there are people in between that must earn their salaries. It is not as simple as calling a developer sitting next to them and discussing what to do.
If this was simple repetitive administration jobs this mathematics will stand. Software development is something different.
Cultural differences make another big obstacle. Different cultures see the same thing differently. Here is an example of a friend of mine who had recently to brush up with outsourcing some work in India:
“We had everything prepared to start production the following Monday: people were trained, h/w and s/w installed. Everybody was aware that on Monday they will have to take a full load. Once we go live there is no turning back. The managers there knew very well that it would be their responsibility if any problem occurs.
So what do you expect they should do? Test, test, test, make people do the full day’s job just for training, to make sure they know what they are doing and all the rest is all right.
So what happened on Monday? Everybody tried to log-in in the morning. Half of them couldn’t. They never tried that before. Monday was for them time to start to look into that, not the time to so start working.
Off course, they had a support company on contract, but they promised to come the next day!. Nothing worked as planned and the worst think was that they didn’t understand our frustration”.
Not all stories are horror stories. Very big companies that move huge projects there save money. They have many people on both sides making sure all works the way they want. Smaller companies generally are not happy at the end.
You have to ask about how you will you organize support, having developers looking after your system later and keeping regular contacts when they are overseas?
We use some overseas developers ourselves for some of our projects. Here is our reasoning for that and how this works:
We give them small separate projects that we later integrate with our existing s/w. In that way they have a simple goal, one that can be easily measured and tested.
We are s/w developers ourselves. We know how long the project takes, what should be done and how the result should look and work. This is far different from managing the project without any s/w development knowledge.
We test and ‘develop’ the programmers over time. Many try to work with us and only few of the best remain. We start with small tasks and gradually build understanding and trust. We know that the people we give the project to, will do the way we want. They know our standards.
Interesting thing regarding that is that we have a small site www.FunSide.net with several puzzles and games. What has this to do with our business of developing s/w applications? It has, in a strange way. The puzzles are result of our initial testing of our developers. Everybody wants to make us believe that they know everything. The first task we give them is to make a little puzzle or game. Very few manage to finish the job. We had to put those puzzles somewhere. Hence the puzzle web site.
One more thing that is interesting: all our developers are from Europe. This started by chance and stayed like that by chance. New recruits are referred by existing people and that’s how it goes on and on.
Sell the new s/w internally
It looks like once you have a new s/w developed everybody in your company will jump be excited and rush to use it. It won’t be the case. I have seen projects with great starting idea, done properly but once finished never used.
There can be various reasons for that but one is more usual that the others: the project has not been sold internally to your own people. It looks strange that you have to sell to your own people, but this is the fact. You have to work hard to achieve that:
· Make sure that the s/w has high profile and that everybody knows what it is doing,
· Train the people and show them how their job will be better. Be there with them until they feel comfortable with the new software.
· You have to know what benefits they will get and advertise them within the company.
If you have a problem finding benefits, your project may have missed the target from the word got.
Keep supplier around
Once you finish the project and it starts working, what then? This is not the end of the job. You will need adjustments, changes, to implement new ideas all the time. Keep the developers around.
One of the many strategic alliances that you have is with the s/w development company! Have them financially interested by signing a support agreement. Keep in touch. Conduct regular meetings with them every ½ a year. Ask them to present new ideas, new trends; what they think you should do to implement some of new ideas.
Have in mind that you will never reach your destination. You are on a journey and competition is running after you. You have to keep your distance. You supplier is now part of your life, like a family.
Desktop vs. Web application
I guess you already know the verdict. Build web application whenever possible. There are many reasons for that. Here are some:
Desktop is a thing of the past. We had to install application on every desktop in order to use them. The web applications need only Explorer to run and the Explorer is already there on every system. There is nothing to install. This is not a small thing. Consider big companies with hundreds of PCs and army of technicians taking care of all PCs to have the proper version of the application, system s/w, all DLLs.
With the browser you can access the application from everywhere. You can work from home, and while on the road. In some cases this won’t be appropriate for security reasons: if the access has to be contained within the company. This is easy to achieve just by configuring your network appropriately. Ask your technician and it will be solved.
The application can be hosted outside your company. We are heading towards times when everything will be hosted. Everybody is talking about Cloud Computing. This means several things but one thing is constant. It will be run somewhere else and not in your office.
There is one thing that we developers know about web applications: they were not able to match desktop application in terms of being user friendly and easy to use for years. The web applications have caught up finally and now we have the same feeling and ease as with desktop. The new technologies like Ajax have managed to level the playing field. One thing is now for sure: There is no going back.
|Slava Krnjetin - I have graduated Mathematics and then turned to IT and never looked back. I have now over 25 years of experience in IT industry doing consulting and development. It has always been my passion to follow the new IT trends and tools as they evolved over years.|