software-industry-predictions-2017

My 2017 Software Industry Predictions

It’s that time of the year when we look into our crystal balls and make predictions for the year ahead. 2016 was a phenomenal year for the technology world. Technologies that emerged over the last few years, such as cloud, firmly planted their feet within the enterprise. Businesses changed their maneuvers to leverage their digital infrastructures and found new paths to engage with their customers and make their operations more efficient. What became increasingly evident over the past year was that the IT landscape had to change to accommodate the business challenges and that the enterprise was ready to adapt to the change brought forward by technological innovation. Here’s a look at what the year ahead promises – in my view at least.

  • New technologies provide new business opportunities
    2016 witnessed the rise of technologies such as Augmented Reality, Virtual Reality, IoT, Machine Learning etc. Forrester Research believes that Augmented Reality will be one of the top five technologies that will completely change the world over the course of the next three to five years. Consumers have been receptive towards these new technologies. Look at the success of Pokemon Go if you are looking for examples. As consumers become more open to adopting and experimenting with new technologies, it opens up new possibilities for organizations to create new opportunities by amalgamating data, mobile devices, applications to understand customer journeys better. We can thus expect to see tech budgets focus more on business technology in this new year.
  • Mobile testing all the way
    The World Quality Report 2016-17 discovered that while a large number of organizations were taking advantage of mobile solutions, mobile testing skills were relatively in their nascent stages in the development lifecycle. The lack of mobile testing experts and fragmented testing methodologies seems to have contributed to this. In 2017, however, as the number of consumer and enterprise grade mobile applications grow in demand and adoption, we can expect to see mobile testing strategies becoming more mature. Involving test engineers in the development process from the very beginning will be an assured way of improving business outcomes by delivering high quality and optimally performing app.
  • The future is cloudy
    IDC estimates that by 2020 “67% of enterprise IT infrastructure and software will be for cloud-based offerings.” We can expect to see more organizations move away from the on-premise infrastructure and adopt the cloud. As the demand for agility increases, digital transformation increases and more number of companies become global, organizations will be looking towards adopting cloud to drive innovation.
  • Test automation will become more mainstream
    To remain competitive, organizations will have to speed up their application development process. As the need for speedy deployments increases, 2017 will witness test automation become more mainstream. The focus on automation will be a great deal more as automation and new levels of testing to match the speed of development. Testing and application performance management tools will evolve more and provide organizations a more holistic view of their application development process and allow them to test new features.
  • The rise of Performance Engineering
    2017 is also expected to witness a greater impetus placed on performance to deliver best user experiences. To enable this, organizations will no longer just depend on performance tests but will increasingly focus on performance engineering to deliver consistent and uniform application performance across diverse platforms, devices, and operating systems.
  • Shift in the enterprise application landscape
    We can expect to see greater consumerization of enterprise applications. Instead of clunky enterprise apps, 2017 will usher in the era of consumer-quality enterprise applications that have intuitive user interfaces and an easily navigable information architecture even in the most complex systems. As multi-device collaboration becomes more mainstream, accessing files and information will become seamless across devices.
  • Agile Outbreak
    One of the biggest trends of 2017, I believe will be that the application of agile concepts will step out of the software/product development mode and will be applied in a much wider organizational context. Agile principle derivatives will become increasingly common in areas such as design/ merchandising strategy, design thinking, growth hacking etc. and forge interdisciplinary collaborations. Methodologies such as DevOps and Continuous delivery will also adopt agile to improve outcomes and build products, as well as organizations, that can be said to be well tested and bug-free. This means integrating testing into the build model. At an organizational level, agile concepts will be implemented to improve quality by ensuring scalability, availability, easy maintenance and simplification of complex systems. Agile concepts like transparency, inspection, continuous learning, process focus, flexibility, shorter feedback loops that can benefit each and every aspect of an organization will see greater adoption.

It is certainly a very exciting time to be in this industry as we gear up to face another year that’s full of technological potential and gear up to usher in the ‘age of the customer’.

test automation trends

Did We Get It Right? – A Review Of Our 2016 Predictions

“Science is not, despite how it is often portrayed, about absolute truths. It is about developing an understanding of the world, making predictions, and then testing these predictions.” Brian Schmidt

Schmidt is an Australian educator of repute – in the spirit of heeding the advice of our teachers let’s take a look back at what we predicted for the world of testing in 2016, and test just how on (or off target) we were.

  • Internet of Things:
    In many ways, this was an easy prediction to make and it’s fair to say that we hit the mark, clearly, the market has dramatically expanded. Zinnov estimated a 2016 market of USD 54 Billion for IoT Technology products and Gartner estimated that 6.4B connected things were in use worldwide in 2016, a growth of 30% over 2015. We predicted that such growth in IoT products would call for a greater emphasis on usability testing and performance testing and a sustained emphasis on automation in testing. In usability, the focus last year was on testing facets like installation, interoperability, and the launch and usage experience. Performance factors in focus were load-bearing capability, speed, and scaling ability. Among the key features in the IoT world are “Over The Air” updates (OTA) – where the OS and firmware get updated frequently. Many releases call for increased regression testing – a natural fit for greater automation.
  • Mobile Testing:
    Digital Transformation of enterprises, driven by the growing power of mobility was one of the defining trends of the year gone by. We estimated that there would be a slew of new mobile apps focused on mCommerce and mobile payments. This seems to have panned out a shade slower than expected in the early part of the year but with some tailwinds later in the year. Business Insider estimated US in-store mobile payment volume to reach $75 billion in 2016, indicating some resistance from consumers. Late in the year, though, a high-growth market like India witnessed a strong push towards digital payments. Our estimate had been that with the growth of such mobile-enabled businesses would come a greater emphasis on security and penetration testing of mobile apps – it’s fair to say this has panned out as expected. We had also predicted the rise of testing for voice commands with the rise of Siri. In many ways, this trend has moved faster than our estimates with the sudden advent of digital assistants like Amazon Alexa.
  • Agile Development / Continuous Delivery:
    These are trends that we really took to heart over the year. If you have been following our blogs you would have seen numerous references to the changing role of testing and test automation in the Agile way of life, and most recently, on the DevOps approach and how testing has been impacted. Perhaps the most visible difference in software development due to Agile and DevOps has been the ever-shorter iterations and the increasing number of releases. The world of software testing has been impacted in multiple ways – testing is getting involved at much earlier stages in the product lifecycle and is much more closely integrated into the product development and deployment process and automation is playing a greater, and more critical role – just like we expected.
  • Security Testing:
    Even in the earlier sections on IoT and Mobile Testing, security testing has found mention. The appearance of threats like the Mirai botnet in 2016 only reinforced just how important security testing had become over the year. This applies across mobile apps, web apps, and desktops apps and the need is for comprehensive security testing. It became fair to assume that any vulnerability in your code or in the code of any of the underlying technologies or products would be open to exploitation and this only drove up the emphasis on security testing. The “World Quality Report 2016”, jointly published by Cap Gemini, Sogeti and HP, reported that 65% of the QA executives surveyed found security to be their top concern. This was more or less in line with what we had predicted at the start of the year.
  • Focus on automation in testing over test automation:
    This was more a fervent appeal than a prediction, to make automation more strategic or more central to the process of creating high-quality products. The objective was to ensure that the full benefits from the automation initiative shone through. To this extent we are happy that, at least in the interactions that we have been having, the focus has shifted from achieving “fewer testers” to doing “better testing”, and from unattainable goals like “100% test automation” to strategic impact”. We still believe that the role of automation is to support the testers, not to replace them and more and more are coming around to that way of thinking – kind of like we predicted!

