The whole is greater than the sum of its parts

This truism is applicable to all, whether it is an individual or a company. The various facets which confluence to make an entity great render to it a unique flavor, one that cannot be copied completely. The innovative practices at Mindfire Solutions contribute towards its uniqueness and differentiate it from its peers in the software industry. Here’s how.

My last blog was on the 2 minute innovation where I told you how Mindfire Solutions follows a unique project status communication practice which makes use of rich media to communicate the day’s progress to the client. In this blog you will get to know yet another innovative best practice followed at Mindfire Solutions. Ever heard of the term collective intelligence? No? Well, simply put, it means 2 is better than 1. Only, in our case 700 is better than 1. This is an approach aimed at solving individual queries by the combined knowledge of an organization.

We all know that the true value of an organization can be closely gauged from what lies between their employees’ ears. And Mindfire Solutions not only encourages its employees to broaden their horizons but also gives them the scope to make the best use of it by fostering a culture of sharing. As time passed, number of projects increased and Mindfire’s numbers and ranks swelled, realization dawned that although the collective knowledge of the organization was increasing linearly the individual knowledge was more or less limited to his own area of expertise. Owing to a demanding work scenario and paucity of time there was hardly any scope to learn more at an individual level. In an organization where knowledge is treated as the most important asset, productivity would get a quantum boost if there was some way in which the information about the knowledge and skills of an individual can be shared with another individual in need.

And then a unique knowledge management practice was developed in Mindfire Labs and christened as Fluid Expertise. Based on his need, a Mindfirean can use this system to search on the particular topic and then get the content results as well as the list of colleagues who can help. The database for this project consists of the user profiles of all the employees (which include their expertise, blog links, seminars conducted, articles, projects, team space etc.) as well as the articles, tips, case studies etc. contributed by them and available on the website. The search results will be displayed to the user in his browser in a 2 part sectioned format. While the upper half contains the people search results (in this case Mindfire’s in-house subject matter experts), the lower half contains the results from a Google customized search. The user can then choose to proceed according to his wish, i.e. contact the expert on a communication window or click on the pages as suggested by Google.

How the system works?

The system either crawls through the website or parses text/html, word documents and PDFs and considers the content for further processing. Again in order to match the query against the document the text in the document is indexed. The match can be done against the URL, title or the description/content of the page and when the user clicks on the URL the content will be displayed.   As is expected, a lot of inputs are required to find out the top ten subject matter experts on a particular topic. And because we have too many inputs it becomes imperative to decide which among these inputs are primary and which ones are secondary. The primary inputs help in choosing the top 10 people and thereafter, the primary and secondary inputs both are used to rank them. The secondary inputs don’t have a role to play until the top helpful persons have been selected. The decision as to what could constitute the primary and secondary factors are left to the system owner’s discretion.

Following are some of the factors that contribute greatly in people search listing:

1. Content:

Content has to be the most important factor to judge the level of an individual’s expertise. With the help of an open source indexing engine and a compatible server which helps add easy interfaces to add/update/query documents and pump more data, an expert’s contribution is closely gauged in his area of expertise.

2. Number of User clicks:

For a specific search the system will track which links has been clicked by which user and which expert has been contacted by which user. This knowledge will be useful for predicting the result for the user thereby providing personalized search experience.

3. Peer Endorsement:

In this case the system will take time to learn from user input and suggest right people and direct the user to the expert. To address this, there will be an offline input mechanism where employees should be able to specify who is an expert in which area. This will also form a part of the database.

4. User Feedback:

While designing the system we realized that there should be an offline data collection mechanism to know whether contacting a person helped, in short a feedback is sought. Initially the system gives a default people rank to everybody. After collecting inputs from various users the people rank increases or decreases accordingly.

5. Interconnections:

This factor varies from person to person. As the name suggests, these variables play a role to decide how easy it is for A to connect with B. This is determined based on the fact whether the 2 users belong to same team, same project, same center, same team space etc.

6. Previous search:

To get this data the system should be able to store old searches by users and match the current search against old search and find relevant experts to solve the query.

