Monday, September 1, 2014

Ten Coding Pillers


Coding conventions are a set of guidelines for a specific programming language that recommend programming style, practices and methods for each aspect of a piece program written in this language. These conventions usually cover file organization, indentation, comments, declarations, statements, white space, naming conventions, programming practices, programming principles, programming rules of thumb, architectural best practices, etc. These are guidelines for software structural quality. Software programmers are highly recommended to follow these guidelines to help improve the readability of their source code and make software maintenance easier. Coding conventions are only applicable to the human maintainers and peer reviewers of a software project. Conventions may be formalized in a documented set of rules that an entire team or company follows, or may be as informal as the habitual coding practices of an individual. Coding conventions are not enforced by compilers. As a result, not following some or all of the rules has no impact on the executable programs created from the source code.
 
But in the blog I would like to put 10 best  coding pillars / rules for best coding practices above any particular technology / platform .

First and the foremost rule is that your code should only implement what’s required, no more no less. Primary focus of your implementation should be to cover the requirements, and tasks like creating reusable components, additional features like offline mode support etc should be included only if additional time and resources are available. As an extension to this rule, you should also make sure that only the required libraries, frameworks and resources are included in your project, this will reduce the overall size of your app binary and will avoid confusion.

Second, your code should implement the required task in the simplest way possible. If you find something that is getting complex, take sometime to simplify it. It is always faster and cheaper to replace complex code earlier, before you waste a lot more time on it. A simple design always takes less time to finish than a complex one, so always do the simplest thing that could possibly work. Consider an example: you multiply by 100 to turn a fraction into percentage and you also multiply by 100 to turn meters into centimeters. Should you have a single function that multiplies by 100 calledconvertToPercentOrMeters(x)? NO! Not even if it would remove some duplication. You want two methods; converToPercent(aFraction), andconvertMetersToCentimeters(aLength). You want two because they tell you different things. Not just that you will multiply by 100 but also why you will multiply by 100 and what kinds of numbers are valid inputs.

Third, your code should meet the basic performance requirements interns to time and memory efficiency of the applied algorithm, so that the user experience is not compromised. Algorithms must be analyzed to determine their resource usage. For maximum efficiency we wish to minimize resource usage. However, the various resources i.e. time, space cannot be compared directly, so which of two algorithms is to be more efficient often depends on which measure of efficiency is being considered as the most important, e.g, is the requirement for high speed, or for minimum memory usage, or for some other measure?

Fourth, your code should have proper error handling, it should be able to recover from the error without blocking users and should produce comprehensive error messages. Error handling refers to the anticipation, detection and resolution of application errors. Syntax errors are easy to find and fix, with the help of compliers. Logic errors, also called bugs, occur when executed code does not produce the expected result. These are best handling with the help of debugging tools, this can be an ongoing process that involves, in addition to the traditional debugging routine, beta testing prior to official release and customer feedback after official release.

Fifth, your code and design should avoid repetition at all levels possible, this include right from declaring variable with similar purpose, writing comments, writing functions, declaring classes to designing high level modules. In software engineering we have a principle, don’t repeat yourself (DRY), its aimed at reducing repetition of information of all kinds. It states as “Every piece of knowledge must have a single, unambiguous, authoritative representation within a system. When the DRY principle is applied successfully, a modification of any single element of a system does not require a change in other logically unrelated elements. Violation of DRY are typically referred to as WET solutions, which is commonly taken to stand for either “write everything twice” or “we enjoy typing”.

Sixth, your code should have comments which are accurate, clear, concise and only at the required places. To know where to add comments in code is always a subjective matter, one way to get around with this is by adding comments on all the places in code where you would have given an explanation while explaining your code to some other developer, probably a developer with lesser experience and expertise. Always remember that code tells you how, comment tell you why.

Seventh, your code should adhere to coding standards. Coding standards specify a common format for the source code and comments. This allows developers to share code, and the ideas expressed within the code and comments, between each other. If also specifies how comments (internal documentation) should be handled. More importantly, a well designed standard will also detail how certain code should be written, not just how it looks on screen.

Eighth, your code should have symbolic constants for hard-coded values. Its not always possible to completely eliminate hard-coded values from the code, but you can always replace them with more meaningful symbolic constants this will make your code more readable. A benefit of symbolic constants over variables is they are evaluated by the PRE-processor, i.e. they are re-written as literal values, not as variables. Thus run-time access to symbolic constants is significantly faster than access to variables.

