A place of worship and serenity.

Link to Tootle Website

Tootle is a ride sharing service that matches bike riders and commuters. While the concept is not new, there are several contextualization factors that makes it unique. As research and development engineer and lead software developer, this was my biggest challenge to date and I learnt a lot of things. However, since we worked in a very small team, I occasionally came across problems related to branding, client relationship, marketing and overall B2C business model. This blog post will dive into those learnings rather than focus on technological implementations. To summarize the entire post, it is about my journey from a single dimensional software developer to a software developer who also understands project management, human resources, market, competition, branding and plethora of other factors that a software developer whose long term goal is to become a tech entrepreneur needs in their arsenal.  

Start small, www.rome.com was not built in a day

This is trivial for most people, but not for me. There were times I was so focused on completing a task that I lost the bigger picture. Breaking down a task into smaller subtasks and solving them as soundly as possible is the key. Also, when you push yourself too hard, you miss small details that might have huge consequences in the future. Think scalability while solving little problems. Like Will Smith said, "You don't set out to build a wall. You don't say 'I'm going to build the biggest, baddest, greatest wall that's ever been built.' You don't start there. You say, 'I'm going to lay this brick as perfectly as a brick can be laid. You do that every single day. And soon you have a wall." Also, Hofstadter's law will come along to shatter all your to-do plans for the day. It's just the way it is. Deal with it.

Development and design is an iterative, never ending process. It is not a sprint but a marathon.

Seeking perfectionism hurts. First of all, there is no perfect code or design. There might be something that looks, feels and works great today, but it is never going to be perfect. You will always have to come back to that line of code, redesign that slider that looked great once upon a time and continuously update based on user feedback. Coding is a little of writing code and a lot of maintaining it. You are never really done. Project preplanning and risk management might help with not having to go back to drawing board again and again, but development and design is very much an agile process.  

Hire people who love what they do and love learning

Coworkers become your second family. During the course of Tootle development, I actually spent more time with my coworkers than my family.  Fortunately, everyone involved with Tootle are very passionate, hard-working and motivated people who never shy from learning. Also, certain characteristics such as being ardent, an embodiment and advocate of the product, and hardworking are more important than being skillful. I was also on the hiring team and I made sure to look for these characteristics. After all, Leicester City won 2015-2016 Barclays Premier League primarily because of their team spirit.

Prioritize what is important

There will be a lot of bugs. Code related stuff aside, there will also be several things that need attention. However, time is limited. At times you could be in front of your computer debugging for hours and hours, but still the issue tracker list and crash reporting list will be full. Therefore it is necessary to prioritize based on impact level. Assessing impact of a particular task can be difficult. However, if you have an awesome team, it is just a matter of discussing from a business and technical point of view. Also distinguishing between bugs, enhancement, improvement proposal and task is very important.

Communication solves 95% of all problems

Communication is the key. Often during the day, talk to coworkers about the problems that you are having. First of all, when you explain the problem to someone, you understand the problem better yourself. Secondly, you are also in sync with what problems everyone else is facing. Similarly, simply talking about work related problems, expressing how you feel about deadlines, doing risk analysis together, discussing business strategy together, communicating dissatisfactions etc. will help solve a lot of problems earlier. So, constantly take a break, look outside the window, get a glass of water and simply talk.

Stress can be a catalyst if applied properly

This project was very much stressful. Retrospectively, it was supposed to be too because of its complexity. One of the things I really struggled with is handling stress. I have gotten better over the course of this project. However, I am still working on learning to change stress to a catalyst. I hope to become Arsene Wenger someday (giggles). However, I have learnt that if things don't work tonight, you simply have to sleep over it. The freshness of morning solves a lot of problems.

You could also just watch SRK dance in Hosh na khud kahi josh.... 

Go running in the morning, be healthy

This one is self-explanatory. Run to remain stress free and healthy. I stopped running for a while because I was lazy. But, I was also lazy because I was not running.

Competition is good

While reading The Personal MBA by Josh Kaufman, I realized that having market competition is actually advantageous. This concept was really counterintuitive to me previously. Competition is good because it implies higher probability of fulfillment of something known as the Iron Law of Market. It basically means that like you, other people have also seen the availability of the market you are targeting. Similarly, there is a lot to learn from your competition. Learning and applying the principles of game theory helps a lot too. 

Awesome tech implementation is second to client's requirement

You could spend weeks and months on awesome, flawless and amazing features that your clients don't really care about or half an hour on simple features that makes all the difference to them. For example, adding a bitcoin as payment system would be cool, but allowing a female client to select a female driver makes the product secure and also adds marketing and advertising weight.  

