"Technology Drivers for IT Services (past, present and future)"
There are technologies that opened up IT Services, technologies that fuel it today, and technologies that will drive new models of IT Services in the future. This article is my POV informed by the past 20 years of outsourced IT Services.
"A successful IT services company today must stay alert and choose wisely"
Change on a global scale
We are living in an age of accelerating change. At the heart of this change are economic forces driving the adoption of new and ever-changing technology. Increasingly, changes in technology give rise to new economic opportunities.
Technology is changing the way goods and services are made and delivered. Manufacturing “know how” easily flows to once remote parts of the globe, while automation continues to reduce the skill level of workers. Less skilled and cheaper laborers are making complex goods, faster, better and cheaper.
Over time these workers demand more money, more jobs, more education, and more opportunities for themselves and their children. Eventually these workers will be displaced by better automation and better “know how” enabling the use of even cheaper and less skilled workers elsewhere. One article states, “India ranked first in the list of top 10 locations for outsourcing business operations in 2011 but it has started facing competition from countries like Philippines and Indonesia.” Such is the way of globalization.
This cycle is repeating itself today all over the globe with IT Outsourcing. It is happening at different rates at different times and different places, and it is having a wide-reaching impact. Over the last 15 years, IT workers in India have been busily improving their skills, knowledge and creativity. Consequently they have been busily climbing the value chain, demanding higher wages, better career growth, access to better living conditions, and (no surprise) less corrupt politicians. These changes were made possible by their innate entrepreneurial spirit and fueled game changing technologies that make distributed project-related communication, coordination and management possible on a global scale.
Technology-enabled Outsourced IT Services
Face-to-face meetings at the office have been replaced by virtual meetings spanning great distances and time zones. These technologies have changed the way many of us work. Depending on who requests the meeting, I regularly use; Skype, GoToMeeting, WebEx, FreeConferenceCall.com, Google Hangouts, or join.me. For most of my colleagues, Skype is always on, enabling quick interaction requests and cross talk during meetings. I often get real-time coaching from other team members during presentations or negotiations.
Different time zones often require asynchronous information sharing and collaboration between clients and among internal teams. I regularly use, Basecamp (for its simplicity), SharePoint (for its customizability and scalability), and Microsoft Outlook via Google Apps Synch (for meeting coordination and emails across all platforms). I regularly use SharePoint for project tracking and management, Microsoft Project for scheduling waterfall projects and various Agile tools to track project backlog and burn down. User Stories are online, team managed and available as a single printable Project Notebook.
Technology is making individual team members more productive. For managing and tracking my personal commitments and the requests I’ve made of others, I use Toodledo. The information is maintained in the cloud and is available across all my devices. Toodledo similarly provides notes and various kinds of check lists. Similar excellent tools exist. In my experience, adopting this kind of Technology improves individual and team reliability and productivity.
Technology and Software Development
Simply put, Software Development is the act of translating requirements into a machine executable form. This requires people, process and technology. The technology used, dictates both the kinds of processes and skills required to get the job done. Each step in the process is framed by the technology (or lack of technology) used. The kinds and level of skills required must be appropriate to the technology used.
Historically, the biggest barrier to IT outsourcing has been the cost and availability of both development tools and infrastructure. The near ubiquitous availability of the internet along with a growing list of open source development tools (like Eclipse) has removed that barrier for most. Once an IT organization has advanced enough, Microsoft, IBM and similar “partner plans” provides easy access to proprietary software, creating a low barrier to entry.
One goal of software development technology evolution is to reduce the number of ad hoc low-level decisions made by developers. This is intended to translate to faster software development, better quality, and cheaper to development/ maintenance cost.
To this end, software frameworks provide out-of-the-box functionality that can be selectively changed by adding user-written code to quickly create application-specific software. Each software framework has aspects you can change and some that you must accept as is. One important thing to know is once the software has been developed the implementation investment is captive to the framework. If you host it externally, you may also find issues with availability of the framework. That having been said, trained developers can produce impressive results quickly.
Model-Driven Engineering (MDE) systems promote the reuse of standardized models and design patterns. The intended goal is to increase productivity by (1) maximizing compatibility between systems, (2) simplifying the process of design, (3) encouraging communication between developers working on the system, and (4) promoting “best practices” in software development. MDE development requires up-front training and a good understanding of software engineering principles. With this foundation, MDE results tend to be quickly enhanced, easily maintained, and self-documenting. In my view, MDE will play an increasing role in the future of new IT development, migration, and integration.
Technology plays one of two roles in software development, (1) improving the current process or (2) changing the current process. Technology intended to improve the current process are the familiar ones; IDEs (compilers, editors, testers, and debuggers), bug tracking tools, most project management tools, testing tools. Less familiar ones include; Operating System Containers and Application Containers (for handling multi- platform development and delivery).
Technology that provides specific advantages by changing the current process and requiring new engineering skills include; MDE, Frameworks, NoSQL, Hadoop and associated software, Apache Software Foundation “Flink” (similar to Hadoop), and Semantic Web. Of course there is more.
Today older development technologies and processes are being challenged by emerging markets (Cloud, Mobile Workforce, Semantics, Natural Language, Big Data, Internet of Things, Security, Personal Assistants…) and by global competition. A successful IT services company today must stay alert and choose wisely.