In order to get near accurate rankings of the resident experts at Mindfire Solutions these parameters are constantly monitored and at times subjected to minor changes to give an appropriate listing. And in this way we make use of information readily available to not only solve client issues but also increase our knowledge base on a particular topic by learning it from the guru himself.

These systems and processes at Mindfire Solutions make it robust inside out. And when a customer engages with Mindfire Solutions, although he would interact with a small team, he would definitely feel the depth of knowledge in his work which is largely due to the collective intelligence behind it. That is what contributes to making Mindfire Solutions an enviable organization to work with and work for. Who wouldn’t?

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Why Automation – Is it worth?

Automation Testing

Automated testing is need of the hour. Possibilities of the automation, apart from custom manual testing, are being analyzed for every other application now-a-days. It is preferred to manual testing due to several factors such as improved accuracy of tests, wider test coverage, more reliable results and above all, it saves time and cost rapidly.

Testing manually, on the other hand, is time consuming and error prone, hence can result in defects being left out. Having said that, I would like to analyze the positives of automated testing over manual as is generally said. Basically, it’s not always advisable to automate the AUT (Application under test) as opposed to prevalent myth about automation.

Automation can be accurate in giving reliable results with wider test coverage while saving time and cost, but this may not always be the case with all AUTs. Imagine the AUT with ever-evolving requirements and dynamic webpages. Here, Automation may be accurate with wider test coverage but will consume much more time and cost giving unreliable results due to system instability. In case of UI based AUT, if design changes frequently the automation is strictly discouraged. Further, choosing an inappropriate tool can lead to reduced efficiency as tool selection largely depends upon the technology used in the AUT.

It can be said that automation is the best way to increase the effectiveness, efficiency and test coverage of testing but only when proper analysis of AUT is made before shifting to it, else certainly a bad idea if its objective is not clear. Also, deciding on what to automate is most vital task before planning any automation process to follow. It is not possible to automate everything ; nevertheless modules that are stable and are manually tested at least once should be taken for automation. Test Cases that are executed repeatedly and consume time could be a priority, making the automation best suited for regression testing or retesting of the fixed issues. Descriptive test cases that are clearly explained are automatable and not the vague ones. Apart from regression, it can test stress, load and performance of the AUT.

Hence, Automation should be taken up only after analyzing the AUT and determining if the automation will actually be time and cost effective or otherwise.

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

The 2 Minute Innovation

And before you come to a seemingly easy conclusion, let me be very clear. I am definitely not talking about Nestle’s Maggi noodles which can be cooked in about just two minutes. So what could be the 2 minute innovation? Ever heard of 2MV (short for 2 minute video) as a daily reporting tool? Possibly NO! Allow me then to introduce you to the 2MV Habit that is religiously followed at Mindfire Solutions.

About the 2 Minute Innovation 2MV:

The 2MV Habit is a unique practice followed at Mindfire Solutions. This was exclusively designed to address problems that are typical to outsourcing/off-shoring/remote software development companies. The common problems pestering this industry are:

  • lack of visibility in true daily work progress,
  • absence of the human factor,
  • lack of synchronous communication owing to different time zones and
  • unavailability of rich communication possibilities (email and documents have their own limitations)

We call it the 2MV Habit because it is a daily practice wherein the developer records his daily progress in the form of 2 minute long videos that are actually screen-casts (videos of the screen) with the audio commentary by the developer. This could also include a little bit of code browsing as well.

So how does it differ from emails/documents?

The use of video/media differentiates 2MV from an email/document by creating software engineering artifacts that are rich in information. After some initial hiccups the developer realizes that while he can make a 2MV in 2 minutes, he would take around 5 minutes to draft an email/document. However, on the flip side, while the contents of an email/document can be scanned in a minimum 10 seconds time, it would actually take 2 minutes to go through a 2MV.

How the 2MV works?