Ninth, your code should use data structures and algorithms available in the language or its libraries. As software industry is getting matured, languages and libraries in all areas are getting equipped with rich set of data structures and algorithms. If you dig deep enough, you’ll find the required data structures and algorithms for the task in your native language or its libraries. Few advantages of using native data structures and algorithms are, the lesser code you write the lesser code you have to test and maintain, language and its libraries are throughly tested and stable, results in avoiding third party libraries thus reducing the overall resources in the app and they are commonly share and understood by the developers hence easy to communicate.

 Tenth, last but not the least your code should be thoroughly tested. The importance of testing and its impact on software cannot be underestimated. Software testing is a fundamental component of software quality assurance and represents a review of specification, design and coding. Testing can provide objective, independent information about the quality of software and risk of its failure to developers.

A software is a large complex system which is built as a combination of intermediate stable forms of small simple units, we can define these units in as smaller form as functions or as larger as software modules. Hence these points must be applied from the smallest units of a software like functions to the larger units like software modules, because the only way to maintain an overall quality of your software is by maintaining it right from it’s smallest unit to the software as a whole.

Hopefully the information shared in this blog was useful, and perhaps you have been inspired to implement these in your code more rigorously. Please share your views and feedback in the comments – we would like to hear from you.

Monday, August 11, 2014

Working from Home challanges


Many people want to work from home. Very few know how to actually make it work or do it religiously. Working from home isn’t glorified playtime. It isn’t a chance to goof off. For the successful, it’s an opportunity to do what you love and reap the benefits of being at home. 

Unfortunately, there are a lot of misconceptions floating around social media and the web in general. In fact, when you see a flashing banner advertisement with the phrase “work from home,” your natural inclination is to avoid it like the plague. I don’t blame you. 

1. “Only big company employee can work from home.” About a decade ago, this may have been true. In fact, I used to know a guy who worked for IBM, and sure enough he was one of the privileged few at the time who worked from home. Obviously, the tech landscape has changed drastically in the last five years, causing an explosion in the work-from-home movement. 

2. “You can’t make real money.” When I tell people that I work from home, I often detect skepticism in their reactions. With the development of Elance.com and oDesk.com, the future of freelancing has never been brighter. Jobs from design and marketing to accounting and strategy are all online waiting. In fact, since oDesk’s founding in 2005, freelancers have earned over $1 billion online. Sounds like “real money” to me.

3. “It’s a scam.” Sure, there are a lot of work-from-home scams out there. In fact, before I stumbled onto oDesk, I had heard the same spammy radio ads that you’ve heard. Luckily, I never fell for any of them and instead spent my time building my oDesk reputation. Dozens of happy clients later, I’m busier than ever and proud to say that I never spent a dime on any gimmicks.

4. “I would never be able to stay focused on work.” Most commonly, people wonder how I can resist the call from -- well, anything that seems more enjoyable than work. The incomplete honey-do list.  The dripping faucet.  The fridge. Staying focused on work is all about boundaries. In all honesty, is your current cubicle all that effective at keeping your attention?

5. “My kids would never leave me alone.” Your home office should ideally be separated by a physical boundary. If having a room set apart isn’t feasible, consider partitioning off a section of your room with a wall divider.

Beyond that, it is important to set clear expectations with your family. During work hours, you’re “at work” -- even though you’re technically still at home. Get buy-in from your spouse and ask for his or her help to keep these boundaries.

6. “Clients won’t take me seriously if I work from home.” As long as you provide value, clients don’t care where you work. Most of my clients use freelancers from every corner of the globe. Once they hire a freelancer, location and office configuration is seldom ever discussed. The only exception to the rule is if the freelancer’s Internet or cellular connection is undesirable, which can create friction for the client.

7. “I’d feel weird working in sweatpants.” That’s your problem. Personally, I can’t relate. You may want to talk to a psychologist about why you have such a deep attachment to wearing slacks.

8. “Need to think of benefits for both sides.” Working from home can be convenient to employees and help companies save money, but it’s not the right fit for every worker. Distractions are plentiful when you are home, and often it’s only the most disciplined who can remain productive and efficient.

“Working from home should be considered dangerous and could be a disaster when you consider the potential impact on your quality of life,” warns Grant Cardone, author of If You're Not First, You're Last. “The level of discipline it takes to work from home and generate solid results is intense and most people fail at home because of this one fact.”

If your idea of working from home involves wearing pajamas and juggling personal and work responsibilities at the same time, it’s time to reshape your priorities. Follow these five tips to effectively manage work and life as a remote worker.

