Attitude Builds the Great Products

During starting years of my career, I was interviewed by a start-up company. Recruitment manager (read CTO) explained me some complex product idea and asked, "Can you implement it". I was not able to understand those complex pieces completely (being slow by nature in new writings :) ). I replied, "I am not very through with whole thing. However, if it is logically feasible, we can do it for sure." And I was hired.

The product concept and the technologies were very new for the team. It was a uphill learning task. Team average experience was around 5 years (excluding the manager). Still team had done wonderful job. With a team of 10 people, we developed a beautiful product with many complex and feature rich components that also in months’ time frame. Whole system was developed on self-validating test workflows, following TDD kind of advance methodologies which were very new and challenging for that 'junior' team. We challenged our every existing belief and drew new lines on learning graph every day, while producing some very interesting product pieces. Definitely, there were many environmental factors which contributed to this wonderful work. However, one of the main factors was the right attitude and willingness to accomplish.

Later, I asked my manager that how he selected me without even asking much technical question. He replied, "I have looked for right attitude in all the candidates and that paid us well".

Other experience: I was working with another project team, a very experienced team having much bigger resource pool. Team was enhancing and managing an accounting product. Product was having some issues in core implementation, due to which we were getting lot of bugs around the years. Course of action was to patch the data or correct the current broken flow of application by temporary fixes. Team was spending many hours in this exercise. Although team had great skills and experience, however, nobody was willing to fix the core issue. Reason, that would need complete rewrite of that component; a critical piece of the product. And it was comparatively easy and less risky to make fixes. Hence, due to lack of right attitude and driving force, we kept on putting hours of efforts in fixing the bugs only.

By now, we already know the difference between first and second example. It is not (only) about skills and experience, but, it is more about right attitude. In second example, team was much experienced and bigger. Many of the members were skilled enough to do right things and do the things right. However, differentiating factor was the right 'attitude'. It needs a high level of 'can do' and risk taking attitude to say, "Let’s build something better even if it mean scrapping existing piece of code. Let’s write a good product, where team can spend time adding value to the product instead of fixing issues and doing plumbing work around the year. Let sit and figure out, how we can improve the things".

Finding skills and experience could be easy, however, finding and developing right attitude needs a lot of efforts. Also it does not end with the attitude of individuals, rather attitude of leaders also play a big role in developing this whole eco-system. In first example, it was the leader who has given weightage to the right attitude over skills, education and experience. It was the leader who has promoted the attitude to take the risk and to challenge the stagnant beliefs to improve the product.

When right attitude is mixed with right set of environment, people take action. They become passionate for the goals, for the things which they are doing. They go extra mile to build what they believe in. A very important element in producing great products is the attitude of people working on it.

It takes whole village to build a good product and a successful Organization, however, it takes a right set of attitude of team and the leader to build and groom that village.

What is your experience for role of 'attitude' in building great products, what are your examples?

Thank You Mentors

When I started moving in professional career, I came to know about term 'Mentor'. Wondering what it is, I found that many of the people were talking about being mentored by various great personalities. And it is said to be a great opportunity to learn and grow. I was not even aware about it, hence I started feeling insecure and kind of left out. Am I not worthy enough or I am not looking for one. Why I haven't found one so far..

However, eventually I found that it is not always the single person who comes in formally, wearing a hat of 'Mentor' and bestow her blessings. Rather, it could be more than one people who keep sharing their wisdom and experience informally with us, either intentionally taking interests in us or casually just sharing few hints from their wisdom and life experiences.

At the age of 19, when I joined my first job to manage a mechanical workshop of 20 people, I found it very difficult to deal with people who are much older and experienced than me. Then my senior 'Dinesh Sharma' hold my hand and said, "You have to be bold and confident to deal with them. Also, Understanding their context, Respecting everybody and Integrity in yours 'words and action' is an important ingredient to manage the talent". And that lecture worked for me.