Niels Bohr said, “Prediction is very difficult, especially about the future”. We are in no position to disagree with a Nobel Laureate – so despite the reasonable accuracy of our 2016 predictions, we are in no rush to turn in our software development hats for a crystal ball!

The Growing Case of Angular JS for the Mobile Web

Angular JS, an open-source framework has gained a lot of traction in the world of web development today. This framework by Google has been seen as a viable choice even for responsive mobile web application development as it allows developers to create trendy applications easily. Considering that most applications today are data-driven, Angular JS fits comfortably into the developer’s toolbox as it enables interaction of backend web services with external data sources. This framework allows developers to extend the HTML syntax to iterate the application components in a succinct manner while allowing the use of HTML as the main template language. This blog takes a look at some considerations that make Angular JS great for developing mobile web applications.

  • Responsiveness:
    According to the Cisco Visual Networking Index, Global mobile devices grew to 7.9 billion in 2015, up from 7.3 billion in 2014. According to this report, “the typical smartphone generated 41 times more mobile data traffic (929 MB per month) than the typical basic-feature cell phone (which generated only 23 MB per month of mobile data traffic).” Clearly, developers now need to create web applications that will present themselves correctly on mobile devices. Since Angular JS is an open source JavaScript MVC framework it allows developers to create rich and responsive applications for both desktop and mobile environments using the same codebase. Additionally, these applications can be run on any HTML 5 compliant browser and mobile browsers.
  • Scalability and Maintainability:
    Modern day web applications need a scalable architecture, so that upgrades, patches, and bug-fixes can be implemented easily. Angular JS is the perfect choice for building large and scalable applications. It features ng-class and ng-model directives, provides two-way data binding and allows developers save the data on the server in just a few lines. Applications built with Angular JS are also easily maintainable as it employs object-oriented design principles. Along with this, Angular JS allows developers to use both MVC or MVVM to separate presentation from business logic while boosting maintainability.
  • Mobile features:
    A mobile web application has to ensure that all the application features display correctly across browsers. Angular JS has some awesome mobile components. Using frameworks such as Ionic or Mobile UI gives developers the flexibility to augment mobile components and offer rich user interfaces, overlays, sidebars, switches, swipe features, scrollable areas and top and bottom navigation bars that do not bounce on scrolling when the application is viewed on a mobile, as well as the option to provide push notifications and analytics. These Angular JS frameworks utilize robust libraries (Mobile UI uses overthrow.js and fastclick.js) to provide a smooth mobile experience that is highly responsive and touch enabled. The two-way data binding capability ensures that when the framework experiences a browser change it updates the necessary patterns immediately thereby providing a uniform viewing experience.

    As Angular JS uses reusable logic, it allows the reuse of web application logic on multiple devices across multiple platforms and at the same time also allows developers the flexibility to customize the UI for each platform. Developers thus can keep the functionality of the application separate for the UI of the application which helps in providing a uniform application experience.

  • Performance:
    Performance is critical for mobile web applications as a slow application is almost worse than having no application. Angular JS takes great care of performance issues since it uses a declarative paradigm for creating patterns. Instead of describing all the steps needed to achieve an end result, Angular JS uses lightweight code where only the end result needs to be described. Angular JS also loads pages asynchronously which decrease the page load time, increases the speed of the application thereby boosting performance.
  • Dependency Injection:
    Additionally, Angular JS allows developers to create applications combining separate modules that can be co-dependent or autonomous. It has a built-in dependencies implementation mechanism that enables it to independently identify situations where additional objects are needed, and simultaneously provides these and binds them thus making application development much easier. As Angular JS uses the MVC structure and separates data from logic components the dependency injection enables bringing server-side services to client-side web application which helps in reducing the burden on the server and also contributes to improved application performance.
  • Security:
    To call a good application ‘great’, developers have to ensure that it has robust security features. Developers can optimize the security features of a responsive web application with Angular JS. It uses HTTPS interface, in the form of a simple web service or even a RESTful API, to communicate with servers. Angular JS also provides CSRF protection, supports strict expression evaluation and allows strict contextual escaping. Additionally, to increase or augment security features, especially for enterprise applications, Angular JS also developers implement supplemental libraries like Idapjs to implement single sign-on via interaction between libraries and AngularJS.

Along with the above-mentioned benefits, Angular JS also has huge and active community support. Getting started with Angular JS is also quite easy as it is not necessary to learn the entire framework to build an application. Angular JS is built with testing in mind and makes it easy to mock physical devices and situations such as GPS, blue tooth etc. This testing focus also makes test automation implementation much easier.

Conclusion

Given all these advantages Angular JS is being adopted incredibly fast by developers across the globe…this means more add-ons and high-quality libraries and additional support for Angular developers. Get set for more Angular JS in the mobile web!

What CEOs of eCommerce Companies are Thinking This Holiday Season?

“The reason it seems that price is all your customers care about is that you haven’t given them anything else to care about.” – Seth Godin

It’s that time of the year again. As Halloween slips by CEO’s of eCommerce and consumer internet-focused companies may be forgiven for having some scary visions of their own. There is so much at stake for these companies in the period between Thanksgiving and through till Christmas and the New Year, that some may wonder why this is called the Holiday Season. Don’t believe me- look at the numbers. The National Retail Foundation has reported that retailers could make as much as 30% of their entire annual sales in this short period. The number for online sales could rise this year to touch $117 billion, according to the NRF. Clearly, you cannot afford to have any problems slowing you (or your site) down at this time – your whole year could be a wash if something like that happens.

So what are these CEOs with scary visions thinking of at this time? Based on the conversations I have had with people like this over the years, I can narrow it down to 4 areas that seem to be the top priority.

  • Performance and Scalability:
    This is a serious issue considering the site is going to be hit more frequently and in much larger numbers at this time of the year than at any time in its lifetime before that. There is a very real impact if the site slows down, underperforms or crashes at this time. Kissmetrics has reported that each delay of 1 second in page response causes as much as a 7% reduction in conversions. The analysis is that for an ecommerce site selling $ 100,000 per day, this delay of 1 second could cost a whopping $ 2.5 million in lost sales annually – not a hit you want to take. They also report that customers have high expectations of speed, 47% of them want a web page to load in less than 2 seconds and as many as 40% of them will actually bail on the page if it takes more than 3 seconds to load.

    The CEO’s concern thus, is the site should allow for the greatly larger number of users, potentially in concentrated bursts and within a reasonably small time-window. Performance and load testing of the site and every component on it thus becomes critically important. Testing the site so it doesn’t pack up under the pressure of the sharp scaling that it will encounter at this time also becomes key.

  • Security:
    The enemy is at the gate – at least that’s what the consumers think. The highly visible coverage of credit card fraud, data loss, and identity theft has made consumers wary and this is impacting their buying behavior. A 2015 study by Bizrate Insights found that as many as 60% of consumers surveyed believed that online stores were just not doing enough to protect their card and personal information. This lack of confidence reflected in 34% of them expressing a hesitation to buy online.
    Those leading online retail companies have security front and center on their list of priorities. The cloud that hosts their site, the technologies their site is built on, the payment infrastructure, the individual components of the site, and even all the bells and whistles the site employs have all to be designed to be secure and rigorously tested to validate that they are, indeed so.
  • Usability:
    We live in an age of busy people with short attention spans. A famous book on design principles actually propagated the maxim “Don’t make me think.” This is the age of the impatient consumer and the “ease-of-use” factor of the website is an overriding concern. The Baymard Institute’s “Ecommerce Checkout Usability” survey from last year found that over 1 in 4 consumers abandoned their shopping cart without completing the order because they found the checkout process overly long or complicated. It’s not just the loss of revenue due to lost sales that motivate such sites to improve usability – there’s money to be made too. Defaqto Research has reported that 55% of the consumers in their survey wanted a better experience so much that they would be willing to pay more to get it.Taken together this represents a powerful motivator for the CEOs of these eCommerce companies to invest time, money and design effort to make their sites more intuitive, easy to navigate, and friendly. Testing of the UI, obviously plays a big role in that process.
  • Mobile:
    This is almost a foregone conclusion that your consumers are on the mobile. Statista has reported that over 75% of US internet users access the internet from their respective mobile devices. These users are spending money while online too, already about 28% of total online spending is from tablets and smartphones – projected to touch $ 200 billion in 2018. Then, there’s the consequence of not being on the mobile bandwagon. MoPowered found that 30% of all consumers abandoned their transaction if the experience was not optimized for the mobile.The challenge for the CEOs of these ecommerce and consumer internet companies is how to stay in front of this mobile game? There are some many mobile devices out there, multiple operating systems (well, at least 2), device capabilities, form-factors, and other such factors to worry about. Testing whether your site performs well across all of these options has to form a significant time of the testing strategy.