Beta tests are really really really important

You could sit hours upon hours, days upon days trying to find and fix all the problems. But, finding problems is more difficult once you know your product inside out. You are in a controlled office environment with fast internet, limited real test devices and a clear understanding of product workings. There is no way for you to find all the problems. The solution is to find real users to test, use and provide feedbacks. Canary tests and beta tests are therefore very important. 

Just because you like it, does not mean users are going to like it also

You might absolutely love your product. However, it does not mean every user will like it also. Be prepared to get bad ratings. Also, they are not wrong to dislike something you adore so much. 

Previous projects and keeping up to date with latest technologies help a lot

I really believe this one is a biggie. Regardless of whether or not a product succeeds, it is always a stepping stone for future products. This product would not have been possible or would have been terribly difficult without Edcrayon, Edquake, and dozens of other location related prototype. When prototyping, research on newer stacks and practices.  

In the end, revenue matters the most

In the words of Josh Kaufman,
Do not be a mercenary since dedication in craft, patience to find right market to be dedicated towards and consistency is required to eventually make money.

Also, do not be a crusader since you need money to pay the bills.

Wish us good luck with our tootle journey.

Importance of Attendance in a Continuous Assessment System.

Please keep in mind that this is more of a blog and less of a scientific paper. To be honest, I just did not want all those real data to go to waste. 

In Nepal, academic session grade comes from end of the term final examination only. That is the way my parents got their grades, I got mine and my younger sibling got hers. However, things are thankfully changing now. Last year, we implemented Edcrayon in one of Kathmandu valleys' most reputed schools. The adoption allowed the school to easily transition from traditional end term assessment model to continuous assessment model. This implied that students would have to perform on a regular basis to get good grades. Unlike during my school days, mugging the entire course syllabus before the final exam would not help anymore. 

Similarly, most schools also had an allocated number of days for final exam review just before the exams. These review period entirely focused on the sort of materials that would be tested on the exam. Unfortunately, students were basically being prepared to pass the test. This also meant that even if students missed a significant number of school days, it would not really matter too much with their grades since they exactly knew what they had to prepare and mug up. Therefore, it is really difficult to identify the impact of attendance on grades in traditional grading system. 

However, with the introduction of Continuous Assessment System, since final grade is basically a summation or curation of student performance throughout the academic session, I wanted to study if student attendance had an impact on the final grade.

Is there a correlation between kindergartener's attendance rate vs final grades? Similarly, is there a correlation between a middle schooler's attendance rate vs final grades? I had access to real academic data for a school and wanted to enquire the relationship.

Null Hypothesis:
There is no relationship between attendance and final grades in continuos assessment model.

Class KG
Number of students: 11

Note that the sample size in this case is very very small. The number of students in Kindergarten level were only 11 in the school we worked with.

Class: 4 (Three sections)
Number of students: 104

In both cases, r is greater than 1 which implies positive correlation. Also, correlation is significant at 0.05 and 0.01 respectively. Therefore, we can reject the null hypothesis. 

Students benefit from being present in the class in continuous assessment system.

We are on the verge of launching Tootle. However, this prototype of an app for displaying real time Sajha bus location on the map was a stepping stone. This only served one static location. Now the algorithms are adjusted to support n dynamic routes.

I recently stumbled upon a customer loyalty measurement scale termed Net Promoter Scale (NPS in short) via a conversation with a businessy friend of mine who was researching on it. I was truly amazed by the simplicity yet brilliance of NPS. Moreover, this is ideal for someone like me who wants to get honest customer feedback without harassing them with poorly designed questionnaires regarding a product. 

The pith of NPS lies in the question:

“How likely is it that you would recommend our company/product/service to a friend or colleague?”

Those who respond with a score of 9-10 are called Promoters, and are considered likely to show positive behaviors like repeat purchase and positive referrals. Those who respond with a score of 0-6 are labeled Detractors, and they are believed to exhibit the negative behaviors like driving away from the brand, negative referrals. Responses of 7 and 8 are labeled Passives, and their behavior falls in the middle of Promoters and Detractors.

The NPS Calculation formula

(Number of Promoters — Number of Detractors) / (Number of Respondents) x 100

NPS ranges from -100 to 100 (inclusive).

With me doing the charting part and my friend doing the result implication and significance part we developed a simple NPS calculator app that takes total detractors, passives and promotors to output NPS. Refer to the screenshots below to identify what different NPS score signify. 

Visit my friend's blog post on same topic for more information about NPS including it's pros and cons.