Archive for October 2011

To be a Programmer (#1): What is a system?   Leave a comment

System is conceptually similar to a machine, just that there are no physical of its own. Yes, we are talking about software systems. A machine is that reduces human effort — physical — like a press or typewriter. Software systems or simply computer applications or software are built to reduce information processing effort, usually while dealing with huge amounts of data.
A pessimist may say that systems are tools to hide human incapability. Whatever definition we put, systems are helping us in the way they are built for.

As a programming student one must know the effort that we are trying to minimize by creating a system. There are many ways that a system can be created. Mostly,

  • create one from scratch
  • combine some existing systems to deliver the required feature
  •   or, customize an existing one

Based on the selection we make, the effort will be different that you, as a programmer, put in.

To get the maximum output and flexibility, and you have plenty of time, building from scratch is the best option.

If you have no time and what the easy way out, sacrificing flexibility and control to the highest level, you can go for integrating existing systems in some way to meet the requirements. This method demands a good knowledge of the ingredients that you are going mix to cook the recipe.

If you are in a mood where the off the shelf system needs minor kicks and slaps, and you really know where to apply them. Go for the customization. As in the case of integration method, this ways also needs you to have the location maps and a good compass, otherwise you will be lost in the code jungle. This method is gaining popularity because of the explosions in Open Source Software. Even though not all open sources are free, you can secure the code by paying the cost and start digging around to make it yours.

A programmer needs to do (or be?) SAD (System Analysis & Design) to some extend. This part of system evolution brings in the feel of the size of effort that we are going to ease for the target audience. Now, how good you are in this will decide how effective the system is going to be, eventually how proud you are going to be. A bad execution of this phase will bring SADness into your work. How to do an effective SAD is up to you, there are many guidelines that you can follow, but you should apply and digest it correctly.

It’s usual that people tend to ask which technology I should use, what programming language to opt, what process should I follow, etc. There are no easy answers for this. The answers always depend on the effort you are going to ease (in short we can call it ‘the requirements’). The destination is important, how comfortable the journey will depend on the money & time you are going to spend for it. The thumb rule should be “what am I having at present to tackle the issue at hand”. It may not be always the best rule in all cases, but it’s an effective way to control the spending.  

I suggest you read on these topics and make an understanding of the standards before coming back to read the next part of this series

Product Owners   Leave a comment

Most software development company owners under estimates their real capacity of becoming a product owner. If you have ever tried to learn SCRUM or Agile Process, the word ‘Product Owner’ must have trilled you and should have imagined being one.

The charm of being the ‘one’ who can bring a product into the market and become a ‘Steve Jobs’ is irresistible. But beware, it’s not as simple as it seems. The selection of features of a product rests on the product owner’s shoulders. They decide what should be there in the package that will trill the customers and will become the ‘break’.

If you think of a product there will hundred features that might come into your mind. Of which, only a few will be unique, others may be a list of standard things ‘others’ are already offering. Only the unique features will bring you the real money and tear the customers from ‘others’.

Who will be the successful product owners?

  • Only those who picks the most expected unique feature and builds it into the product at the right time
  • Those who makes the unique feature a standard

 All products might have not originally imagined as a ‘product’, they eventually become one. A custom system to a product transformation can occur in many ways;

  • A repeated requests for similar system by different prospects
  • A 3rd party observation and takeover of an under development system
  • A managers discovery

Are few of them, in all these cases the transformation may have brought many challenges to the company including a risk of being thrown away from market.

An under development system brings in opportunities but makes the product owners work a more challenging one. Since;

  • The team involved in the development might be over prioritizing  the features
  • The eventual product owner might have ‘got interested’ in a very few features and the system usually will be bigger
  • The listed features might be in different stages of development and a complete build will be in a near future
  • Identifying the standard and unique features will not be easy and will involve huge market research

(This list is non exhaustive but lists all major ones.)

Coming back to the initial ‘disappointment note’, the inherent failure from the company management or the team to identify such product opportunities brings great loss to revenue and possibly a detachment from potential market. The management usually are skeptic about such possibilities since there will be a lack of intelligence within them. Development teams and their mangers might know the power of the system, but may be reluctant to uncover them, most probably because of the fear of failure or effective increase in responsibilities regarding the project.

To conclude, it’s the power of the higher management to identify and push the product opportunities and bring in the best product owner(s) to lacerate most out of the target market.

Posted October 23, 2011 by jsusmer in mind waves

I’m Monkey; I’m Donkey!   Leave a comment

This is something they used to do whenever they get an open mailbox on a workstation. This will go to all those are there in the contacts list. Now guess what will happen? Seriously, nothing but a smile on all faces who read that mail when they see you the ‘hacked’. There were people who were wandering around just to see some open inboxes. Thinking back, in those days, emails were not that handy and spasm were a virtual virtue.

Internet had gone beyond TBL’s dreams and has seen the only upward trends. But there was also a darker side growing as big, or maybe bigger, who threatens the world by their penetration power. These communities are exaggerated versions of the ‘I’m Monkey’ enthusiasts. Usually a smarter groups who are good in reverse engineering and black box analysis (Not a black magic!). Though both sides continue their battle, we get the best out of this.

Coming back to the email fun, today most people know that sending mails pretending to be any other is simple and its takes just seconds to identify them.  Because of these we are fighting against spam and are wasting much time in separating the bad and good. The extensive spam filtering implemented by many email provides have eased our task still most of the computing power is just wasted over the multilevel pattern matching and filtering. It’s not unusual that these filters sometimes send the most genuine emails into the spam box, which usually costs the most for the email owner. Even that is extreme, but we are far safer than the past, unguarded situation.

 There was a trend in past to host the mail servers in the company network or company owned servers collocated in some high secure datacenters. The main argument was the ownership of the data. The threats and need for global access made the IT mangers to suggest a shift to major email service providers, this definitely compromise the previous argument of data ownership. The economically smart CEO’s opted these services and too cautious corporates continued to the datacenter option. When the cloud came, more and more companies moved into it.

Now the IT Mangers are happy that the headache is with Google or Microsoft or someone else, but in deep anguish because of the lost control over the sending & receiving settings that they used to enjoy in all past arrangements. Now the cloud provider fixes their own levels of ‘pest control’ causing the friendly butterflies to get caged.  Again the line of control is fairly unjustified and will continue that way.

In any case, there will be the ‘I’m Donkey’ people looking out for your open boxes.

Posted October 16, 2011 by jsusmer in Cloud, mind waves

Dependencies   Leave a comment

What becomes a headache in a live system? Probably you might have guessed from the title, its dependencies – both internal and external. Specific internal dependencies are easy to monitor and maintain, when it’s an external, it’s a chaos.

What should one learn to deal with this? Mainly, one should evaluate the dependency. In other words we MUST test it and make sure that the communications and statuses are well formed and will not damage your system by changing them “on the go”. There are 100s of such dependencies ruining the beauty of the internet. #1 of them is the payment integrations with many online banking systems. These portals change their responses and features almost daily to comply with the financial industry standards and other security regulations and guidelines. Who will keep on monitoring them — well you should be, otherwise your precious customers will part from your web systems and online services.

Now you have evaluated the ‘standard’ of the external service, you should now be looking at our system to define ‘what will happen if this fails one day!’ – may be you are crossing your finger to never happened this, but there are times when the giants fail. So be prepared for that unfortunate day. Now, the first thing your developer should be doing is, check for the failed dependencies, and try to ‘catch’ them without going into a crash. Next, the important thing, the first glimpse of the dependency failure should be notified to the System Administrator. Also ask them to email/SMS the error code and the details of which dependency failed at what time with what error. Now the same thing should be logged with the whole dump of the session to analyze the failure.

Once your system is equipped with thee monitoring and alert modules, you should designate a team to deal with these situations. The team should regularly verify the status of the dependencies, get information about any policy or feature change related to them, get any updates related to its service and engage in an escalation process with these service providers.

Recently, there emerged many SaaS services that are free and are very useful. But, the free is always limited in some way, if you take Google Mail; there are 500 outgoing mails per day per box limit. Similarly there are limits line, CPU timing, request per day, request per host, maximum data length, and on. Your system should also watch for these limits and deal and alert accordingly.

The bottom line I one should depend on some reliable, standard services which as some support available, if it’s a free one track the limits.

Happy ‘In dependence’ Day

Posted October 9, 2011 by jsusmer in Uncategorized