Sunday, June 24, 2007

PExpenses for J2ME - My open source personal expense tracker.

Few days ago, I was looking for a free Symbian or J2ME application for tracking my expenses using my phone easily. I downloaded 3/4 but all of them disapointed me. So, last night I created and uploaded this open source project.

PExpenses is a financial tool to track personal expenses with a quick and user friendly gui.

User can enter his/her daily expenses very quickly and can see meaningful reports of the expenses very easily. User can also set password for the application to prevent unwanted access to it.

The project is in Beta stage and has a few limitations like report screen is not very good, you cannot edit entries and no export to Excel/cvs functionality. But I have plans to add/fix these soon. Meanwhile, you can start using it :).

Screen shots from my phone:

Fig-1: The settings screen.

Fig-2: New Entry screen

Fig-3: Main & expenses report screen


Project homepage:
http://code.google.com/p/pexpenses/

SVN Checkout:
http://pexpenses.googlecode.com/svn/trunk/pexpenses

Tools/SDKs used:
JDK 1.5, NetBeans 4.1, J2ME Wireless Toolkit 2.2.

Download release:
PExpenses v1.0.3 (jar and jad file) from here: http://pexpenses.googlecode.com/files/PExpenses1.0.3.zip

Join the project to improve it more. To join the project, please mail me at m.kaisar [at] gmail.com.

Thursday, June 21, 2007

CMM & Processes - Where does Bangladesh stand?

Today, in the SQABD mailing group, I noticed the following two questions:

1. Would you please inform me that how many companies of BD actually make a proper use of RUP, XP and so...

2. In terms of our country, process improvement is its initial stage......Not many company is working on SPI..... Look at India, where are they and where are we...?

I had seen these types of questions before and would like to answer with an explanation from my perspective. I'll start by commenting the questions again:

1. Would you please inform me that how many companies of BD actually make a proper use of RUP, XP and so...

If you need the number, it's not "many". If you need to know why, you'll find my comments about it later in this post.

2. In terms of our country, process improvement is its initial stage......Not many company is working on SPI..... Look at India, where are they and where are we...?

I would like to ask a few questions first: what's the size of the largest software company in Bangladesh? Let me ask the question in another way: how many of the software companies in Bangladesh is of size 100 or more? (including all employees - engineers, admin, management?) How many CMM level 2 (first certification level) companies we have? (we know anyone is in Level 1 by default).

Now, let's ask the same questions about India... If you do a little googling, you'll find that Infosys alone has 72,000 employees and Wipro has 68,000. India has got 60 CMM Level 5 companies, which is 75% in the whole world!!

And we compare ourselves with India every now and then?!!!! IMHO, comparing a new born with a 30 years old man is not always a good idea.

Let's dig a little deeper..

So, we should agree that regarding software industries, our country is in a very negligible state comparing to the "giant" India. (I don't want to discuss the reasons for that, it's out of the scope of this topic.) So, even they are t-o-o large, can we compare their engineering processes with ours? why or why not? You may also ask, why can't we follow from the begging what they are following at their mature stages?

To get the answers, we need to stop "guessing" and do some studies on CMM implementations first, if we haven't already. I strongly recommend everyone to read "CMM in Practice" by "Pankaj Jalote". (You may not get the book in Bangladesh.) If you don't know him already: He is Professor and Chairman of the Department of CSE at IIT, Kanpur and he is a legend in engineering processes and CMM. He worked with the processes at Infosys for many years. Now, here goes my answer to my above questions:

First, I'd really like to clarify the terms and relations between, "Process" and "CMM".

There are two main categories of processes: Engineering and Business. They are both important for any company, engineering process alone cannot improve the company. There are a lot of engineering and business processes defined/sketched out there. You can define your own too.

If a company wants to follow an existing engineering process, it must study and know what the other common engineering processes are. The company should do some studies about them, try to compare them and find which one fits best to the company. It is very important to know that some processes fit good only to some particular types of projects. For example, where the client doesn't know the requirements (as they don't in many practical cases), you can't fit IBM RUP into it, Prototype may do a better job in that case. For another instance, you may not be able to fit all of your junior coders into XP as it was built for experienced ones. Iterative waterfall, Incremental Evoluation, RAD, Staged delivery processes has their own glories. Some processes are more completely defined than other, you'll find good and complete documentation on them as you may not find on some other. You may also need to understand license types, training and certification costs for some proprietary processes.

Next, so we learned about the different processes, why wait to implement one?

One size doesn't fit all! Yes, none of the business processes and engineering processes will fit your company 100%. You may need to customize it, which is known as 'tailoring' in many processes. To do so, you need to know what your company needs now and potentially in the future and what not at all. It's a lot of work.

CMM, defined by CMU SEI, on the other hand, does not define an engineering process. It's a process evaluation framework. It defines the maturity models and the qualities a process need to have to achive the maturity levels. You need to study and outline what your processes need to have if you want to achieve the next CMM level. There are 18 important KPAs (Key Process Areas) you need to have a good idea of. There are different CMMs (extensions and versions) including SE-CMM, SA-CMM, SW-CMM, P-CMM and CMMI.

Next, the hardest part is the real life implementation. Even if you define your dream process set, it will be a nightmare to implement it in a team, let alone in the whole company. It takes a lot of effort and dedication to implement even some simple processes.

For that, you need to have dedicated "Software Engineering Process Group" with one/more dedicated "Process Coach". According to Pankaj Jalote, typical size of the SEPG is 1.5% of size of the company. Task of the SEPG is to understand, define, implement, ensure implementation, study improvement and improve the process itself.

This is where Bangladesh failed so far. Take an example of a good company of Bangladesh: Company X has 50 engineers. Size of SEPG should be less than 1 (if we take 1.5%), as the company size is very small, say we took 1 or 2. Now the problems are:

  1. Company X doesn't even know they need a SEPG.
  2. When they know, Company X doesn't want to effort (even) 2 senior guys just for implementing processes! They keep asking, what's the output, what's the benefit, etc.
  3. It's a whole lot of tasks for a 2 person team. It will take a long time to complete all of the steps and even get to CMM level 2. It's not in months, it may take years.
  4. Company X cannot even effort a third company (say from India) to come and assist them. Moreover, no other company will understand your works and process needs more than you do.

I hope, you all agree with these problems. This is the scenario of a company of size 50, think about the smaller ones of 10, 20 or 30!

Now compare the scenario with a small/medium size Indian company of size 1,000. SEPG is (1.5%) 15 people. A team that large can work much faster and better. They will succeed to get into higher CMM levels very fast.

The reason why I explained a lot about the whole implementation effort is really to give you an idea about the real life effort required and why things fail with us. I had worked in such a SEPG in a company. I learned some of the facts mentioned above while working in it.

Please post your comments, if any.

Note: Few figures were corrected on June 28, 2007.