Conclusion:
These CEO’s of consumer internet and eCommerce companies obviously believe Seth Godin, that’s why they worry about the entire consumer experience on their site and the value they have to deliver. Given the importance of the holiday shopping season, it’s issues like those listed here, that could well be occupying their hearts and minds, on that quest.

test driven development

TDD – Myths and Misconceptions

Test Driven Development (TDD) which is also referred to as test-driven design is a widely-accepted methodology in the field of software development. It typically relies on repetitive unit tests which are executed on the source code being developed. In a way, this is to start with the end in mind – designing the test cases that have to be “passed” for the code under development to be found “acceptable.” The idea of TDD is to expedite the development and testing process even though the tests may not be perfect in the first iteration. With each cycle of new code development, refactoring is done for the tests and the similar tests are executed. Finally, the iterative process is run till the desired functionality starts to work as expected. Despite being an integral part of the approach adopted by many software development teams there are certain myths or misconceptions that are associated with implementing TDD. Let’s take this chance to look at some of them, and hopefully, put them to rest.

Employing TDD is a time-consuming process

TDD actually comes into its own when it comes to measuring long-term benefits. The focus of every organization’s management team is to be able to deliver the end product within the agreed timelines. Adding TDD to the picture could increase the overall time-estimates and can thus be viewed as a time-consuming process. However, implementing TDD has long term advantages, as it helps to increase the overall productivity of the developers. TDD reduces the number of defects that are detected only once the application is deployed in production. Post production, much more time is spent in investigating, isolating and fixing the issue, which could have been avoided by using TDD. Having production issues also tarnishes the image and reputation of the organization and eventually leads to an unsatisfied customer.

R Jeffries and G Melnik, writing for IEE have reported that TDD helps in decreasing production bugs by 40-80%. Of course, it can add 10-30% to the initial development time and cost but considering the factors like defect fixes, and maintenance it is justified to implement TDD for the first phase of project development. In fact, the benefits of TDD have been tested on real projects by several companies and they found that the process is enormously beneficial.

Writing test cases before the code, is not feasible

With the introduction of the Agile approach, the process of software design has moved from the waterfall model to more iterative model. It is a challenge sometimes, to convince the developers to write test cases as the design is being built, but this helps developers to consider multiple scenarios which may lead to failure situations in real time. The idea of TDD is that it paves a way for the developers to think in a way which eventually leads to better design. TDD adds efficiency in code creation as there is an immediate feedback from the unit test. Also, developing code with unit tests allows parallel development and reduced debugging and testing time.

TDD is a software design method for better design

Technically, TDD is not really a software design methodology but it does lead to better software design! By developing your code using the TDD way, it automatically leads to a better-designed code as it is not possible to create meaningful test cases for poor or low-quality code. But the application design still needs to be catered to by having a clear idea of things like data structures, design patterns, overall system architecture, feasibility, and scalability considerations.

TDD always ensures complete code coverage

The goal of every testing organization implementing TDD is to have 100% code coverage. Code coverage is useful in the context when there are well-written tests. Writing incomplete or bad tests will not help in the above situation. Ideally, code coverage should be measured on a line or snippet if the covering tests are passing. Code coverage cannot guarantee 100% sufficiency. Usually, TTD code is likely to have a near-perfect code coverage but it may possible that a perfectly covered code will not necessarily be sufficiently tested.

James Grenning, who has written a lot about TDD said, “The best TDD can do, is assure that code does what the programmer thinks it should do. That is pretty good BTW.” TDD is a proven concept and is embraced by many developers and organizations. If this is the approach that works for you then go ahead and join the legion of followers – if the objections you encounter are from among those listed above, then you know just how true they really are.

Is Apple All Set to Own Enterprise Mobility With iOS 10?

At the recently concluded Apple’s WWDC, the iPhone7 was the object of everyone’s attention. During the conference, Apple also announced its first iOS double-digit release, the iOS 10. Even though not much time was spent discussing its fantastic capabilities, it seems clear that this major iOS update indicates that Apple is warming up to the enterprise. The business focus that iOS 10 demonstrates is hard to ignore with expanded EMM Enterprise Mobility Management) functionalities and greater device interoperability. Apple had made its enterprise intentions apparent last year by entering into a partnership with Cisco. With this partnership, enterprises can take advantage of the joint solutions that deliver an “experience that wouldn’t have been possible for either company to deliver alone”, according to Rowan Trollope, senior vice president, and general manager, Cisco. This year, with the iOS10 release, we can see how iOS devices will get IT capabilities and transform businesses through mobility. So what makes iOS 10 enterprise ready?

A mature and complete Enterprise Platform to develop fully vetted and integrated enterprise apps

With iOS 10, Apple has introduced a complete enterprise platform. This platform leverages their partner network to provide their clients with an ecosystem to enable business processes with enterprise mobility. Customers can now focus on meeting business objectives and spend less time worrying about backend management. The partnership with Cisco aims to ensure that mobile management is smarter, faster and easier for IT administrators, developers, and end users. Apple is also offering their enterprise customers a variety of integrated apps that meet their business requirements. This includes apps from leading vendors such as MobileIron, Cisco, IBM etc. who are a part of their Mobility Partner Program (MPP). With the help of the AppConfig Community, which is a collection of EMM (Enterprise Mobility Management) vendors and app developers, Apple enables developers to develop, configure, and secure mobile apps for the enterprise by employing the extensive app security and configuration frameworks available in the OS.

New developer features
The iOS 10 adds new features to the developer toolkit making it more enterprise efficient. The CallKit API with Cisco Spark allows VoIP developers to build apps that allow customers to use native iPhone apps to initiate VoIP calls. With this update, Apple demands that all apps submitted to the App Store by 2017 include ATS (App Transport Security) to prevent vulnerabilities and ensure secure and encrypted web connections. iOS 10 also introduces the Messages app store that allows developers to create apps with broader capabilities like powerful animations that can be used in iMessages.

Apps Open to Third-Party Developers
By opening up Siri to developers in iOS 10, Apple is looking to give users the benefit of an even better experience. Sirikit gives developers access to a variety of features as well as the full intelligence already built into Siri. Apple is opening up Siri as well as Maps to third-party developers so that they can bring out new features in these apps. Apple is also giving the Messages app to developers, thus making them compatible with more enterprise apps. Developers can download Sirikit from Apple, which provides an extension that communicates with Siri even if the app isn’t running.