9. “Need to office feel even working at home” Just because you don’t have to go into an office and sit behind a desk everyday doesn’t mean you can stay in bed or in front of the TV with your laptop trying to complete your work.

Career experts recommend setting up a specific office area in the home so you can “go to work” and not be distracted by dirty dishes, a crying child or a favorite TV show.

“Where your workspace is makes a big difference,” says Sara Sutton Fell, CEO of FlexJobs and a at-home worker for nearly 10 years. “When my second son was born, I realized it was really important for me to get more separation, so I moved my office to a space above our detached garage rather than in the house.”

10 “Set Clear Boundaries” Having a dedicated work space is half the battle, but you also need to set rules about who and what can enter your office.

“Create very strict boundaries where there are no dogs, kids or spouses allowed,” says Cardone. “The door needs to remain shut with only those that have top clearance allowed access.”

The work space should also be void of distractions. For instance, forgo putting a TV in your office or checking Facebook five times a day.

12” Keep Regular Work Hours and Prepare” Maintaining normal office hours can help maintain productivity.

 “Your family and friends need to pretend you simply aren't there, unless it's a dire emergency,”. “Remind your family of these hours and let them know you expect them to respect your work time so that you won’t have to work when you should be spending with them.”  In addition to setting the hours, career experts say it’s a good idea not to work all day in your pajamas. Keep your normal preparation routine, take a shower and get dressed, even if your commute is just down the hall.  

Thursday, July 10, 2014

Organizational Data Breach an Analysis



Businesses store vast amounts of information. A security breach occurs when an intruder, employee or outsider gets past an organization's security measures and policies to access the data. This sort of security breach could compromise the data and harm people. There are various state laws that require companies to notify people who could be affected by security breaches.

A data breach is the intentional or unintentional release of secure information to an untrusted environment. Other terms for this phenomenon include unintentional information disclosure, data leak and also data spill. Incidents range from concerted attack by black hats with the backing of organized crime or national governments to careless disposal of used computer equipment or data storage media.

Just to mention I would like to mention on the notion of a trusted environment is somewhat fluid. The departure of a trusted staff member with access to sensitive information can become a data breach if the staff member retains access to the data subsequent to termination of the trust relationship. In distributed systems, this can also occur with a breakdown in a web of trust.

Uncovering a security breach depends primarily on the method of discovery, as some methods inherently take longer than others. This also depends on the maturity of a security program implemented in an organization that directly reflects the ability of an organization to detect and respond to threats. It is important to remember that speed is not the only critical factor in incident response as execution of a well-conceived plan is equally critical while detecting and responding to breaches. Acting fast just for the sake of speed increases the risk of making mistakes, resulting in higher costs or needlessly extending the time necessary for full incident mitigation. Unfortunately, third parties discover data breaches much more frequently than victim organizations themselves.

Physical Security Breach
One form of breach is a physical security breach, wherein the intruder steals physical data, such as files or equipment that contains the data. Intruders could steal computers, particularly laptops, for this purpose. Businesses should monitor access to their property to cut down on such incidents and require employees to lock away their laptops when not in use.


Electronic Security Breach : Another form of breach is an electronic security breach, wherein the intruder gets into a business' systems to access sensitive data. The intruder gains such access by taking advantage of any weaknesses in the systems, such as inadequate firewall protection. This could also happen if the organization does not have adequate password protection for sensitive data. This sort of security breach is one reason businesses should perform constant security updates.
Data Capture Security Breach : Data capture, or skimming, is a practice whereby the intruder captures and records the data on a magnetic card stripe, such as on a credit card. This form of security breach helps the intruder produce copies of credit and debit cards. The intruder could either be an employee of a merchant who handles the customer's card, or it could be an external intruder. An external intruder could attach a device to card readers or ATM machines to skim information.
Business Response : Businesses should be wary of security breaches. Best practices for businesses to follow include having a policy in place to deal with any incidents of security breaches. They should identify what information has been compromised and decide who are the appropriate regulatory authorities to which they should report. Affected customers should also be notified.


Security and data breaches don’t favor one organization or industry over another and are taking place every day. Companies should consider the “how” of a breach as opposed to the “who” to evaluate their exposure to a similar event.

Retail operations remain a target to hackers due to the volume of information in their systems, including credit card information, confidential information for loyalty programs, and employee data. The victims of these attacks are an organization’s most valued assets: their employees and customers.