Clients can log in to Mindfire Solutions’ cloud based project management system with the credentials that are provided to them at the time of on-boarding. Successful login takes the client to the 2MV home page wherein all recent activity is listed as a stream of events. One can then view the 2MVs by clicking on the 2MV icon which renders a flash / HTML5 player and plays the video on the homepage. Comments can be made from the event stream itself. There are also options in the account menu to change the email preferences on new 2MV upload, note addition, transcription addition and resetting of password etc.

2MV workflow

Benefits of using the 2MV Habit:

  • Giving demos daily helps the developer to view the work from the user’s perspective
  • The developers feels accountable to produce demonstrable work every day
  • The human voice renders a personal touch and helps forge better relationships in a remote team environment
  • It also helps the developers bond better with the software QA testing professionals bringing in better coordination between teams
  • Easier, faster and better daily status reporting
  • Instills a sense of ownership in the developer as the 2MV carries their personal signature
  • Rich knowledge base with visible gradual evolution of software and codebase
  • Any misunderstanding with respect to requirements or specs is detected at an early stage and fixed accordingly
  • Easier, faster and better transition to new team members whether in case of attrition or scaling up the existing team
  • Better insulation from human risks in team

A 2MV experience:

Let’s be honest. Everyone was not really enthusiastic when the 2MV was launched. As with just about anything that is new, there was some resistance to 2MV initially from one of the project teams. This was mainly because they were not comfortable recording the video (Ironically, they assumed it would take them more than 20 minutes to record a 2MV). Also they wanted to hang on to the traditional methods of email and online meetings with the client as they believed that they could email faster than record the day’s work in 2 minutes. Before panning it completely, they were coaxed to give it a try, one last time. And then the rest is history. The client loved this mode of communication and decided to use this method instead of emails and meetings. This helped them cut down time spent on meetings. Finding a time suitable for both the development team and the client was again a hindrance, but the 2MV helped get rid of it. The developer could record his day’s work before he left and the client could review it whenever/wherever he wanted to using any device (desktop/laptop/handheld). In this particular case (and as with most other cases), the client not only applauded Mindfire’s effort but also gave valuable feedback that we incorporated subsequently.

For a company that is ONLY into offshore small team software development, Mindfire Solutions offers its clients this unique status reporting tool that not only adds a personal touch but is also a rich repository of evolving project information. One of our clients commented that:

“We’d just like to say what a great idea the 2 minute video is in maintaining a good relationship between us and Mindfire. It is often difficult to build a personable relationship over such a distance but we feel this definitely helps! Seeing the developer’s computer screen brings things closer and enhances trust and support.”

Yet another client found 2MV to be an interesting concept and was of the opinion that:

“A 2-min video is best for more general info and UI demonstration.”

As for our developers, most of them appreciate Mindfire Solutions for this initiative as it has helped them better their communication skills. The fact that the client can add comment in the 2MV itself makes the communication very clear and less time consuming. One of them said, I have also spotted some issues in my code while making the 2 MV at the EOD. So, it’s like testing the whole thing you have worked on before you leave for the day :)”

And when I asked another developer how the 2MV is a mutually beneficial initiative he said,

“It helps to make changes on the work from the beginning as client provides feedback on the work from the scratch level where as in text emails client sends changes/fixes only after seeing the complete task on stage and its sometime difficult for the client to visualize the work from text and provide feedback. Also it helps the client in decision making whether or not to continue/pause the current functionality and jump to some urgent fixes.”

As 2MV is increasingly becoming popular as a project status reporting tool, it would not come as a big surprise if clients begin to choose this as a preferred mode of communication over email and Skype. We surely live in interesting times!

(N.B. : Mindfire follows small team software development very seriously and there are many such practices at Mindfire Solutions. Watch this space for more innovative techniques/processes practiced at Mindfire Solution. We use technology to be efficient!)

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Who Should Software Developers Care About?

Manager/Lead or Client – who should developers care about?

Neither.

Software developers in outsourcing companies are a harried lot.

Demands come from multiple quarters – Lead or Manager, Client, Colleagues – to name a few. Sometimes a CEO and other random people are also part of the group. In large organizations, Marketing, Interaction and other teams join the party. And often there are multiple people of each type above. Time is always running out. And sometimes none of these people agree among themselves! What is a software developer to do in such a situation? Who should s/he care about? Who is most important?

