Jul 24, 2015

Moulding Culture with Appreciation, Silence and Feedback

Like a typical hacker mindset, I am always on lookout for patterns, formulae's and hacks for life and work around me. When I moved into managing teams, I had to apply this thinking towards people, team building and processes to optimize the organizational code at work. I have learned and changed a lot in the process but my train of thoughts still revolve around those original traits of a hacker mindset.

When I joined a start-up about a year back to head and build its engineering team, one of the critical challenges has been about moulding an organization culture and how to go about doing that. Culture as such has been a complicated subject for me since it does not fit well into moulds of programming logic. I was first seriously introduced to that concept while reading the book Delivering Happiness by Tony Hsieh. A great book and I would highly recommend. I have read numerous such corporate management and leadership books including the recent The hard things about hard things by Ben Horowitz which have been helping me in forming a pattern around hacking a culture change.

A culture in a way that I understand is the vibe a team or organization provides to any new person joining it. It also sets some unwritten rules and behavioral expectations from the people in the team that has been carved by their founders and leaders. What I have come to derive is that appreciation, silence and feedback are the key tools that if used appropriately can help carve a specific culture, one that can be planned, engineered and implemented.

One way to think of these tools (appreciation, silence and feedback) is how they impact the thing (culture) we intend to mould. Getting down to the basic constructs of culture, what we wish to drive  is the overall behavioral traits of the team. Here is how I feel these tools help mould that -
  • Appreciation - it is an enhancer. It increases the behavioral trait that it is applied to.
  • Silence - it diminishes or discourages a behavioral trait. Lack of appreciation is felt as much as its presence and is effectively a culture tool.
  • Feedback - this is useful for course correction. Since the previous two tools are not helpful much when the directions are incorrect.
Appropriately combining the above 3 techniques, can effectively help build a culture. This does trickle down from the leadership. So knowingly or unknowingly, these tools are always functional and continue to mould an organization.

To cite an example, let us say we want to create a culture where working longer hours is a norm and expected. As a leader here is how I can use these tools to get that going -
  • Appreciation - an engineer worked overtime to deliver a report a customer asked for. As soon as I come to know about it, I want to publicly appreciate this specific trait.
  • Silence - an engineer does tremendous job at everything she undertakes but always leaves office on time. I never bring that up or show appreciation.
  • Feedback - another engineer works overtime but sometimes does not show up at the weekend standup. I like the person and during our 1-1 meeting I mention that and ask for sending advanced notification and avoiding such absences.
This though is a negative example I am sure some of us can relate to it. It does create a bad culture, but the point here is that it can be planned and implemented. In a similar fashion, one can lay the foundation of building cultures around excellence, fun, sharing and the traits that one wants to be part of their organization.

This approach though greatly simplified, feels logical to me. The framework gives me a way to enable cultural change. Things are not black and white but the shades of grey are differentiable. In the end, it gives me a way to proceed forward and to learn and grow in the process.

Jun 23, 2015

Communication Structures

Product architecture reflects the communication structure of the teams. Interestingly, the reverse is true as well.

May 27, 2015

Why is Reactjs so significant?

Reactjs is built on a simple foundation of separating DOM mutations from the Views of the application. A typical SPA application renders and re-renders parts of DOM by a process of setting innerHTML on parent elements. This approach though simple and works for the most part, is mainly a hack around Web 1.0 applications where web pages were primarily rendered at the server. The browsers thus are built even today for Web 1.0 and hacked into the Web 2.0 world where pages are not rendered on the server but via a JavaScript application.

Some of the most popular libraries such as jQuery and BackboneJS provide simple API to do this rendering for applications. AngularJS takes an extreme approach to prevent excessive DOM mutation by managing all the data on the DOM separately.  ReactJS I believe is finally a right step into true Web 2.0 applications.

So what is the issue with DOM mutation? Why would re-rendering via innerHTML be an issue with the browsers today when they are so fast at changing DOM. I believe the main problem is the ugly user experience innerHTML renderers provide to the user. The flicker when a DOM element changes breaks the smoothness of an application and makes it look second grade. I believe that is the only reason, why web applications are unable to catch up with native applications.

Reactjs changes all that. It brings the smoothness and the experience back into web applications and provides the same level of experience that native applications provide. This I think is huge and is a paradigm shift in how web applications are typically looked upon. With the launch of React Native, we have finally arrived at a point where web applications will be at par with native applications. Its just a matter of time before browsers will understand the value proposition of Reactjs and build it as part of the DOM. Wouldn't it be great if we had an API such as morphHTML(target, html) as part of native DOM API's that does exactly what Reactjs provides?

All this development around Reactjs and React Native is truly exciting. I am looking forward to an internet where the web applications are no less than the best native mobile apps out there. And what will be exciting is when that becomes the norm rather than exception.