Until recently, many thought data risk was trivial compared to other threats such as theft, slip and falls, and workplace violence. But with data compromise occurring at much greater frequency, it’s one risk you don’t want to underestimate. Reputational harm stemming from a poorly managed data breach can be catastrophic.

Five myths you can’t afford to believe
1. Data theft is not a problem for me — my company is too small. Data privacy is a concern for organizations of any size. Rogue employees, data thieves, and unscrupulous business associates are looking for opportunities to take advantage of any weakness or mistake. Additionally, human error by negligent or careless staff account for a surprising number of data breaches around the country.
2. We can afford to self-insure the risk. As the economy continues to recover, companies are still closely watching discretionary spending, including certain lines of insurance coverage.
Many organizations wrongly believe that if something happens to their data, they can afford to cover the costs. According to a recent Ponemon Institute study, the average cost for a small breach of 1,000 records could easily exceed $200,000 — a sum that many companies cannot easily absorb.
Remember, the majority of funds to respond to a breach need to be liquid. Breach vendors typically look for payment before or at the time service is rendered, and payment for postage is required when the letter is mailed, not 30 days later.
3. Coverage is expensive and hard to get. This perception was true five years ago but is not true today. Competition, claims experience and a larger pool of buyers have made network security and privacy liability coverage more cost-effective and easier to obtain.
Even with the recent proliferation of retail breaches, the market remains relatively stable. Some carriers, however, are more cautious when reviewing risks with a large volume of credit card data.
4. Our general liability policy will cover us. General-liability insurance covers bodily injury and property damage as well as advertising injury and personal injury. The courts have consistently stated that data are not property because they are intangible. The perils associated with advertising injury and personal injury are very specific.
While a properly worded lawsuit could trigger coverage, the main expenses from a data-privacy event are the breach response- and notification-related costs. There is little chance of these costs being covered under a general-liability policy.
5. We have vendors who handle our sensitive information and credit card transactions; if they have a breach, it’s their problem not ours. This is not generally true. The data owner — the person or entity collecting the data — is ultimately responsible for what happens to that data.
Thus, a breach at a trusted business vendor could still lead to your obligation to provide notification and a decision whether to offer credit monitoring. Your contracts may require indemnification by your vendor, but if the breach is large enough, indemnification might not be enough to cover the costs or your vendor could file for bankruptcy.
More importantly, do you want critical correspondence to customers and/or employees handled by someone other than you?

A few steps toward peace of mind

It is essential for organizations to adopt policies and procedures addressing information security, along with a concrete, comprehensive plan for incident response. Consider these questions to create “peace of mind”:
  • Plan — What will you do if a potential issue is identified?
  • Educate — Have you adequately educated your employees about their responsibility to protect private information?
  • Access –Have you implemented standard procedures for access to and use of private data? Is access to data limited to a “need-to-know” basis?
  • Contracts — Do you have procedures for managing your contracts with third parties? Do they address indemnification and insurance?
  • Encrypt — Do you follow encryption standards? Do you restrict and/or encrypt data that is stored on mobile devices, including thumb drives and backup tapes? What about data at rest?
  • Online Do you have a written policy regarding the dissemination of personal information on public and social media sites?
  • Financial impact — Do you have adequate reserves or an appropriate insurance policy to manage the financial impact of a breach?
  • Monitor — How often do you monitor networks, websites and databases to detect potential issues?
Readiness is the crucial step. Organizations can’t afford to figure things out after a breach occurs. It’s much more cost-effective to have a ready-to-use incident-response plan, an on-call forensics expert and a privacy attorney on retainer. Then, when a potential issue is identified, your organization can act to mitigate the effects of a breach, deter any potential litigation and respond to inquiries from regulators.
Employers should also look for insurance partners who can help them identify financial risks and develop customized solutions to better protect their organization.
As larger organizations adopt security awareness campaigns due to requirements of various compliance regimes, training is often conducted only once a year. Organizations will be able to learn about potential security incidents faster only if their employees are well-equipped to recognize that something is amiss and react accordingly. And this will only be possible if, apart from stringent security policies, regular updates and refresher courses are in place.

Tuesday, June 17, 2014

Mobile Banking growth an Analysis