None of them.

Software is made for a purpose.

That purpose is to be used by people for something. The only thing that matters in making software succeed, is whether Users will use it. If Users use your software, everyone will be happy. If Users don’t care, everything is wasted.

All the people above – Lead, Manager, Client etc – are representatives for the User. They are people with good intentions, but they are maya – illusion – from the software’s perspective. The only thing that software cares about is whether Users use it or not.

Software that is used is happy software. Software that is unused is grumpy software.

It follows logically that if software cares only about its use, the developers of that software should primarily care about the User. Generally, Client and Lead and others are also doing the same thing – they are planning and prioritizing and designing and doing everything for final User.

But!

Your Lead may find a short-cut that ignores user. Your CEO may want something done that is good for your company but bad for user. Your Client may prioritize something where user is short-changed. On top of this, ego and personal views may come into play.

In short, sometimes (although rarely) these other players may not have user in mind. In such situations your duty is to ignore them. If you can make them see reason, good. If you cannot, you still know what is right and wrong, because you know who to focus on – the User.

Your final responsibility is to the User. Your job is to make good software that Users love.

As a developer, your User is unknown, faceless and often doesn’t exist except in the future. It is easier and tempting to think of the representatives as real, and the User as maya. At core, it is just the opposite.

But my Client pays my company! But my Lead decides my salary!

In the place-time continuum of life and careers, you will find that the experience of making good software is what you will carry forever. Everything else will float away. Your Company will change, your Colleagues will change, your Client will change, your CEO will change, your Lead will change. But that experience of making good software that users use and love and you are proud of – that experience of exhilaration, that pursuit of excellence – that  will never go away.

As humans, we sometimes do what our head tells us, and sometimes what our heart tells us. But through it all, our conscience guides. Think of Clients and Leads as head and heart, and User is conscience. Client and Lead may tell you what to do, but let User be your guide throughout. As in life, so in work.

Use Users as your yardstick in all situations.

When in doubt, think of Users. When not in doubt, think of Users. Everything and everybody else is maya.

 

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

The Architecture Of A Techie Paradise

mindfire solutions techie paradise

“Do you really like working at Mindfire Solutions? “ I asked and saw my friend give me an as-if-you-don’t-know-it-already look. He said, “Whoever would want to leave this techie paradise?”
You may begin to think that I was merely doing a survey. No, I was not! It was a candid coffee table conversation between the two of us. Little did I know that this conversation would reveal the reasons why Mindfire Solutions’ attrition rate is way too much lower than the industry average? Here’s the gist which explains why my friend has been hanging around the Mindfire premises for almost a decade.

You work because you choose to!

Mindfire is a true techie paradise, it offers salubrious working conditions that encourage techies and geeks to blossom to their true potential. A flat organization structure ensures that people are free to speak their mind and “work because they choose to”. The wet blanket of bureaucracy hardly gets a chance to snuff out the embers of innovation at the workplace. If you look at the people working here, you will realize that they are a bunch of spirited guys and gals doing good tech work and always asking for more work. In fact one of the employees wrote a Glassdoor review saying “a year in Mindfire is equivalent to three years of experience. Thanks to the vast exposure that techies get at Mindfire with regards to technology areas and client interaction they have a steeper learning curve and a greater opportunity to grow in expertise and reputation (salary also comes under this purview) as compared to their peers elsewhere. A recent recruit who worked for one of the Big 4 companies opined that “We (Mindfire) are just the Right size for recognition of skills/contributions as opposed to getting absorbed in a big company where positions/awards are pre-determined”.

Cooperation, Collaboration and Innovation is the culture here:

