Tuesday, August 24, 2010

Natural Synergy between Cloud Computing and the new Mobile Web

I was recently trying to write a document on how mobile applications will impact the hospitality industry in the coming years. Naturally one of the key technology areas that I talked about was HTML5 and its impact in the coming years. This implied that mobile web applications were likely to dominate n the coming years with the advancement of technology and the browsers, bandwidth (3g, 4g) etc. etc.

We already know that the number of smart phones is exceeding or about to exceed the number of PC’s and this is growing by the day. With the increase in mobile usage predicted by almost every analyst in town, we can easily conclude that mobile web applications which are to be created in the coming years will be accessed by a far higher number of users than the regular web ever had.

This means we are back to the era of the server side development taking dominance with the expectation that the web application will be scalable, able to take on load and yet deliver the agreed upon performance. There was a brief lull in this when people were busily developing native mobile apps. This is because in a native app most of the processing happens on the client and the application connects to the server only for data fetches. So people were busy creating beautiful looking native apps, taking advantage of the device’s features. But we can safely predict that this lull is over and server side architecting is back in fashion and how!!

With the number of smart phones increasing by the day, it is expected that the number of mobile users accessing a web site is a huge, increasing and variable load. During peak hours or periods this load is likely to increase further. Assuming that the application design is optimized, scale is achieved by procuring the required hardware. In the case of traditional hardware design we always followed the maxim of procuring hardware for peak usage. In this case predicting peak usage will be tough as it is apparent that the load is going to increase on a daily basis for a reasonably popular web site. Also this is bound to be a costly affair and introduce tremendous maintenance overheads.

Now comes cloud computing into the picture. Cloud computing as we all know has the capability of providing users with computing resources servers, storage, networks etc. and it is expected that they can be rapidly provisioned and released with minimal effort from the service user or the service provider, at a cost of course. The mantra is the cost savings that cloud computing provides without the need for upfront infrastructure procurement and maintenance. I.e. in the cloud way of managing infrastructure, an enterprise needs to rent only that much resource as needed for immediate use. Resources can be provisioned just in time and immediately released when no longer required.

Studies indicate that if a web application always has a uniform load there is no cost benefit in moving it to the cloud. Cost savings are achieved only in cases of dynamic load, by acquiring and releasing resources. So applications which have uneven load patterns become candidate applications which can derive cost saving from cloud deployment. More uneven load patterns will imply more scope for cost saving.

Thus it is a no brainer to conclude that mobile web applications or business services expected to cater to mobile usage are ideal candidates for being deployed on the cloud as it gives them cost savings as well as helps them cater to dynamically varying loads smoothly.

Another thought which comes into my mind is the security worry that enterprises have about deploying applications on public clouds. With mobile applications, it is likely that they may not be very critical applications and hence can be deployed safely onto the cloud.

Hence my conclusion.. What do you think??

Tuesday, February 16, 2010

It is Math after all !!!

Continuing on the post by Eshu about what are the typical activities of a software professional.  Some more observations..

I have noticed that the higher a manager is in the hierarchy the more removed they are from a developer's perception of software technology (as in JAVA , .Net , Ruby, AJAX, Perl , etc. etc..)

A typical manager / senior manager / senior- senior manager's ..work day

  • Mail

  • Phone Calls

  • Excel Sheet

  • Meetings

  • More Excel Sheet

  • a bit of power point

  • More mail and more phone calls

  • More meetings

  • Blackberry extensively thrown in..

  • A bit of SAP

  • and more of the above


Almost entirely the work consists of number crunching in some form or the other. Whether it is calculating profitability or resource efficiency or productivity or defect density and so on..

I was talking to my husband this morning who is part of senior management in another Level 5 company and his work day and  his peer's work days  are more or less as above.. Today he in fact has a marathon 3 hour excel sheet scheduled the task being 'Resource Forecasting'...

So it is Math after all !!!.

PS: My apologies if I unintentionally hurt someone's feelings..

Tuesday, February 9, 2010

School Teachers vs Software Engineers

I was in my daughter's school last week on account of a sports day function in her school. I was suddenly  struck by this fact (all of us including me notice this every day,  but think is commonplace) that the entire event was organized by teachers. This got me thinking to what would be the skill set of a teacher if I were to articulate it in words and how it would compare wrt a software engineer. It may be something like this...

Skill Set

Have the right balance between people / process and technology

People

  • People management Skills (students / fellow teachers / principal / parents)

  • Excellent communication skills + English speaking skills (obvious)

  • Customer Facing (face numerous parents!!)

  • Stakeholder Management (negotiate between the principal / parent / student)


Process

  • Highly process driven

  • Adhere to all prescribed rules / standards / formats (remember School timings / test papers / marks / attendance etc.

  • Innovate on processes every time (No matter what they do there will be suggestions from parents to improve processes)

  • Documentation

  • Planning : Home works / Tests / Assignments / School functions / Sprts Functions / Projects etc. etc..




Technology

  • Subject Matter Expert (eg: Science / Maths / English etc.)

  • Computer Literate (all schools have some version of school management software)

  • Art / Drawing

  • Dancing and Choreography (Singing optional)

  • Programming Skills (you dont know when a nerdy student may pop up)

  • Current Affairs

  • Knowledge of the local language / customs etc.

  • In short be one up on the student  especially some over smart ones !! :)