As mobile device technology evolves from being device driven to consumer driven, we are witnessing a corresponding shift in the consumer’s outlook towards the usage of mobile devices.
In the earlier days, the consumer would feel overawed by the impact of technology and could be easily satisfied with the simple promise of convenience. Today’s consumer, exposed to unprecedented levels of information and awareness, is becoming more and more demanding by the day. The average mobile device user is not swayed by the bundle of services being offered on his device; he now expects service providers to push the envelope continuously, leading to the age of consumer led innovation. The evolution of mobile device technology and the consumer’s expectations has had a significant impact on the banking industry.
With non-banking players venturing into the realm of mobile payments, wallets etc. The consumer is spoilt for choices. However, with the mobile payments industry still in a state of flux, ambiguities remain in terms of regulations, cross-border transactions, and most significantly, ownership of the customer. To survive the onslaught of non-traditional competitors, banks need to ramp up their capabilities to service the connected and aware consumer.
This blog studied the current trends in the mobile banking sector, placing emphasis on the disruptive innovations that are altering the global banking landscape
Over the years, mobile communications technology has evolved from being device-driven to user centric. In the past, the customer’s usage of a mobile communication device was restricted by the device’s capabilities. However, with the evolution in technology, the device no longer dictates the user experience. Instead, it is the other way round; the user’s expectations now drive the device’s capabilities. Increasing computing power, scalability of operations and the increasing interaction between the device and the user have led to innovations such as voice-activated assistants, mobile handsets with built in projectors, wireless battery chargers etc., which are continuously redefining the way we use mobile devices. The past decade or so, we have witnessed the evolution from physical identity cards and passbooks to virtual methods of establishing identity such as secret questions on telebanking, pin codes, barcodes, QR codes etc.
 As technology advances further, mobile devices will play a significant role in multi-factor authentication and authorization. Identity will be sensor driven in the age of robotics, cloud and predictive analytics. Face and voice recognition using biometric technology will enable mobile devices to replace the traditional modes of establishing identity.
Emerging technologies such as Near Field Communication (NFC), which is in vogue these days for making contactless payments, can also be used to enable devices to act as electronic identity documents. Since the technology supports encryption, it is more secure than Radio Frequency Identification (RFID) systems. Unique identity can be further extended to manage access in the form of common access devices, a concept that is already being applied for getting tickets or boarding passes at airports. Innovative applications of NFC technology include car locking mechanisms, tagging of pets, parking meters etc.
The emerging trends of Bring Your Own Device (BYOD) technology, virtual thin clients, and cloud-based network management can be applied to enable authentication even when a local network server does not manage the device.
As wearable’s become more and more prevalent, users will be able to carry their identity with them at all times. As mobile technology becomes more and more affordable and accessible, a mobile device will gradually become an extension of one’s self.

The delivery of a mobile banking service to a consumer in Indian context involves the participation of four primary players; A Bank, Mobile Network Operator (MNO), a Mobile Banking Technology Vendor and the consumer. 
In most instances the mobile banking vendor has been the pioneer in shaping industry adoption and lobbying the other two principle stakeholders on the value of extending the banking franchise to mobile.  The early pioneers of mobile transacting go back around 10 years. These initial visionaries have persisted in lobbying the banking industry over this time with little success, and where implemented, little consumer adoption. However the consumer mobile market has matured and the various stakeholders (banks and MNOs) seem to have taken an interest and realised the potential value of the high penetration in mobile phones amongst their respective customer bases. This is seen through the recurrent press coverage around new launches and new global initiatives to leverage this channel in banking. 
This is also clear when looking at the number of known, deemed successful, implementations in the world. The bank typically has a multi-channel approach to delivering transactional services to its customer base. Its channels include the traditional bricks and mortar branch, ATMs, POS and the internet. These channels have gone a long way in servicing the retail banks in delivering financial transaction volumes and assisting in extending the banks reach to its customers. 
Mobile banking represents a more cost efficient channel for the banks, allowing them to charge less for transactions, and permitting the consumer to have immediate access to information related to their bank accounts. These factors should translate into more transactions more often.
The bank’s mobile banking options include:
  • Leveraging the MNO bearer channel and infrastructure to extend its payments franchise to mobile facilities as a channel
  • Leveraging the MNO brand, distribution network, and extended customer base to target new market segments
  • Allowing a MNO to use the bank’s financial license and/or infrastructure to become a bank.

The Mobile Network Operator (MNO) provides the mobile phone and the ability to use the mobile phone for providing banking services to the consumer. The global mobile phone market is becoming more competitive, with reducing prices, increasing customer churn, and reduction in profits. The highly competitive mobile environment is also reflected in the number of mergers and acquisitions seen in the global market and therefore the sheer size of some of the MNO multinationals. 
The MNO is increasingly focused on innovation in order to offer higher value to its customer base in an attempt to reduce customer churn, as well as a focus on new ways of generating revenue, even from sources not core to their current business.
Mobile software solution vendor has its roots in
  • Developing applications or platforms to service its own commerce needs
  • Developing applications as foresight to a future with the mobile phone as a banking channel   