There is a culture of collaboration at Mindfire. Most employees feel Mindfire is like a family where there are always people to help out. This camaraderie among employees makes the organization a healthy place of work. There are no walls at Mindfire. We have open workplaces and it should not come as a surprise to find the CEO himself sitting next to you and coding. Even the company financials are made known to each and every employee at the end of every month to ensure transparency. Innovation is the lifeblood at Mindfire Solutions. The way we make extensive use of technology to ensure quality in the work that we do ascertains the fact. We have homegrown systems and tools in place that check for bugs in the code that we write for our customers, keep our client updated using 2MV (2 minute videos), address requests, needs and problems at work, help make better and universally accepted decisions, catalyze day-to-day work, increase the speed of learning and be aware about the happenings in the organization. Stupefied? Aren’t you?

An organization of Knowledge seekers:

That Mindfire wishes to foster a culture of learning and has a knowledge driven culture is evident in the manner it wants its employees to get themselves certified. It has sponsored over 300 certifications with 95% certified software engineers holding Industry recognized certifications from the Industry leaders like Oracle , Microsoft, FileMaker, Zend etc. So it should come as a surprise to know that each Mindfirean has an average of two certifications per head. Not only that, it has sponsored ACM membership for all its employees. There is a great emphasis on dissemination of knowledge. After all, the more you share your knowledge the more you get to learn. Mindfireans have conducted over 170 technical seminars with a cumulative total of 4000 attendees across teams and centres. They zealously participate in technical forums and have earned brownie points for themselves and the organization. In our endeavor to provide quality software services to our customers, over 2000 code reviews from across various tech areas have been done and there is a dedicated team of 100+ software QA specialists testing approximately 250 projects every week. There are 100+ subject matter experts to solve the developers’ queries anywhere and anytime. When it comes to IT spending Mindfire leaves no stone unturned. More than 500 people work on licensed software tools and this fiscal around 25 paid tools have been added in the extensive tools library. Mindfire Solutions is also the proud organizer of the DDM IT Quiz, a national level annual quiz fest for management and engineering students. This event is organized in the memory of one of our most talented employees whom we lost to a fatal road accident in 2010.

Oh and there’s a cherry on the cake too. In order to encourage its employees’ spirit of learning, Mindfire in a maverick move, distributed about 700 iPads and android devices to all its employees last December. Did you just let out a small sigh?

Flexibility in work life= great personal life:

One may begin to wonder that with so much work and learning going on at Mindfire Solutions the personal lives of its employees would be hitting rock bottom. But the situation is quite the opposite. We have fixed time for clients and that gives us more time for ourselves, family and friends. There are no strict rules/policies etched on stone and flexibility is given a lot of importance. Unlike larger companies where number of hours clocked is strictly monitored, people at Mindfire enjoy flexibility in working hours (no time sheets/registers/swipe machines) as long as the work gets done. New mothers/mothers-to-be can avail unlimited maternity leave, those who are ill can convalesce without worrying about losing their job and there is also the work-from-home option for those who cannot afford to come to office owing to certain urgencies at home. Also one does not have to haggle for leaves. Have you ever heard of a company that has a holiday calendar consisting of 365 holidays (366 in case of a leap year)? Well Mindfireans would know this better coz everyday is a holiday at Mindfire Solutions. Nobody forces you to work here. To reiterate a point already mentioned earlier, you work because you choose to. And last but not the least, in this world where “There Ain’t No Such Thing As A Free Lunch (TANSTAAFL)” this organization offers free lunch for all its employees across the three centres. Surprised? Don’t be!

Here’s a company which offers tremendous work options in 60+ technology areas, a great learning opportunity and a flexible and laissez faire culture. Not to forget the handsome spot bonuses in lieu of good work done. I am sure now you understand what my friend meant when he said, “Whoever would want to leave this techie paradise?”

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

A Glass of Google, Anybody?

Alternatively called revolutionary and creepy, Google Glass has cyberspace up – up in arms and up for it. Hate it or like it, you can’t ignore it.

There are social, privacy and etiquette implications. Not surprisingly, places where privacy is paramount (such as dive bars), have banned Google Glass. This makes headlines because…nobody knows!

And then there are positive applications such as surgeons monitoring indicators without having to look away. This makes headlines because…nobody knows!

