Featured Post

The great debacle of healthcare.gov

This is the first time in history when the president of the United States of America, or probably for any head of state around the world,...

Tuesday, October 17, 2017

A Brief Note on Design Thinking

A hypothetical conversation taking place in a conference room between a software engineer and a business user.

"I need to have the development team available and ready twenty-four by seven during the filing period. This is Fed mandated SLA and we would have to react within 4 to 24 hours. If any approval is needed to do immediate deployment to the production, secure the necessary management approval upfront.", said the business user.

"Do you really need the development and production support team to seat at their desk and waiting to jump in to reintegrate the financial models into the production environment? What problem you are trying to solve here? Are you looking for a way to have the changed models reintegrated into the production environment within a short period period of time to meet the stringent Fed mandates SLA?" The software engineer replied with an empathic voice. Further adding to it by proposing a potential solution to that problem, "How about we provide you a self-service capability to reintegrate the models into the production system? You can do that anytime you want it and any number of times you need it."

"That sounds interesting but I don't want anyone to change the production system anytime without a proper approval", the business user reacted in a receptive tone.

"I don't want that either", the Software Engineering Manager is now chipping into the conversation, "We can enforce four-eyes check but let's talk more about the detail before we jump into the final solution", and has steered the discussion towards finding the right solution.

Though this may be a hypothetical conversation but certainly you have seen the similar conversation where the business user approaches the software engineering or product development team with a "brilliant" IT solution of a business problem without even mentioning what business problem the user was trying to solve. However, the goal of the software engineering team needs to steer the conversation towards understanding the users' pain points, find the fundamental problem and then propose the right solution.

To me, this is the essence of Design Thinking.

Design Thinking is a not the new guy in the town even though its reincarnation sounds just like that. I don't want to spend whole lot about its historical aspect but let's put just enough history for the sake of giving a context.

Design Thinking as a concept came into existence in the late sixties when Herbert A. Simon published his book, "The science of the Artificials". This got into the mainstream through the establishment of Standford University's Design School.

Before delving into the detail of the Design Thinking, let's first clarify, "what's Design?"

Design, though it sounds like the surface or outward appearance of a thing, however, this concept of design is furthest from that vain outwardly look and feel. IBM Design Thinking defines Design as "The Intent behind the outcome". But the most intricate definition of Design came from the man who had changed the way we perceive the computer products, Steve Jobs, who once said in his interview that the reason he doesn't like the Microsoft's product because "it doesn't have the taste", and defined Design as "...the fundamental soul of a man-made creation that ends up expressing itself in successive outer layers". And Design Thinking is the art of creation of Design.

Now, let's take the words from two other most influential persons who have helped the Design Thinking to come to its current state: Don Norman, the author of "The Design of Everyday Things", has described the Design Thinking as "...Designers resist the temptation to jump immediately to a solution for the stated problem. Instead, they first spend time determining what basic, fundamental (root) issue needs to be addressed. They don't try to search for a solution until they have determined the real problem, and even then,, instead of solving that problem, they stop to consider a wide range of potential solutions. Only then will they finally converge upon their proposal. This process is called design thinking." and Tom Brown, the founder of IDEO, has defined Design Thinking as "...a human-centered approach to innovation that draws from the designer's toolkit to integrate the needs of people, the possibilities of techno technology, and requirements for business success".

In the second part of this post on Design Thinking, I will cover the method of Design Thinking and shed some light on the IBM Design Thinking and finally on how the Agile development methodology can coexist with Design Thinking.

Sunday, September 24, 2017

Micro blog: Designing computer as our brain is designed

When we learn a new skill, such as, playing violin, driving or swimming, a set of neurons is used to execute the instructions and when done repeatedly, they are kind of hardwired to perform that job. That's why when we drive or walk, we actually don't think consciously but our subconscious mind executes most of the tasks to get the job done. It's like task is hardwired in our brain neurons. How about we design our computer memory and processors' transistors to act similarly. That would make a computer very much efficient and faster in processing. It was not practical at the early age of computers due to the cost of memory and processing units. As the memory is getting cheaper and cheaper, and the microprocessors are cramming double amount of transistors in every eighteen months, the execution of a software can now easily be allocated dedicatedly to a certain set of memories and processing units and reuse that set of memories when that particular function is executed. Currently it does similar thing in the memory when a software program is loaded but not by actually forming a physical connectivity among the memory cells and processor's transistors. This would need to create kind of physical/pseudo physical connectivity among those memory chips and processors. In this way, the hardware would behave like software in physical form. There could be so much optimization to efficiently utilize the hardware.

Friday, February 24, 2017

Technology Trend Series: Machine Learning

In the simplistic term, Machine Learning (ML) is all about making machine that can learn from surrounding and apply that learning in action. The more formal definition is from Tom Mitchell: “A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.” Machine Learning is now has reached to the point where we actually don’t even realize its presence unless explicitly called out. Google, Amazon, IBM, Apple, Microsoft, Netflix, Uber, Tesla, etc. have adopted Machine Learning successfully. Google uses ML for spam filtering, image recognition, translation, self-driving car. Amazon uses ML for Recommendation system, Drone delivery, etc. Apple’s Siri, Microsoft’s Cortana and Amazon’s Alexa and Google’s Google Home use ML to provide Virtual Private Assistance (VPA). IBM’s Watson provides assistance to doctors to diagnose patients. Uber and Tesla created Machine Learning based autonomous vehicles. Machine Learning is used in the stock market for High Frequency Trading and in the postal service for handwriting recognition.

The Machine that Learn is essentially a computer algorithm to best model the input to its output. Carefully prepared large training dataset is fed into the algorithm to find out the optimal model. Machine Learning can be Supervised Learning, Unsupervised Learning, Reinforcement learning, Artificial Neural Network, Deep Learning, and so on. Let’s take an example of how a self-driving car uses machine learning: car is driven by a human driver and through various sensors: steering wheel, accelerator, brake, camera, GPS, radar, Laser, etc. it captures the data and the behavior of the human driver and used as training data set and find the optimal model to map the observed data from all the sensors to driver’s action.Machine Learning is progressing faster and superseding its own legacy. The drivers for continued massive growth and adoption of Machine Learning are the growing surge in data volume and complexities that conventional engineering approaches are increasingly unable to handle. For example, the amount of data created in the last 2 years exceeds the data created in the entire human history. So the traditional brute force computation is no longer a viable option to process this ocean of data. Meanwhile, as predicted in the “Moore’s Law”, the exponential growth of computing power is unleashing the power of Deep Learning. So, the businesses have to be fully prepared to utilize the most out of it to stay competitive in this disruptive and emerging technology landscape.

Machine Learning is ubiquitous in commercial usage and has reached to “Adolescent”, according to Gartner’s Maturity Level. Enterprises that have not yet started adopting the technology should start training and hiring talents in Machine Learning and Data Science and building infrastructure. The precursor of successful Machine Learning adaptation is to be able to manage “Big Data” for training the machines with the right training dataset. Enterprises need to invest more in dedicated Center of Excellence (CoE) for the “Emerging and disruptive Technology” like Machine Learning and embrace the transformation into their core business. For individual computer professionals, this is the time when the focus on learning the concept of Machine Learning and Artificial Intelligence, be familiarize with development tools and technologies (Matlab, R, Apache Mahout, Python ML libraries, etc.), specially, around data and algorithms, and finally dust off the the math and statistics skills long sitting unused. Those days aren't far away when the Java and .NET programmers would be considered as legacy programmers like the way the COBOL programmers were being considered.