These roots have developed into business models that enabled Maximus as application service provision (ASP) and packaged licensing of technology. In other words one can either pay for the use of the technology to a on a per transaction basis or license the system for use by internal operations.
Mobile software solution vendor as a mobile banking play an integral part in the delivery of mobile banking to the customer. The business model the mobile banking system vendor & technology provider we have the ability to do mobile banking, for a Bank, through a MNO, to a consumer.
In crux of the matter, mobile Banking solution facilitates the integration of the bank system with that of the MNO bearer channel, and provides the mobile banking platform or the mobile banking application, that enables the consumer to bank using their mobile phone.
Mobile banking is seen to be an extension of the existing payment infrastructure of a bank to mobile phones as a channel for the leveraging of the mobile network and its reach, to deliver banking services to consumers. The mobile banking infrastructure thus sits in a similar technical environment to the banks ATMs, POS, branch and internet banking service offerings. 
A bank’s core banking system, the system that houses the consumer’s account and related transaction management and history, would require a means to translate banking instructions, received from consumers, through one of the bank channels such as ATMs or the internet, into a format that the core banking system can process. This translation is normally performed by an EFT channel switch. The EFT channel switch would switch transactions from the channel to the appropriate area within the core banking system.   



A generic architecture depiction for Mobile banking solution
The mobile banking channel can be delivered to the consumer through two bearer or application environments. 
Client-side applications are applications that reside on the consumers SIM card or on their actual mobile phone device. Client-side technologies include, .Net, J2ME, etc. Server-side applications are developed on a server away from the consumer mobile phone or SIM card. Server-side technologies include USSD2, IVR, SSMS and WAP.
The bank would only need to select one of these bearer channels, or bearer channel strategies, for implementation. However, in some markets it would be wise to implement more than one bearer channel in order to manage consumer take up and the risk associated with non-take up of a specific technology. The selected bearer channel does not have an effect on where the mobile banking platform should sit.
The extension of the payment franchise to mobile can be as simple as a bank channel enablement or as complex as a complete bank system implementation depending on what infrastructure already exists, and that which can be re-used as part of the implementation
Let’s have close look at multi-layered mobile architecture 


Selecting the right technology for your market will, firstly, require some work to understand the market’s technology environment. Some key elements are:
  • Who is your target market and which mobile devices do they have?
  • What kind of user experience and value proposition would be sufficient/appropriate in servicing your target market?
  • What are the bearer channel costs related to this transaction and is it affordable to your target market? 
  • Does your target market have access to the bearer channel?
  • Are you able to get the application onto your consumer’s phone or handset without requiring the consumer to have an in-depth knowledge of the technology?
  • Is the bearer channel selected secure enough for the risk profile of the customer you are targeting? Is it secure enough to protect the bank from any reputation risk if security is breached? Are there sufficient means to manage the risk around the bearer channel chosen?  
  • Does the channel comply with any financial processing rules and regulations relating to: the method of processing; authentication of the customer; transfer of data; and levels of encryption, yet still deliver on the business requirement?  
A bank with a single market segment that a certain bearer technology suits in regard to access; cost; and device and SIM dependency, should implement this single bearer channel and focus its efforts on consumer education and increasing usage.   
In a more complex market segment, or an unknown market environment, a multi-bearer strategy may suit. In this way you mitigate the risk of one technology not being taken up by the consumer. There are good examples of focused as well as spread bearer technology strategies.
Mobile banking is moving up on the adoption curve, which is evident in the number of implementations known in the world and the level of interest and discussion around the technology and its implementation.  It is also evident in the number of technology providers emerging in the mobile banking space.
There are several choices when considering how to implement mobile banking. These choices include whether or not to develop the technology within the bank, use a shared infrastructure, or purchase the enabling technology from one of many vendors. 
The choices also include various mobile bearer channels, suited to differing market segments and differing capabilities of consumers handsets. Each of the bearer channels has unique requirements in provisioning and securing applications, transactions and consumer data.
The selected implementation option including bearer channel, vendor and value proposition, should be driven by consumer adoption of the technology, technical capability of the handsets in the target market, affordability of the bearer channel, and the consumers ease of accessing the service.