My few first days as Software Engineer, I was completely lost in a whole new world. People around me were using terminologies which were unknown to me. I was feeling like I don't know anything, especially when anybody comes to you and said, "Hey, you are working on this since morning.. that is 2 hour job if you use xxxxx". I got a supportive voice from Vikas Joshi who came and sat next to me, saying, "Let us see how we can solve this problem your way". He made me aware about new terminologies, and at the same time assured me that there is not only one, but multiple ways to define and solve any problem. A specific terminology can be good to communicate, but is not the core of solution. He encouraged me to keep learning and keep working steadily and sincerely.

There are even more. My mother who keeps sharing her priceless hard earned experience of life with me, who keeps on mentoring me since childhood and taught to face the life 'seeing in eyes of challenges'. Many of my friends, who shared one or other important lesson with me at every foot step. Many of the great writers, who have shared their valuable experiences in form of great books. One taxi driver, who met me one morning and shared important lesson of life saying, "Life gives us hints about next path. It is we, who want to stick with existing roots or beliefs. Best is to recognize the hints of nature, accept it and move on". There are many more ranging from my childhood teachers to my office cleaner who shared few dews of wisdom from their life experiences unknowingly and unconditionally.

So I feel confident now that I got so many mentors in life which shaped my thought process, the way I am. And what more, life gives us what we wish for, when we need it. Recently I got Ramesh Dharma as my first formal mentor. Since last one year, he is listening to me with all good patience and sharing his fine tuned experience with me. I don't know when I crossed the formal lines and even started reflecting my emotional side also. But he is managing every aspect maturely and is sharing his best of life experience to shape a new path for my journey.

Thanks to all of my great mentors for shaping my life, my journey..

#ThankYouMentor

Inclusive Leadership - An Effective Leadership

On a Friday evening, I was working late in office. I was struggling to fix an issue. That was a complex issue, and I was not finding any solution even after spending many hours on it. I thought to take a break, and decided to work on it after having dinner. I was about to go, when my manager walk over to me, and
He asked: 'Hey mohit, how is it going'.
I said: 'Not that good. We are not reaching anywhere. This issue would take time'.
He said: okkk. But, this is very critical issue and you are not leaving today without fixing it.
Bang.. ! Those words didn't sound good. I thought in my mind 'I can't leave, I am not free to leave..'. I felt bad.
I closed my laptop and told my manager, 'It is 9 pm already. I am tired now. I can't work more today. CU tomorrow..' After saying that, I left the office (sadily)
I reached home. I was very sad. I thought, I could have reacted differently. I was feeling bad, as I never behaved like that with my manager earlier.. I was tensed. I believe my manager would have also felt bad.
Overall, it was an unpleasant experience for both..

.............................
Moving to another incidence..

Few months later, in another project, we had similar kind of scenario. Whole team was packing the bags to leave from office on a Friday evening. Our manager came to our area
and said, 'Hey guys, I have a situation here to discuss and I need your help'.
'Help', that word sounds good to ears. As a normal reaction, we asked, 'ok, tell us please'.
He said 'One of the critical functionality is having issue and client is incurring loss due to this. We need to fix it asap'.
As soon as he said this, we understood that we need to stay back. Our mind started thinking of our plans for evening, like movie, outing etc. However, then our manager add more to his previous sentence.
He said 'I know it is already late and you might have some plans already, however, this issue is important and we have to find a solution as a team for this situation. Still if anyone has any commitment which is more important, do let me know. We can discuss and manage that'.

Everyone in team accepted to stay back. Even few of us came forward with different innovative ideas to fix the issue. Bonus point was, manager stayed whole night with us.. cracking jokes, arranging food for us and so on. We stayed there for 30 hours appx and left next day after fixing the issue. We were tired but were not sad. Rather, we enjoyed with each other, and took all the ownership to get the work done.

What was the difference between these two incidents.

In both stories, manager's intention was to get the work done; which was critical for project or organization. There was nothing wrong in that. However, there was a difference..