Enhanced interoperability
With the iOS 9.3 update, Apple offered new ways to manage multiple devices. With the iOS 10, Apple enables these devices to work together harmoniously within the enterprise. Downloading new apps and data sharing across all Apple devices becomes much easier and this allows better continuity for users. Features such as Universal Clipboard allow users to move back and forth between Mac and iOS devices seamlessly without using solutions such as AirDrop. To prevent unintended data loss, Apple partners such as MobileIron are employing stricter copy/paste controls. The Auto Unlock feature allows users to unlock a Mac without typing a password, by using Apple Watch. Once the device is unlocked the Watch needs to stay in contact with the user’s skin to stay unlocked. If it loses skin contact then the device locks automatically and will then require the owners’ PIN. The user also has to be within three meters of the Mac to unlock it.

With iOS 10 Apple also takes care of the security of data in motion by supporting ‘VPN IKEv2 EAP-only’ mode. This makes VPN access to access corporate data, a critical component of enterprise mobility, secure.

Unified platform
With the iOS 10, Apple seems to be on the road to, what Gartner calls, “Unified Endpoint Management”. Now enterprise customers can make updates to any device running macOS Sierra using MDM. IT admins will also be allowed to implement policy restrictions to iCloud Keychain sync, iCloud photo library, Apple Music, Notes sharing, Find My Mac etc. by supporting new payloads to configure the IP firewall on Sierra. So we can expect EMM platforms to secure and manage most of the Apple devices, both desktop, and mobile leading the shift to desktop and mobile convergence.

Reduced workloads
With the iOS10, enterprises can expect to see workloads reduce to almost half since managing iPhones and other Apple devices can be done on the corporate network itself. This also helps in reducing network latency, employee downtime and increased helpdesk calls that stem from sluggish app performance due to network incompetencies.

Enchanced Security
Enterprises call for greater security and this is also an area of focus. Now wifi can be controlled (Enabled/disabled) through geo-fencing within MobiControl. Apple is also allowing supervised control over the apps installation and removal and control over system apps like – FaceTime, Siri, iTunes, iCloud, GameCenter, which will further enhance the enterprise user experience.

That apart, there have also been significant enhancements to security and performance improvements in areas like faster roaming, reduced web browsing failures and more reliable calls. It does appear that with the iOS 10, we are witnessing the evolution of the iOS into a mature enterprise-grade platform that offers more variety, ease of use and secure work-ready apps. With its new features and focus on integrating the new iOS into the partner ecosystem, it seems that Apple is looking to establish a beachhead within the enterprise. The world is watching with interest.

Node.js–A Great New Way to Build Web Apps

The past few years have seen Node.js explode on the application development scene like a superhero. Despite its humble beginnings with Yammer and Voxer, Node.js managed to establish its authority quite fast and is now seeing great mainstream adoption with giants like Walmart and PayPal putting their trust in it. Netflix too moved its website UI to Node.js from Java. Once the underdog, Node.js has established its credibility and superhero status within the enterprise and has an increasing number of developers adopting it to build fast and scalable web applications with this open source cross-platform runtime environment. Ever since its launch, Node.js has been seen as this cool and trendy server side platform that managed to attract the developer community. The great thing about Node.js is that it’s core functionality has been written in JavaScript making it a great choice for developing real-time applications. Apart from this, Node.js is packed with a host of other features that make it ideal for building web applications. So what makes Node.js so great?

  • Neutral Language
    Since Node.js supports JavaScript, the same language can be used in the front end as well as the backend thus breaking down front and back end development boundaries which make the development process more efficient. Considering that JavaScript is a language that is used by a majority of developers it saves them the trouble of translating code and helps in managing development time and cost. With the Node.js, framework developers do not need to translate the logic from their head on the server side framework and also do not have to translate the HTTP data from JSON (the data-interchange format) to the server side objects. Since Node.js is generally understood both by Java and .NET camps it makes it easier for the developers to deploy it on both Unix and Windows infrastructures.Node.js uses Google’s V8 engine on Chrome which is written in C++ and has an exceptional running speed as V8 has the capability to easily compile JavaScript into native machine code without any problem.
  • Scalability
    Node.js effectively solves the concurrency problems that plague developers unilaterally. The problem of concurrency in server-side programming languages often causes poor performance and impacts the throughput and scalability of an application. Developers get an event driven architecture with Node.js and non blocking I/O API which takes care of these issues. Node.js is also built to handle asynchronous I/O’s from the base up. This helps in managing many web development related problems.
    Node.js also splits a single process into multiple processes called workers by adopting the cluster module. This modules allows developers to create ‘child processes’ that can function under the ‘parent process’ and can communicate with the parent Node by sharing the server handles and by using IPC (Inter-process communication).Furthermore, applications in Node.js are easier to scale since the developers write simple code and Node.js simply takes over from there. Instead of using processes and threads, Node.js uses a simple Event Loop and defined call backs where the server automatically enters the loop when the callback definition ends for scaling efficiently. Simply put, Node.js helps applications execute common tasks like reading or writing to the filesystem, reading or writing to the network connections or to the database with ease and speed and makes applications capable of managing a large number of simultaneous connections with high throughput.
  • Built-in support
    Node.js has an inbuilt support for package management using the NPM, the Node Package Manager, a tool that comes as a default with Node.js installations. The NPM module is publicly available, has reusable components and is easily available through an online repository of over 300,000 packages with dependency and version management. This ecosystem encourages sharing and is open to all and gives developers more prospects to create effective solutions by giving them the opportunity to update, share and reuse code with ease.
  • Great for real-time web applications
    Developing real-time web applications such as chats and gaming apps in Node.js is extremely easy. Developers do not need to concern themselves with things such as low-level sockets and other such protocols. It allows the developers to write JavaScript on both the server and client side and facilitates automatic data synchronization by automatically sending data between the client and the server and ensures that data changes on the server are immediately reflected at the required points.Applications in Node.js are composed of small modules that are piped together which ensures that, unlike monolithic applications, these applications do not creak under unseen weight and stress. This also makes adding new functionalities to the application much easier as the changes do not need to be made deep inside the codebase.

    Along with all this, Node.js can also be used as a proxy server if the enterprise does not have the infrastructure for proxy. It also allows for actual data streaming and does not take HTTP requests and responses as isolated events and reduces processing time. Node.js applications are also capable of dealing with high loads. In 2013 Walmart put their entire traffic on Black Friday through Node.js and ensured that their servers did not exceed 1% of server utilization despite having 200, 000, 000 users online.

    Node.js has all the features that make it most appealing to the developer community and also renders it enterprise ready – it’s easy to scale, is secure and easy to learn. It also takes care of low latency issues that plague most tech companies because of the asynchronous input-output operations feature. Adding it all together, it is clear that with Node.js organizations can achieve more as it half the number of developers can be used to build products. It also reduces the number of required servers to service a client and increases app performance by reducing load times by almost 50%. Given the increasing industry confidence on Node.js, it is quite clear that its future is indeed bright.

Ruby On Rails vs. PHP

PHP and ROR are two very widely used and in-demand programming languages. Both of these languages are dynamic, are very flexible and fun, concept driven and easy to learn. This means that you spend less time learning the details and focus more on learning the programming concepts which eventually help the developer build applications faster. Both, ROR and PHP are open-source programming languages and have been around for quite some time to prove their stability. While PHP had not been too frequent with their upgrades, over the past two years they have had some major releases that have spiraled their popularity even more. Presently, PHP holds 20.1% of the market share while ROR stands at a close 18.91%. However, in 2016 ROR adoption is picking up greater speed when it jumped seven points from last year and secured its highest ranking every in the TIOBE index.

Here, we try to take a close look at both to determine which is to be used and when.

PHP
PHP is a generic Object Oriented Programming language that is simple to learn and easy to use. It has a very large community of developers and users and provides extensive database support. There are a great number of extensions and source codes available in PHP and can be deployed on almost all web servers and works on almost all operating systems and platforms. PHP also allows for the execution of code in a restricted environment, offers native session management and extension API’s. Deploying a CMS in a PHP application is phenomenally simple because of the sheer number of frameworks, libraries, and resources at its disposal.