Nobody knows what will happen to Google Glass.

You can’t even put it in any one slot. Is it technology? Is it fashion? Is it vanity? Is it utility? Is it the first attempt at mass wearables? Is it the advent of the cyborgs? It doesn’t end.

The best way to think about Glass is by closing your eyes.

If the downsides are mostly about inappropriate use or privacy concerns, the assumption is that wearers will never take them off. Given that it is easy to take off, it is is easy to see that people will just adapt and remove them at inappropriate places.

The question is: what utility can it provide?

Consumer uses are highlighted by Google. However, I feel specific work applications will come up as developers and organizations re-imagine the possibilities. You can use live-streaming for experience-sharing among friends, or field support personnel can use live-streaming to transmit a malfunctioning machine’s innards to an expert. You are an augmented human being with capability to see additional relevant information to the task at hand.

How can custom software development be impacted? One idea: a constantly recording Glass app with N-recent-minutes recording will mean that testers always have access to what they just saw – elusive bugs which cannot be reproduced will always be captured.

Every industry will have ideas of its own on what Glass can do for them. If Glass can make nurses more accurate, real-estate agents more responsive, students more attentive – you will use them.

Will you look uber cool or downright stupid wearing them? Will you care, if it helps you do things better and faster?

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Celebrating Awesomeness

Microsoft MVP


Let us meet someone interesting today.

One of our software engineers at Mindfire, Tadit Dash, was recognized by Microsoft this week as a Microsoft Most Valuable Professional (MVP) for South Asian region. His Microsoft MVP profile is here. You can read about Tadit’s journey here in his own words. On tech side, Tadit does his stuff on ASP.NET web development and Dynamics CRM.

It is wonderful to observe Tadit’s enthusiasm and vibrant participation in the global developer community – mostly at CodeProject and also on StackOverflow. Excellent.

Tadit has done all of this while being on projects constantly, and with continuous happy delivery for all projects he has worked on. Brilliant.

When desire and direction combine, time bends to the will.

Tadit is a great example of the type of people we want and love at Mindfire.

People who love technology, people who want to connect, people who want to carve an identity for themselves, people who are responsible, people who are passionate. People who are bound to their own work and talent and reputation and identity – not within the boundaries of an organization or role, but floating on the unchained melody of the unbounded universe.

People who intuitively understand the obvious – things like companies and designation and salary and teams and projects will come and go – what stays with you for your life is the knowledge you gain, the reputation you build, the well-wishers you have, the abilities you possess.

People who see beyond, and rise above. What fate and fortune give, they multiply.

I have never met or spoken with Tadit.

His story inspires me. Coming from the small town of Nayagarh, Tadit joined Mindfire at Bhubaneswar 3 years back. After proving his worth at work, his voluntary energy led to  responsibility for “extra non-work stuff”, and subsequent awards, at Mindfire. He moved ahead to receive a CodeProject MVP award few months back, and now he has received the Microsoft MVP recognition. That’s not all.

He is not only Mindfire’s first Microsoft MVP, but also the first Microsoft MVP from Bhubaneswar, a city with 10,000 software engineers! Wonderful.

If Tadit can do it, so can you and me.

Be awesome. Be Tadit. Look beyond today – build a brilliant tomorrow using today.

Let us think about this story over what is, hopefully, a happy and inspiring weekend.

Cheers!

 

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

It isn’t Hard to Hard-code!

Recently I came across an interesting programming situation.

Parts of a web-based system stopped working suddenly, with nothing significant having changed. After some finger-pointing and accusatory guessing, it was discovered that some scripts on server side had been shifted from /root/1level to a deeper nested folder, let’s say /root/1level/2level. So far so good.

What happened next? Why would that make a system stop working?

Code needed to find path for some processing. The code split on first backslash to find file name, implicitly assuming that the file would always be one-level deep from root. When the file was shifted into a deeper folder, the path extraction stopped working.

There can be arguments about whether the admin should have shifted files into a deeper folder without informing developer, or why this should not have been done at all, and so on. But I consider this a clear elementary programming mistake of the hard-coding variety.

