Case Study

Case Study: When to realise mismanagement?

From last month or maybe two months, I am helping one of my client’s company. They are sort of done with outsourced developer because (well they didn’t meet me before) and get bad experience. They are using my client, who is a hosting provider, for providing server services. They hire an in house apprentice to maintain their 10-12 yr old system which use Classic ASP to early version of .NET Framework based console app for automation.

So, now they need some help as their in house programmer is not very good and they reach me indirectly. All, is good so far as I am not charging them much and it is really just help. But I feel bad for them, because they are so mismanaged that they don’t even realize that they are missing a proper management. They get in this frame where they think developer is done in this bad environment like that. They have simple process, Client purchase their hardware, there Point of Sale machine generate a TEXT DAT file that they use to print “pre printed” invoice, so their old system only has to write text where it is required. Since the print invoice system is old and they don’t want to change, so our only option is to read those “DAT” file and read it into database to create PDF or do some reporting.

For this they initially have a website which does some online selling and reporting for their admin. It was in classic ASP. So, when a need of PDF arise they get a developer to write PDF, but since ASP is not handy and ASP.NET was in market this developer write that PDF using single page script in ASP.NET for PDF. It works fine. But now they need to bulk email to different vendors and customer at end of day their invoice, so they get couple of Console EXE that they run in background and get things done. It looks good maybe at that time. And it keep working if they get a proper team to handle it.

But here comes the mismanagement part. First they do not have the source code of EXE, until they need to change the pre-printed Invoice design, that result in change in PDF. They realise they never took the source code from old developer, or they don’t bother to keep it safe. Old developer who was now fired don’t bother to keep source code, because he is not responsible to keep it. He send a copy to client and is done when he was fired.

So, my first job to help them was to either recreate a small PDF code as their in-house developer cannot do that. (I still wonder why they call him developer). But I give them option to recreate or try to de-compile code, which works and give full source code back in shorter time. So they become happy to get old code back as it is easier. I however suggest them to not invest much on old system and get new system. They can elimiate to many moving parts from new system and get much stable version. But they are not ready, as for them it is always “one last small change, and we are done”. But are they really smart? I mean it is almost 2 months and their PDF changes are not yet done. They pay 2 month salary to their in house developer. Not to mention if they have to pay me for all help? They are so mismanaged in their approach, that they don’t realise they are missing a good management in IT department. They are lucky to have stable business that is paying for unstable IT needs. But what business they are losing for it, and wasting their resource they have no idea.

You can be busy, have a working solution. But that doesn’t mean it is always the best. Yes they are constraints, money, time, resources. But you have to make decision until when you can drag it. If they were using a simple Github/bitbucket account they can avoid losing files, source code in emails. If they serialise process they can avoid 5-6 console EXE to make similar yet different PDF, they can combine them in one EXE to reduce cost, and save time. Wish I can help them more than I am doing now. Hope their in-house developer learn fast, but he is not. They don’t realise it yet. Hope one day they will.

Article Blog: My thoughts

Next step to development team

In my last post I try to define what motivate me to learn new things. Also, I try to show that I really believe in learning new things. In this blog, I will try to define the basic things a team need for developer productivity. This list may not be what most agree, some might see it incomplete, some might found it over burden. But this works well for me till now, and if I found something better I will change this. But from my experience in sub-standard teams and project this will be a good start.

First, there needs to be a team. Yes, that is first requirement because often there is no team to work, there are individual who just do their work. The team consist of at least two entity, at least two human. Now, you might question that I work alone so how I am referring a team to be of two entity. So to answer it, the first person in team is the Client, and you are the second person, the developer. Client is always the first person in team. He/she must be ready to accept you as his team. This is where team builds. If, he just think he hire you for the job, then he will only get a contracted human resource. He will never get a person who even try to understand his business needs. And if that happens the game is over before it starts. This doesn’t mean the role of developer team is reduced, or all the burden is on client to make team. Developer should be truthful. He should be the one, a client can trust on. It doesn’t matter if you fail to achieve deadline, if doesn’t matter if you fail to deliver the expected product. What matter is at end client doesn’t think he is been cheated. He doesn’t feel you are not skilful enough for job. He should not regret his decision about choosing you.

Second, part of ideal setup comes, with tools you use. How you protect what is been done? How you ensure reliability of software/code you are writing? How you ensure that it works on load? What will happen, in case you are not available to maintain the software? Are you using out date technology? Are you using immature technology? And most importantly, how does it affect client and his requirement? I often see these question are neglected at small scale. Developer mainly think, it is small project and not worth taking all extra in account. If we reduce those Version control, documentation it cost less to client and we gain project over competitor as we offer same solution at low price. If you are looking for developer, ask him to explain his stand on above question. And if you like answer then only choose him. I am not saying everything must always be included, but if you understand the risk/profit of not include all these it is win situation.

Third thing is communication medium. This is another important setup. Often, developers are not available to receive phone calls or chat. They reply email after 2-3 days, while client wonders if you are still alive. Same happen when developer ask for feedback and they get a reply after a week saying, “yes”. Whereas developer was asking to choose between two possible scenario or asking to define a problem. You must set a communication channel between all members of team. And there must be a definite time frame between replies. Even if there is nothing to reply, just acknowledge that message is been received.

Once you master these three things, a first step in ideal setup is been done. If you are developer, please always be truthful to client. I am tired of doing Editing job of some other developer’s failure. I want to work on new project more. I am not your debugger.