Deploying a PHP application is also a very simple process. You can simply FTP the files to a web server or deploy it equally easily using Git without worrying too much about the web stack. The entire PHP framework directly can be easily copied onto the server and run when using frameworks like Code Igniter.

PHP also has a huge web focus and. While it is a server-side scripting language and can also be used as a general purpose programming language it essentially has a huge web focus and seems to be born for it. It has a high degree of extensibility which renders it easy for customization in the web app development process. PHP has also addressed previous issues like object-handling and improved the basic object-oriented programming functionality in their upgrades. The latest PHP 7 release boasts of explosive performance improvements, drastically reduced memory consumption and easier error handling amongst other features.

Since programmers could manipulate the code to suit their requirement, the evolution of PHP led to a lot of bad code. As the coding standards improved the code became more verbose making it suitable for enterprise usage. PHP is still the go-to language for building web applications and web development because of its ability to interact with different database languages but still remains unsuitable for desktop applications. PHP is also a great resource to create dynamic web pages and also to create internal scripting languages for projects. Some of the big names using PHP presently are Facebook, NASA, Zend, Google etc. Wikipedia says that PHP is installed on over 240 million websites and approximately 2.1 million web servers.

ROR
Ruby, the programming language that runs with ROR or just Rails, is heavily influenced by Perl, Eiffel, and Smalltalk. It is a full-stack web application framework which is object oriented, has a dynamic type system and automatic memory management. ROR is a mature framework that enables high-quality products that are can be maintained easily. It works on multiple platforms, offers a Very High-Level Language (VHLL), has advanced string and text manipulation techniques and can easily be embedded into Hypertext Markup Language (HTML). The ROR framework is extremely automated that allows the programmer to focus on solving the business problem that needs addressing instead of spending time working around the framework. The Generators/Scaffolding and plug-in assets accelerate the development process and make maintenance a lot easier as compared to PHP. The ActiveRecord ORM in ROR is extremely straightforward to use. Additionally, it has integrated testing tools and is Object-Oriented right from ground up with a concise and powerful coding structure. Rails also supports caching out of the box which makes it easy to scale, unlike popular belief.

However, unlike PHP, ROR has a comparatively steeper learning curve and is not quite easy to run it in Production mode. ROR is also more difficult when it comes to errors as in Ruby instead of throwing up an error message the entire app just blows up.

Having said this, while ROR might not be easy to learn, it has better security features, a flexible syntax debugger and comes off as a more powerful language than PHP. It won’t be too off the mark to say that, while learning Ruby can be difficult this is a language meant for the ‘thinking developer’ and offers a superior toolset for application development.

ROR is being used by AirbnbGitHub, Groupon, Shopify, Google Sketchup, BaseCamp, SoundCloud, Hulu etc. Rails also makes an excellent choice for web apps, highly scalable websites, enterprise applications, and for projects that need rapid web development. However for single page applications, dynamic content and games, high traffic and high usage platforms like chat rooms, ROR might not be the best choice.

Conclusion
So which one is better – PHP or ROR? To begin with, it wouldn’t be fair to compare the two languages since Rails is a framework for Ruby while PHP is a language and also has many frameworks. However, both these ecosystems are efficient and powerful in their own right. Sometimes the selecting one over the other becomes a matter of personal preference , availability of skills and the specific business case.

Using AngularJs For Enterprise Apps

It is the hottest buzzword in the web application development space. It is called as the “superheroic JavaScript framework”. It is very popular amongst the developers– it has the highest number of contributions on GitHub community. It is built and maintained by Google Engineers. No wonder, AngularJS is creating a buzz in the industry today. In our earlier blog post, we cited 8 reasons behind the enormous popularity of AngularJS. Rapid development, easier code maintenance, development flexibility, mobility, and collaboration support are some of the many reasons why organizations have started seriously considering AngularJS for their web application needs.

One of the questions which keep doing the rounds is whether AngularJS is suitable for large-scale enterprise applications which involve multiple pages, require faster loading, have a huge amount of data involved, require faster performance, and need to be secured. Well, looking at the industry, quite a few popular enterprise applications have already leveraged this framework and are seeing some good results. For example – Google’s DoubleClick platform which serves millions of ads per day uses AngularJS framework as a front-end. IBM’s MobileFirst Platform Foundation (earlier known as IBM Worklight) also uses AngularJS front-end interface to ensure that the look-and-feel between the web clients and the mobile is consistent.

Of course, like any other technology framework, you need to use it smartly and appropriately to get the most from it. Here are a few things to keep in mind while developing enterprise applications using AngularJS –

  1. Code Base Structure and Conventions:
  2. AngularJS does not follow very strict conventions. In the absence of strict conventions, each developer has the flexibility to adapt and use the framework as per his/ her own style. AngularJS is an MVC framework which is loosely based on the traditional MVC Framework. Since there is not much documentation on the conventions, while building a large-scale enterprise application, it is important that the development team defines and agrees on a set style guide on conventions to follow. The style guide should provide the developers the guidance on all the aspects of development such as splitting of controllers, placement of directives, services reuse, management of libraries, and so on. One of the recommendations to design a maintainable code structure is to follow modular approach. Modules are identified on the basis of functionality and it helps the developers in development as well as during the maintenance phase of a project.

  3. Understating the $scope:
  4. $scope is one of the most essential and important aspects of AngularJS. Building a large-scale application with AngularJS requires a detailed understanding of all the intricacies of the $scope life-cycle. AngularJS’s two-way data-binding allows every $scope to have $watch expressions. For enterprise applications, where performance is of paramount importance, it is imperative to keep a close eye on the $watch expressions and their linkages with the $scope. A few tips while working with $scope –

    • $scope should always contain necessary information that is required by the view.
    • Avoid unnecessary filling up of $scope because it may lead to degradation of performance.
    • Remember that $scope follows prototypal inheritance which may lead to confliction of information so do take special care while working with $scope.
  5. Third Party Integrations and Ecosystem:
  6. Enterprise applications need to use several third party libraries for a variety of functionalities. If not handled correctly, AngularJS can create a lot of problems during the integration. With its own way of using $digest loop, AngularJS, by default, tends to be ignorant about the changes which are done to the DOM by the third party libraries. In such situations, the developers need to take care of manually kicking off a $digest loop. On the other hand, AngularJS offers a lot of plugins but those plugins or libraries are not easily accessible at a central location and, therefore, developers tend to reinvent the wheel and, either build the plugin on their own or look for some third party library. Creation and documentation of a widget library collection enlisting all the required widgets and libraries helps in easier identification of the right plugins and libraries and makes the development smooth.

  7. File Management:
  8. Since AngularJS does not have any defined conventions for file naming and storing, it is recommended that while developing an enterprise application the guidelines and conventions for file system organization and management are defined properly and finalized before the development begins. While there are multiple ways of organizing the files, organizing them according to the features is being increasingly preferred by the developers.

Conclusion:
With both hype and adoption around AngularJS, the enterprises today have no option but to adapt the fast-moving changes within the modern frameworks like AngularJS and move towards making their Web applications powerful, scalable, usable, and yet, simple.

mobile development mistakes

Top 4 Mobile App Development Mistakes to Avoid