Hard-coding does not mean just typing in numeric or string literals into code, although that is the obvious college-level hard-coding. X = 420 or sEndDate = “1/1/2022”. It also means any type of inflexibility embedded right into the code and program. Hard-coding means not understanding the need for flexibility and not writing elegant code that can adapt to its surroundings.

Hard-coding is called “hard” coding because anything hard cannot be molded to suit the need at hand, because it is inflexible. Like when you put in an assumption that your file is one-level deep,, which makes it inflexible to run when its level changes.

What would be the right way to deal with this?

Step 1: extract path in a loop, so that you can handle any level of folder-nesting. You don’t assume you are N levels deep, because folder-level is not something that can be assumed! Instead you traverse the path to find how deep you are.

Step 2: Back-slash? Welcome to multiple OSs! The file-separator character itself is hard-coding. In every language worth its salt that runs on multiple OSs, you have operators to find environment variables including file-path separators. On Unix/Linux you are “/”, on Windows you are “\” or “/”. On Mac you had “:” long back during MacOS, and now you have “/” on OS X with its Unix core. And then I was on some Solaris/RISC machines decades back which used “.”.

Should you hard-code assumptions about N-level nesting and separators? Absolutely not.

Does it need extra time to write flexible code? Absolutely not. The amount of time you spend later in not writing tight right code in the first place, so much of debugging and frustration and rework – it would all be avoided if it were first-time right. And to write above path-extraction code in a loop with separator detection rather than hard-coding – you are talking about couple extra minutes. Take one less leak and you can find time to do the right thing!

Is it rocket science that an average programmer cannot do? Absolutely not. Once you decide to do things like this, it is pretty easy actually.

Then why do people not do it?

Because of mediocrity. A mediocre mind is happy with sub-standard work that somehow passes through. Because of lack of involvement. When you are pushed into a “career”, you are least concerned with your quality of work. As long as the next raise comes around, who cares! You are not a craftsperson to take pride in work, you are just a code jockey.

This, ladies and gentlemen, is the difference between a good software engineer and someone who just gets things to work. A good software engineer anticipates need for change and does things first-time right. A good software engineer thinks ahead and does things in flow during first-code which take very little additional time to do. A good software engineer does not hard-code, either directly as literals or indirectly as implicit assumptions.

Someone who is just a programmer does not do any of the above, and just somehow gets things to work – never sure when it will fall apart.

Now you decide what you want to do.

 

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Reflections on “Queen”


QueenMoviePoster7thMarch
As with every good movie, the story and characters of “Queen” have subtleties you can reflect on, in different contexts. If you have watched the movie, read on!

Right Person in the Right Place
Whether it is casting Kangana Ranaut as the innocent yet liberal Rani or Lisa Haydon as the wild yet affectionate Vijaylakshmi, or Rajkumar Rao as the suave yet creepy jerk – each actor has been hand-picked to fit their role perfectly. This meticulous job at casting does half the director’s job, with each actor naturally cut out for their character. Actors can adapt, but with natural fit one can get a sense of comfortable flow.

The Past Casts its Shadow
We come across characters whose thoughts and behavior today are driven by their past. Rani goes into her own past often, and learns about past lives of several characters. Taka’s attempts to forget, Oleksander’s desire to do his own bit, Rani’s suppressed self and the joy of new-found freedom – characters perceive and respond based on their past. The past is a prism on to the present.

People and Circumstances
While going to visit Roxette in a shady area of Amsterdam, Rani comments that this is perhaps the wrong place – obviously a little unsettled by the environment. Once she meets Rukhsar (aka Roxette), she recognizes a person making a living the best way she can. And in that moment, she understands in her liberal mind that the person and place are different. Circumstances are not the same as a person.

Life has to Go On
An individual, a family, a team, an organization, a country – every now and then each of these have to leave the past behind and move on. The plastered hostel walls are a way for residents to leave a piece of their soul behind when they vacate, so that they may move on and renew their soul without any baggage of the past. You have to respect yet bury the past when it is time to change.