In first case, manager had made the decision and tried to force that to team. He had not shown the emotional consideration towards the feelings of his team.
In second incident, if you noticed, 'We' word was used more than 'I' or 'you'. Manager explained the situation along with its impact. He tried to involve everyone in the decision and pulled them on a common platform to take a collective call. Moreover, he conveyed it effectively that he understood 'what team is sacrificing i.e. their personal time' and he openly acknolwedged that.

In both the situations, managers were clear that they need team to stay back and work late to control the situation. But how they conveyed the message, that had made a big difference.

The way we communicate, and involve others in decision making has a big impact. It can make the whole environment tensed or can make people work even for 30 hours happily. Supporting your team, making everybody feel involved in decision making and that their opinion is respected, they are valued, is a big trait of successful people managers. When employees feel included at work, they become better team players and more likely to go above and beyond expectations, suggesting new ideas of getting work done. This, for sure, boost overall organizational performance also.

And this is not only applicable in office, but also in our personal life, in day to day dealings.

Good thing is, we have the options to choose. We can choose either first experience or can go for second leadership style. Choose the best..

Design Considerations for Audit Trail Implementation

Auditing the operations in any application is a very common requirement for security and auditing purpose. Auditing can be done at various levels with varying level of details. Overall prime requirements for Audit Trail are:
  • Collect enough information to determine, 
    • Who has done the changes, 
    • What are the changes, 
    • When these changes have been done, Locale etc
    • What user scenario was in action, i.e. the operation context
  • To capture all user actions, even if some of these are not reaching to DB or would be interacting with external services directly (rare, but happens in some cases)
  • Successful and unsuccessful logons or other security related operations
  • Management of collected audit data, which could be very large. 
  • Search operations on collected data
  • Display the collected data to Users in presentable format as and when demanded 

Considering above requirements, there are various design approaches to implement the audit trail in system. Few of these are given below (considering a JEE application, however, many of these are generic)

  1. Implement DB triggers to capture any change in data states and log in audit tables
  2. Log audit data in business services, which means collecting the required data in each business service operation and log it using some abstract Audit service to some data store
  3. Using generic logging framework like Log4J to log the auditing information to desired format and data store and later parse these logs to extract the required data
  4. Interceptors based approach to intercept all operations, collect the data and log it through Audit service. Here interceptors can be of DAO layer interceptors like Hibernate Interceptors or Service level interceptor using AOP.

All of these approaches have their own pros and cons. As obvious, one approach can not be fit for all. Application state, project requirements and scope can define the right set of implementation. So lets discuss the pros and cons of each of these approaches to understand it more.

Database triggers

Database triggers can do really well and nothing can escape from the triggers. Once these are set carefully on all levels, all changes are bound to pass through these and hence will be captured in audit tables.

Pros:

  • Whether it is simple user operation, or any change is being done by DB admin; all kind of changes will be captured by triggers.
  • A comparatively simple approach, in aspect, that no code change is required and it can be implemented directly at database level without disturbing the code.

How to Stream Media from Window PC to Xbox One


XBox One provides features to stream media from your PC and to enjoy the media on common entertainment box i.e. XBox. Below are simple instructions to setup the streaming of media contents from PC to XBox one, along with solution for one commonly faced problem. Hope it will help.

Note: Instructions are given considering window 7 PC.

On XBox One:

  1. Make sure that Xbox One is connected to your home network, either via wired or wireless connection.
  2. Download the ‘Media Player’ app from Xbox Store. This will help you to explore the media on PC remotely. 
  3. Go to into the “Preferences” option through the user settings menu. Make sure that the “PlayTo” streaming option is checked. 




On PC:

  1. Switch over to your PC. 
  2. Go to Start menu and click on “Devices and Printers”.
  3. Use ‘Add a device’ and add Xbox one as one Device. 
  4. Open Window Media Player
  5. Go to ‘Stream’ menu and enable the ‘Allow Remote Control of my Player’ and ‘Automatically Allow Devices to play my Media’ options.