Take a look at some of these fun statistics

  • There are 6.8 billion people on the planet. 5.1 billion of them own a cell phone Source: Mobile Marketing Association Asia)
  • It takes 90 minutes for the average person to respond to an email. It takes 90 seconds for the average person to respond to a text message. (Source: CTIA.org)
  • 70% of all mobile searches result in action within 1 hour. (Source: Mobile Marketer)
  • 91% of all U.S. citizens have their mobile device within reach 24/7. (Source: Morgan Stanley

Today, mobile browsing accounts for anything from 1/3 to ½ of all of web traffic worldwide and mobile users spend over 80% of this time on mobile apps. Be it for social networking, emailing, texting, and gaming or for making purchases, having a great mobile app has become a business imperative. Hundreds of new apps hit the app stores every day. The Q is how can app developers ensure that their app is the best app to use? How can developers determine that theirs is not some buggy app that the user deletes almost as soon as it is downloaded? In this blog, we talk about four mobile app development mistakes to avoid to develop great mobile apps.

  1. Platform
    Not paying attention to the platform choice for mobile app development can easily be the biggest mistake developers make. The right platform choice for developing mobile apps is a critical contributor to mobile app success as it defines the approach to the development process. So should you go Native or Hybrid? A native app is developed specifically for a mobile operating system such as Java for Android, Swift for iOS etc. These apps are more mature and have a great user experience since they are developed within a mature ecosystem with a consistent in-app interaction. They are also easier to discover in the app store, have access to the device hardware and software and enable users to learn the app fast. Native apps are known for their great user experience.
    Hybrid apps, at heart, are websites packaged as native apps with the similar look and feel. Hybrid apps are built using technologies like HTML 5 and JavaScript. They are then wrapped in a native container that loads the information of the page on the app as the user navigates across the application. Unlike native apps, hybrid apps do not download information and content on installation. However, hybrid apps have one code base that makes them easier to port across multiple platforms and access easily through several hardware and software capabilities via plug-ins. These apps have cheaper origination costs and have a faster initial speed to market. Since hybrid apps are platform agnostic they can be released across multiple platforms without having to maintain two different code bases.
    Along with these are browser based apps. These applications run within the web browser with instructions written in JavaScript and HTML. These are embedded in the web page, these applications do not require any downloading or installation and can run easily on Mac, Linux or Windows PC.
    So how do you decide between these options? If you need to get your app into the market within a very short period of time or check the viability of the market then hybrid is the way to go. On the other hand, if you need an app that has a great user experience then you should be taking the native direction. The platform decision thus rests purely on the business requirement and the time that you need to move things to production.
  2. UI and UX
    Leaving app design as an afterthought can be a huge and costly mistake. High-quality design ensures higher engagement which translates to higher ROI. Strong design also makes sure that all future app updates can be done easily and have lower support costs.
    To build an app with a great UI and UX design developers first need to understand the behaviour of their target market to build the foundation of the apps functionality and then move to app design. The User Interface or UI defines how an app will look while the User Experience or UX design needs to ensure that the app is in fulfilling the emotional and transactional response it is supposed to generate. Developing functionality of the mobile app before developing the UI and UX can be counterproductive as this makes it difficult for mobile app developers to remain true to the overall UI/UX design and deliver great app experiences.
    To design a great mobile application, developers can first design UX Mock-ups first without worrying about the UI design. This enables them to ensure that app feels at home across platforms and form factors. Once this is done developers can move to UI design to build the visual appeal and usability of the app.
  3. Developing Bug Free Apps
    Since mobile app users are picky and impatient, they have zero tolerance for slow, buggy apps. While developers need to keep their eye on the ball and develop a great app, no app is truly great if it has not gone through rigorous testing to identify any shortfalls and bug fixes that the app might need. Along with this, it is equally essential to test the right things at the right time. For example, functionality testing should happen at the beginning during app development and should examine, amongst other things, all the media components, script and library compatibility, manipulations and calculations the app might require, check for submission forms and search features etc. Performance testing should not only focus on the load but also test the transaction processing speed of the app.Developers need to focus on User Acceptance Testing to ensure that the development happens in a timely manner. For this, User Acceptance Testing should be a part of the development process and should not be left until the last minute to build in feedback as it is received.
  4. It’s a mobile app NOT a mobile website
    Finally, a mobile application is not a mini website. Mobile apps are supposed to provide tailored, crisp and easy mobile experiences and hence need not have the same interface, look and feel as that of a website. This means that developers have to focus on sharper interface design, offer better personalization, send out the right notifications and also make the user experience more interactive and fun. Along with this, mobile apps should have the capability to work when offline. While apps might need internet connectivity to perform tasks, it is essential that they are able to offer basic functionality and content when in the offline mode. For example, a banking app might need internet connectivity for processing transactions. However, it can offer basic functionalities such as determining loan limit, instalment calculations etc. when offline.

With an increasing number of users turning away from websites and turning towards mobile applications, mobile apps act as gatekeepers of experience and engagement. App development thus has to be more than just building the app. Developers have to take a structured and strategic approach to app development to ensure that the app delivers on all the metrics required to further business goals by being responsive and reliable and fit in with user expectations.

Should Developers Test Their Own Code?

I don’t care if it works on your machine! We are not shipping your machine!” – Vidiu Platon

I can almost see the testing manager talking (negotiating?) with the developer while going over the bug report and making this, rather exasperated, statement. Those of us who have been in software development long enough are quite likely to have encountered such intense “developer v/s tester” situations somewhere along the way. Of late the roles, or should I say battle lines, have blurred somewhat – don’t believe me? Think about how often you now come across the term Software Design Engineer in Test (SDET) – much more frequently than was the case even a couple of years ago right? In the language of car companies, the SDET is a “crossover” – someone who spans the software development and testing worlds and has bits, pieces and features of both in his job description. The SDET is a visible symbol of a discussion we are having quite often now – should developers test? Also by extension, should developers test their own code?
Should Developers Test Their Own Code?
At one level, especially for smaller software development teams, start-ups or even larger companies where software is not the core function, the attraction of having a smaller self-contained team of developers who do their own testing and validation is obvious. Costs are contained, as is the management overhead and the demands on their, more limited, internal technical bandwidth are less onerous. At the other end of the spectrum are larger software development efforts where more development-friendly test functions like test automation demand the presence of software developers on the testing team. We have always made the case that in the case of test automation the test strategy has to be much more closely coupled with the development strategy and architecture – again a function where developers could play a key role.

That being said, I believe that testing is a specialized task in itself that needs a focused testing team to action effectively. There are some key reasons why I think developers would not be quite as well suited to the task of testing their own code.

  1. Mindset:
    Most people will agree with the statement that the job of a tester is to break the software. A quality tester will try every use case and condition possible to try and make the software fail. They look for complex situations, combinations of situations, repeated applications and even heavier than expected load conditions to make the software break. In many ways, this is a completely opposite mindset to that with which the developer approaches his task – essentially the developer is always trying to make it work and that may not be the best approach for testing.
  2. Starting right:
    It’s not unusual to encounter development efforts that have been built on an inaccurate understanding of the initial requirements. A developer testing the code would generally be less inclined to check if the foundation itself is incorrect. Essentially the “bug” is the place where the design started.
  3. Proprietary interest
    It’s a rare developer who doesn’t get attached to his (or her) code. It’s something they have sweated over and as a result, to some extent, they would start testing from the position that the code works. This is likely to lead to short cuts, assumptions about simple or “trivial” things and a possible tendency to skip things that they “have fixed during coding”. Obviously, these are the kind of things that turn around and bite back later in the cycle.
  4. Big picture view:
    Most developers will have a reasonable view of the code they are working on – that unit or that piece of the puzzle. Even if that works fine in itself no software works in isolation. A Tester will usually be able to turn a wider scope and test – look at how the code works when fully compiled? Or how it works in a simulated, or real, user environment.
  5. Tricks of the trade:
    This is, of course, apparent. Testers have much more experience with the act of testing, the tools and techniques, how to log and report bugs and even common faults and the reasons why they occur. A developer would have to reinvent that particular wheel to become as efficient at the role.

So what role can developers play in the testing process? Well for starters it is apparent that they would be extremely well suited to unit testing and, at least, validation testing of their code. That apart there seems to be a good case for pairing developers and testers – the model works well in the Agile context due to the short sprints and multiple iterations. This, though, is the subject of another post. In closing let me share what Brian W. Kernighan said, “Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” I’m not saying I agree – just that he’s the computer scientist, not me.

8 Reasons Why Your Web Apps Need to Use AngularJS

 

 

Developers love AngularJS. They just really really love it. Don’t believe us? Look at the GitHub activity. AngularJS probably has the highest number of contributions than any other competing JavaScript framework. Check out Google searches or even StackOverflow mentions – AngularJS is all over.

Job trends on Indeed.com, a developer jobs site, also show a strong bias towards AngularJS than any other framework.
angular job trends graph
So what are the reasons behind this popularity? Why is this the self-proclaimed “superheroic JavaScript framework” gaining so much attention and traction? Why is the popularity of AnugularJS exploding? I have also heard that hundreds of tickets for ng-conf, one of the first AngularJS conferences, were sold out in just a few minutes!

Let’s take a look at what makes AngularJS so popular –

1. The Google Power :-
The very fact that AngularJS is built and maintained by a dedicated and talented team of Google Engineers, assures that you are working with reliable and efficient code which can offer you the required scalability for your project. Along with the solid foundation, the Google team brings in the required knowledge and support. So along with the vast open community, you have the Google engineers available to answer your questions and help you use AngularJS optimally.

2. Faster Page Loading :-
AngularJS is massively popular amongst single page sites or web applications. One of the popular reasons behind this could be the faster page loading. By saving the templates (which is essentially the HTML content) in the cache, AngularJS cuts the server reload time and removes the need to hit the server each time to retrieve the template. This makes the page loading faster.

Developers can architect the front-end application in such a way that the coupling on the back-end is minimized, which further improves the page loading performance.

3. Rapid Development :-
AngularJS on front-end along with Node.js in the backend can help the developers in rapid development by automating the repetitive tasks. This frees up the developers time for the actual development and building of business logic. With the use of data binding and Dependency Injection of AngularJS, developers can eliminate much of the code that has to be written. The two-way data binding reduces the amount of code which has to be written to maintain cohesive agreement between the model and view.

Some of the tools which help in faster development are –

  • ng-annotate – This helps in maintaining Angular dependency injection while minifying the JS files.
  • JSLint – Helps in validating the JS Code.
  • Sass/Less compiler – Helps in CSS compilation.
  •  Bower – It is a very good Package Manager for AngularJS third party components (For example: Nuget and NPM, a NodeJS package manager)

4. Flexibility in Development :-
Most of the other frameworks require you to first split your app into MVC components and then bind those components using the code. This increases the amount of coding. In case of AnugularJS, all you need to do is just split your app into MVC components – the rest is taken care by AnugularJS itself. It manages the components on its own and acts as the pipeline to connect them. Since the connection is handled by AngularJS, developers cannot write incorrect code that breaks abstractions just to make the components fit easier.

5. Collaboration :-
For projects where there are multiple developers working on the project, there are often issues about managing dependencies. AngularJS makes it relatively easy to manage the dependencies. It allows you to break down various actions into their own services and sub-controllers. Developers can independently code and test without messing with each other’s code. This is a bliss in the case of larger projects. It automatically introduces a nice workflow and processes which allow frictionless collaboration.

6. Mobility:-
AngularJS is extremely useful in building hybrid mobile applications. Before AngularJS, developers needed to use JQuery mobile framework for building hybrid mobile applications. However, JQuery mobile framework makes the code complex and it is also not very efficient for multi-page applications. AngularJS makes the code less complex and helps in creating highly efficient mobile apps. Some of the advantages of using AngularJS in mobile development are –

  • Reduced DOM manipulation
  • In-built routes provider
  • Seamless gesture handling
  • In-built transition animations
  • Performance improvement through the use of saving of templates in cache
  • Access to local storage

7. Testability:-
AngularJS is known as unit testing ready. It has been written keeping testability in mind. AngularJS links the whole application together using Dependency Injection or DI. The DI manages the controllers and scopes of the application.

Since all the information to the controllers is passed through DI, the unit tests can be performed by injecting mock data into the controller and measuring the output and behavior.

AngularJS also offers a mock HTTP provider for injecting fake server responses into controllers for unit testing. This is anytime faster than the traditional way of web application testing where individual test pages had to be created to invoke one component and check the interactions with it.

8. Less Coding:-
AngularJS requires considerably less coding as compared to other frameworks. Because of less coding, it becomes easier for the developers to keep a systematic track of the functions.

Here are some of the cases where AngularJS requires less code –

  • Views are defined using HTML to make them more concise.
  • Developers do not need to write their own pipeline – it is offered readymade through Dependency Injection.
  • With no need of getter/setter functions, the Data model is simple.
  • Developers don’t need to provide data manually to the view – it is facilitated by the data-binding feature.
  • Directives are written separately from the application code – this allows parallel development without any worries of integration issues.
  • Without changing the controllers, data on the view level can be manipulated using filters.

AngularJS encourages object oriented design thinking on the client-side which makes the application more maintainable. And the icing on the cake is that one can be proficient in AnugularJS in a reasonably less time!

The Mobile Choices You Have To Make

By Rajiv Jain (CEO, ThinkSys)

“The future of mobile is the future of online. It is how people access online content now.” – David Murphy, Founder and Editor of Mobile Marketing Daily

Earlier this year a major shift in the balance of power took place – almost unnoticed. Statista reports that now 52.7 of all internet access is now from the mobile. They further say that by 2017 over 63% of all mobile users worldwide would be accessing the internet from their mobiles. It seems clear that for those businesses that are web based the battleground is shifting from the large screen to the small screen, from the desktop to the phone or the tablet. Many have foreseen this and put in place robust mobile strategies and the rest are probably thinking it’s time to do so. In either case, though, there are some difficult choices to be made along the way. Let me take this chance to try to bring some order to the big decisions you will have to take initially.

Q1. Mobile App or Mobile enabled site?

Do you need to build an app and get it added to the App store of your choice or is it enough to have a site that renders well on the mobile? In Google’s dispensation of the day, a mobile friendly site is anyway mandatory to avoid site ranking penalties. That apart if your site is more likely to be used for information dissemination than for active transactions or actions then a mobile friendly website is likely the way to go. Among the other considerations is how frequently is an individual user likely to have to access the site – if the frequency is generally likely to be high, say public transport route and schedule info of social networking, then an app that is downloaded and installed on the phone may work better.

Q2. If you choose a site then what next?

What’s the design approach to pick? There are 3 that are the most common now Responsive, Adaptive and Blended Web Design. Without getting too much into gory details here are the broad differences:

  1. Responsive is a client-side approach. That’s to say the technology “resides” on the device on which the site is consumed so the experience is very seamless as far as the size and resolution capabilities of the device go. The downside is that traditionally this is tougher, more effort & skill intensive and takes longer to pull off well.
  2. The Adaptive approach, on the other hand, focuses the technology on the server side and adapts to whatever device the “connection” comes from by serving them the version of the content most appropriate to them. While this is usually easier to get off the ground the ongoing coordination and maintenance are a far greater coordination and execution challenge.
  3. A convenient, recent, middle ground has been arrived at with the Blended approach. This has been called Responsive with Service Side components – so the site being served may be the same, but there may be elements like the headers that may be specific to the device. The approach is still settling in but seems promising.

Q3. If App then Native Or Mobile web?

Essentially the thinking was that at one time if you wanted to reach out to as large a cross section of users as possible across devices, operating systems and so on you had to follow the Mobile Web approach utilising the powers of languages like HTML5.

The native approach tied itself much more closely to the operating system (& hence the device family) – if you wanted to target customers who were likely to be iPhone and iPad fans and wanted to use the capabilities of those devices much more fully then you picked iOS as your operating system of choice. The app would be built in accordance with the App Store specs and that was your little (or big) universe. If you thought your customer base was in the wider Samsung, LG, Motorola universe then you picked Android as your platform and that then decided all further choices.

Hybrid platforms like PhoneGap have been around for a while and these seem to be gaining ground. This an argument where the contours are changing even as we speak – maybe in a few months we will talk only about a Hybrid approach driven by people like ReactJS.

The prediction is that by 2018 half of the world’s mobile users will have smartphones. If your business has to be ready for that day you have some choices to make now. You will likely have to start with the answers to these questions.

Business Considerations Behind Your Web Technology.

“Information technology and business are becoming inextricably interwoven. I don’t think anybody can talk meaningfully about one without talking about the other” – Bill Gates

Gates’ statement has never been truer than it is today. So much of business strategy today is dictated by what is possible to do with the technology of the day. Business owners are being forced to make technology choices every day and there is a genuine fear that the wrong choice could negatively impact their web application, portal or site deeply enough to cause active business disruption. This then suggests that the choice of the technology platform for your web application or website is no longer a purely technology decision. What, then, are the business considerations that should go into the technology decisions related to your web application?
Business Considerations Behind Your Web Technology.
This is in some ways the old “make or buy” decision. Does your business strategy require a site / app that can go live quickly with a reasonably standard set of features – in which case a ready template could be the answer? On the other hand, if you need a unique look and feel and features that are not commonplace then you may have no choice but to consider a completely custom development. What you lose in development time you gain in flexibility in this particular game of choice.

Need for Features:
Your business may demand that the app / site be capable of performing some very specific activities or at some very specific capability level. Is real-time updating required? Is the effort likely to be calculation intensive? Is performance important? Or is it important to achieve scale? How fast does your business need that scale to be achieved? Answers to these questions will help you pick from the technology platforms out there – if the platform addresses your business need squarely then that’s the right choice.

Time-to-market:
How fast do you need to get your offering in front of your customers? Is the timeline set in stone, as it were, or is there scope for some flex? Different technology platforms behave differently. If what you value are easy and fast development and a predictable effort then maybe a more established technology platform that has been well documented may be what you need. Driven by the business needs you may be tempted to consider a relatively newer technology that promises much but may carry with it the risk of unforeseen pitfalls if your timelines are more flexible.

The economic argument:
Cost is a primary factor in the choice of technology. It is important to take into account the total cost of ownership of the technology platform under consideration – not only the initial outlay but also appropriate allocations for the cost of maintenance and support and if need be a charge for the effort involved at your end over the development lifecycle. An Open Source platform may involve lower upfront investment but could cost more in the long run once you factor in ongoing maintenance and the cost of support from a loosely formed community. Proprietary technologies will likely cost more to start with but may end up being less expensive to maintain and with, perhaps, more dependable support.

Market Support to the technology:
The technology landscape is littered with stories of technologies that died a sudden death after an initial meteoric rise. Sometimes the hype cycle becomes so dominant that organizations make technology choices because they feel they have to rather than because they need to. As Stewart Brand said so eloquently, “Once a new technology rolls over you if you’re not part of the steamroller, you’re part of the road.” The problem with such choices is that you could be stuck with a technology platform that vanishes midway through your development effort. The support for the technology in the marketplace, their reviews, and their heartfelt acceptance matters a lot when you look around to make your choice because it makes the longevity of the technology more likely and this has to be a key consideration in any technology choice you make.

Carrie Snow said, “Technology… is a queer thing. It brings you great gifts with one hand, and it stabs you in the back with the other.” You would do well to remember that in the end the technology is just a tool – it’s up to you to make it work for you.

9 Enterprise App Ideas For Your Business

Gartner predicts that by the end of the year 2017, market demand for mobile app development services will grow at least five times faster than internal IT organizations’ capacity to deliver them. With the increase in the demand and sale of mobile phones, the demand for enterprise apps which match the high performance and usability of consumer apps is only going to increase.

9 Enterprise App Ideas For Your Business

Gone are the days when the office workstation was the only device which the knowledge workers used to use. Today, on an average, a knowledge worker uses at least three different devices and with the proliferation of the Internet of Things (IoT), very soon it is going to increase to five or six devices. The number of devices managed in the enterprise increased 72% from 2014 to 2015 (Source).

Organizations are realizing the importance of offering the employees the option to select the device and apps of their choice to complete a particular task. This obviously is putting a high pressure on IT to develop a larger variety of mobile apps.
When a majority of the organizations are still evaluating the tools, vendors, technology, and vendors for the development of enterprise apps, here we provide some of the app ideas which businesses can use while developing their enterprise apps –
1. Product Training and Knowledge Apps: Sales representatives need to be always on top of the latest products and services. To achieve this objective, enterprises can build an app which can simulate a “pre-call” planning with a customer. Through right answers, the reps can get badges or more up in the level. This can be a very engaging way of updating the sales reps about the latest offerings.
Every company has a ton of documents and presentations about the product and services information, best practices, whitepapers, case studies and so on. But not all the employees are always aware of those or make use of those. Having a ready access to the resource library which can be easily searched can be of tremendous value for everyone in the company.
2. Real-time Inventory App: For Sales reps who often visit the off-site clients, a real-time inventory information is of great benefit. It can save a considerable amount of administrative effort and can also help the sales reps in making a great impression in front of the customer by offering the real-time demand details.
3. Quoting Apps: Sales Reps who are on the move need an easy way to generate accurate quotes instantly. Apps which help them to select the products and price and configure the quote can greatly help in the faster closing of the deals. There are quite a few readymade apps for this purpose which can be used by the enterprises.
4. Support Apps: When any customer submits a support ticket or makes any request for assistance, an internal support app can alert the appropriate department or team to take quick action on the ticket to quickly resolve the issue and attain greater customer satisfaction.
5. Marketing Apps:Marketing teams usually run many campaigns, but the results are not always visible to the rest of the business stakeholders. An app which provides a complete overview of various campaigns in a visual way can help all the stakeholders in getting a better understanding of the marketing initiatives.
6. Authorization and Approval Apps: Long approval cycles can delay the sales cycles if the approvals need to be given by a particular person from a particular machine. Secured apps which can allow employees to provide approvals from anywhere, anytime can tremendously save a lot of time.
7. Broadcast Apps: Keeping all the employees updated about what is happening in the company can be a difficult task if it is done only through emails or newsletters. Having an app to display the announcements and news can be an effective way to keep everyone informed and also engaged.
8. Collaboration Apps: Collaboration apps help in keeping the employees connected, help them in collaborating across borders, and maintain a people-oriented culture in the company. Such apps help in providing a better visibility of activities across departments and also foster the spirit of innovation in the teams. A collaboration mobile app helps the on-the-field teams to be connected with the business on a regular basis.
9. HR Apps: Every employee regularly interacts with the Human Resources department for requests like leaves, health claims or policies. A mobile app which can allow the HR teams in providing this information quickly and easily and also allow the employees to access it from anywhere can save a lot of time for both and also improve the employee satisfaction.
While these ideas are a good place to get thinking, organizations need to remember that the apps which are designed and developed considering the needs of the business and the existing workflows tend to work well in terms of adoption as well as the use.

Categories
Follow us on Twitter