Soft Skills

  • Self Motivated : Definitely Yes!!

  • Time Management Skills

  • Logical thinking

  • Innovation and Creativity / Think out of the box (remember they have to organize dances / drams / school projects every term)

  • Patience / Conflict Resolution / Decision making / Humour (we dont want anyone yelling at us or our kids!!)

  • Work weekends / overtime (remember all PTA meetings are on week ends / all projects / functions mean they have to stay at work till late night!!)


Job Responsibility

  • Groom future citizens

  • Help them choose the right career and excel in their life

  • Inculcate values and culture without any bias

  • etc. etc...


In contrast see the skill requirement of a software engineer

Technology : Programming Skills in any one language (in no way will a JAVA guy learn .Net and vice versa)

People

  • Communication Skills : optional / not required at all :)

  • Interpersonal skills : optional (nerds are not meant to be social beings !!)

  • Logical thinking : Is it used anymore ??

  • Time Management ( what does it mean ? you ask any developer he says that the PM gives him the schedule so his PM manages his or her time!!  . starts work only after 6:00 PM and declares that he/she is working hard.... )


Process


  • Documentation : highly optional

  • Innovation / Self Motivated / Creativity ???? knows JAVA or .Net isn't that enough :)

  • Process Quality : every developer's hate topic..


Job Responsibility

  • Produce software

  • Software can be buggy

  • Need not have documentation

  • Need not meet stake holder expectations as long as it confirms to a signed off RA document created way back..


Now let us see the salary comparison

  • Starting Salary of a developer : 3 lakh per year (fresh from campus)

  • Salary of a senior teacher in one of the high -fi international schools - Rs. 3.5 lakhs per annum


Now let us see the percieved position in society.

  • Software engineer : Highly sought after. Respected . Very good in the marriage market

  • Teacher : Last option after all career choices are exhausted. Definitely no father would want his daughter married to a teacher ..


Isn't this food for thought .. :)

Thursday, February 4, 2010

Software Quality shouldn't it be a way of life ?

I was reading this post by Vijay Ghei which talks about humanizing the IT industry. This post while being thought proving brings me to have the courage to write about my favorite topic on whether it is time to totally revamp our software quality processes . This is controversial and bound to get a few raised eyebrows, but I thought I should go ahead and write it..

Essentially as we know our software processes closely follow the manufacturing industry. We sort of rely on extreme documentation with the idea that when we interact with customers or replace our "resources" our documentation comes handy and acts as the final word.. Which is fine but this goes with the underlying principle that one "resource" is the same as another and is inherently interchangeable.So as per our processes if we have the documentation in place then we can replace one JAVA programmer with another JAVA programmer of same experience  and get the same results. In a manufacturing industry this logic is perfect as one machine can be replaced by another.

But we are not cloned machines yet and each of us brings in our individuality to the project. The success or failure of any project completely depends on whether all these individual minds are harnessed productively for the benefit of the project. A successful project naturally has to have a high quality deliverable , because it is not possible for any customer to accept a working software if it has quality issues. If I were a customer I would definitely reject software which does not meet my needs no matter how matured the process used to produce such software

So we have projects which are declared as totally without process but highly successful from the customer perspective and vice versa. We also have members who request to be kept out of quality processes and left to concentrate on development :-) We have a organizations  who decide that they have to start following agile processes to reduce turnaround time and so on...

Quality is a way of life and has to be the life's breath of every developer or team member. It has to be ingrained into all daily activities. I am all for making the best quality software possible and having in place whatever environment it takes to ensure that. One thing is sure  good software means good quality..

Do these thoughts make me anti process / an agilist or anti establishment ??? Most Probably..

I would like to sign off this post by pointing you all to article titled "Software Engineering : An Idea whose time has come and gone"   by Tom Demarco considered the father of software engineering and who is famous for this  book "Controlling Software Projects: Management,Measurement, and Estimation"The books opening statement is the famous line: “You can’t control what you can’t measure.”

BTW this is article is not freely available. Hence if you are interested pls write to me and I can send you the pdf. I tried to embed it . I don't know if  you will be able to access it..

SW_Engineering

Random Thoughts..

From a long time I have been meaning to write a post. But as with all these things never really got the time or idea. If I have the time then I dont have the idea or if I have an idea  (which is generally in the middle of the night), I don't have the time or energy to write.

I am really amazed at the way our blogosphere is growing. Since I am not able to come out with a original idea or thought, I though I would share what I am doing these days. Am quite tied down with trying to integrate with  a Citrix product called Citrix Access Gateway. This comes pre-loaded in a router like device and we are supposed to integrate our Delfigo solution as a second factor authentication to this device! As part of this did some study on a protocol called RADIUS and came across a new term called hypervisor. The hypervisor is a virtualization environment that directly runs on top of the hardware and gives each virtual machine  a dedicated view of the hardware Microsoft's Hyper-V (comes with Windows 2008), VMWare's VSphere , Citrix's Xen Server are all hypervisors.

By the way am also evaluating free agile management tools : Pivotal Tracker , Scrum Wall , Agilo. Am slowly coming to the conclusion that there is nothing to beat pen and paper! Will keep you posted on my findings in my next post.