Accepting Differences
Rani meets people who are very different from herself. The bohemian free-wheeling Vijayalakshmi, the pole-dancing Rukhsar, the male friends who live with her and accompany her to a kink shop – these are all new people from a very different world than hers. Yet she connects with them at a deeper level. The people she rejects are the socially acceptable superficial people she knows since years – Vijay and the rest of his clan. Shared human values triumph over language and nationality and other artificial differences.

Craftsmanship
The Italian chef, Marcello, treats his food as his creation, one that has his spirit and soul. It is work born out of love, not for money alone. Rani’s attempts to change it to suit her taste causes him to react strongly – he loves his creation so much that he cannot tolerate disrespect or disfigurement! You react only when you are emotionally invested in your work, else you are indifferent to opinions. Craftsmanship and pride go together.

Money and Value
Marcello does not want Rani’s money for food she didn’t like and didn’t eat. He tries returning it right away, unsuccessfully, but remembers and returns it next time he meets her. Money that comes without any value being delivered is just money, not worthy money. Whereas money is just money when it is used (as Roxette expresses about the money she sends home), it may or may not be worthy when received. To desire only money we are worthy of, and truly earn and deserve, is character.

Quality Speaks for Itself
When Rani’s gol-gappas become a hit, one can trace it to one individual asking for a trial. And while the immediate reaction was disappointing, he goes on to enjoy it – so much so that he asks for repeats. Quality speaks for itself, and is helped along by word-of-mouth, and soon her stall is thronged by customers. Sounds far-fetched but anyone who has had gol-gappa/puchka/gupchup) will agree whole-heartedly! Good stuff can stand its ground.

 

Now let us take our musings one more step. If you were leading an organization, a team, a mission, yourself…
How would you ensure people are in just the right role where they can bloom and flourish?
How would you appreciate people better based on their past life experience?
How would you separate your view of people from circumstances?
How would you shed the past when moving in a new direction?
How would you recognize and accept people very different from yourself?
How would you build a desire for, and a sense of, pride in work?
How would you create a sense of self-respect – money is to be earned not received?
How would you make quality stuff the world wants more of?

And if you could succeed at the above, wouldn’t you have built a superlative unit?

 

Enough said, hope you just enjoyed the movie!

 

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Common Sense vs Bureaucracy

An organization gets bureaucratic with age. Meaningless rules and policies are thrown around, often ignoring common sense. I came across an instance recently, and wondered what we were thinking.

One of our years-old, loyal clients worked with a specific team for few months. Things were done and sealed, and when they shifted their back-end from a local server to the cloud (who isn’t doing that nowadays?) some things stopped working. The client reached out to the technical lead they had interacted with.

He was met with a curt “the developer is working on something else” – and of course policies forbid us from having him help on anything else. No remorse, no work-around, no investigation, no solution. More importantly – no empathy or understanding of the customer situation.

Obviously the irate client voiced his displeasure. Things were done and all it took was a couple hours. But it left a very bad taste in the mouth.

Why was this necessary? What was on the minds of people? That once a project is over we are not responsible? That a customer should be made to pay for every small thing? That avoiding a headache is better than understanding what the problem was? That policies are useful to throw around as excuses?

Why am I relating age to this? Well, think of a young group of hungry people. Would they dare to imagine saying a curt “No” to a loyal past (and potentially future) client? Or would they go out of their way to fix the problem at hand?

Often, clients prefer Mindfire due to our age (almost 15 years!), our stability and proven delivery. Buf if we lose common sense – the hunger to do the right thing – clients should go to younger hungrier (albeit riskier) companies!

Of course we don’t want one customer to pay for time that goes toward solving someone else’s problem. But isn’t it common sense that if something has gone down, a solution has to be found promptly? But do we have strait-jacketed developers who won’t put in an extra couple hours (night? weekend?) to help a situation? Or will the current customer say no to some hours being transparently redirected, with appropriate discounting if necessary?

Solutions are hidden in plain sight. Excuses are also conjured out of the same thin air.

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •