Monday, December 31, 2012

Connecting to Roots… Hypermedia REST calls.




This post deals with me connecting to the roots as well. My past is so much tangled with web, its kith and kin. Yea I am going to talk about trends of web in this current post. Web seems to grow at an unimaginable pace. Six months past, things that were considered to be breakthroughs are no longer cutting edge. Emergence of disparate platforms (in the form of mobile devices, tablets etc,) is pushing back to adopt technologies that are agnostic, prevalent and is acceptable to the norms of all the systems aforementioned. As a result industries are embracing HTTP as the default protocol and tweaking in granular ways to come up with myriad of technologies that are fundamentally, the one and the same. The era of web/SOAP services got supplanted by era of REST and now increasingly we are heading towards hypermedia REST calls.  Isn't that what HTTP supposed to do?  We will get the answer below- Extract from wiki: “Hypermedia is used as a logical extension of the term hypertext in which graphics, audio, video, plain text and hyperlinks intertwine to create a generally non-linear medium of information. 
What are hyper media systems?” – Systems that transacts hyperlink over application protocol, which represents the resource in the server (a resource can be html file or xml file or unit of data storage etc.,), to the client and in consequence maintains a collation of links.

What are the advantages? Is this a seminal work? – The argument here is, the client need not keep track of the links, and rather, the server updates the client with adhoc hyperlinks, as when the request is made. I remember few years back, hard coding workflow of certain operations in the client system. This can be effectively avoided using the hypermedia rest services.

Example format:
<order xmlns=″http://schemas.designnutcracker.com″>
<location>sanfrancisco</location>
<item>
<name>kappi</name>
<quantity>1</quantity>
<milk>whole</milk>
<size>small</size>
</item>
<cost>2.0</cost>
<status>payment-expected</status>
<payment>https://designnutcracker.com/payment/1234</payment>
</order>

Monday, December 24, 2012

Art of Storytelling



This is a lightweight blog post for holiday read.

Christmas break is the time to indulge in great fables and stories. Now through my extra sensory perception, I can intuitively guess the readers feelings…. Why the darn thing Chellam is talking about story telling in a professional blog of this nature. Hold your horses before you jump to conclusions.  Any concept or method has a story, a logical sequence of events that when discoursed in a certain order/sequence of events is powerfully conveyed.  Yup talk about fission of atom, migration of tadpoles, evolution of human beings, the big bang theory, complex scientific backed concepts etc. All have interesting stories behind which when delivered appropriately makes whole lot of sense. When these stories are propped or regulated by premises and assumptions, results in compelling theories. This theoretical (like theoretical physics) can be validated through experiments and converted into proven axioms. Now when these conceived stories (multiple solutions for the parameterized problem) when weighed against the constraints set by the problem, turns into stunning products, scientific theories, mathematical axioms, ground breaking business models etc.  So next time you tell or hear a story, don’t belittle it. It might be a skill thats the source for bigger business means and ends.

Saturday, December 8, 2012

Organizational culture that inducts design thinking


Organizational culture is the key driver behind design thinking. I for one always believed in bottom up cultural transformation, but I beg to differ in the process of inducting a change in culture in regard to design thinking in corporate bodies. The question here is- “what are the factors that will induct a thriving organizational culture of design thinking?”

A culture which is free of prejudice and open minded for change is the seed for adopting design thinking corporate wide. I remember working for this multinational company who were complacent, hesitant to push the envelope and lacking the will and appetite to grow and evolve. As a consequence they declined any new ground breaking ideas from workers and were rigid in the operational methods and shrugged ideas. This seems to be the status quo in all the corporations with a toxic acidic culture that erodes and corrodes the spirit in a slow cook fashion. That’s why I believe ideas and change are uninvited in multitude of corporations and hence, they fail to reinvent. We need managers who, are visionaries, have the right balance of EQ/IQ and kill the mores that degrade them. We need forward thinking leaders who can draw flexible contours that can guide, adapt and advocate design thinking process in the minds and actions of its’ employees.

Four things that suppresses design thinking:
  1. Espousing a culture of opaqueness and secrecy.
  2. Being complacent and draw narrow roles and operational boundaries.
  3. Fault finding as a way of life and shooting down ideas without giving proper feedback.
  4. Bashing the messenger.

Friday, August 24, 2012

Design Thinking – How to generate ideas?



In short, this post talks about - The guidelines and tips to generate ideas/solutions with the backdrop of emergent /evolutionary approach? 
  1. Adapt by choosing local rewards and decisions that encourages near term benefits over long term goals.
  2. Brain storming with generative attribute results in plethora of ideas – choosing the best by 1st point
  3. Mix and matching arbitrarily various concepts results in combinatory space of solutions, which when weighed and aligned against business viability and technical feasibility-results in products.
  4. Every new concept or variable thrown at fore, explosively generates solution space.
  5. Emergent design is bounded by the variables that describe the problem. Any upfront design cannot sustain and capture the changes that come henceforth; rather, emergent design elegantly handles the unknowns as the system evolves.
  6. An amalgamation of emotional bias with analytic combinatorial approach can result in terrific products.
  7. Obscure problems cannot be tackled head-on, but rather, need to be tackled as the problem evolve.

Saturday, June 2, 2012

EMPATHY in software design




Empathy is the capacity to recognize feelings that are being experienced by another being.The emotional capacity of a person, is to perceive and feel others emotions and needs through the extension and reflection of one’s own experiences. Now, how does this fit into the work and world of software design. That’s precisely this blog post is going to deal with. I believe there is a higher purpose of one’s effort inside and outside office space. There is a paramount need in the society, given the fast paced nature of the world, to develop an emotional capacity to be sentient about others need. This unique attribute of human nature, can be applied in every other aspect of human endeavor for the betterment of society and the goods that we consume.  

Software Product design and architecture needs to align with the above idea, and developed with an ulterior goal of social aspect and impact. As we all know that there is more than one stakeholder for a software artifact. Consumers come from different segments in society and all walks of life. Be it developing/envisioning a software product or be it a maintainable code developed by a team or be it a document that targets a customer or be it an error that is returned to a layman user or be it an intuitive API design consumed by another team of developers or be it a GUI that’s developed for a group of users who are unaware of the fundamentals of computer, all of them need an empathetic guy who can put himself or herself in others shoe in trying to extend his emotions to empathize others world of complex necessities. Now this is where the context of empathy comes into the picture in the pursuit of software design and architecture. 

Wednesday, February 1, 2012

SOFTWARE PROTOTYPING


Definition
Software prototyping is an endeavour that aims to develop working system, containing, prioritized, minimal and informal requirement feature subset (that overlap with future system) that demonstrates the business viability, taking into account, different stakeholder’s interests and business needs in a time bound fashion, which is also the elementary extension/representation of the final system.
Note: That said, let me clarify to the readers that prototyping is also applied in developing GUI (presentation), We are not going to deal with UI mock ups in this blog post.
Flowchart for prototype building

Relevance to Agile
Agile naturally fits into the world of prototyping and the statement holds true vice versa. Each sprint delivers a fully functional product. Eventually each sprint delivery which strictly follows the above definition, takes one step closer to the end product. Iterative refinement and addition of features is similar to building prototype in each sprint. Except that, prototype is one time affair and agile is an affair with each sprint. A close examination of the above definition will connect these two worlds seamlessly.
Is agile sprint prioritized feature subset of the final product?
Is agile sprint time bound?
Does agile take into account the stake holder’s interest and feedback in each sprint?
Is each sprint delivery refined and passed on to next sprint in cycles?
Is there a working system at the end of sprint?
Is there a scope for transparency, simplicity and adaptability in agile?
Sum of thoughts
In spite of having various software development methods, I believe agile is apt for building prototypes not just because of the similarity in definition but also within the practical boundaries. Building prototypes are driven by chaotic forces more than a well-planned set of necessity. Agile meets this plane of chaos and hence both are made for each other.