What Next?

The first few months and years of running an online business is really exciting. Designing new features, programming and improving the software based on customer feedback is great fun.

Usage is like oxygen for ideas. You can never fully anticipate how an audience is going to react to something you’ve created until it’s out there. That means every moment you’re working on something without it being in the public it’s actually dying, deprived of the oxygen of the real world. Matt Mullenweg, founding developer of WordPress, in 1.0 Is The Loneliest Number

You have plans for version 1, 2 and 3 and the year’s go by really fast. Time does fly when you are having fun. But what next?

How do you keep yourself motivated to work on the software after it has all the features you wanted it to have. After 95% of the issues are resolved and the software is relatively stable.

I wish more software companies spoke about this on their blogs or during conference talks.

Demonetisation

If you live in India, demonetisation of Rs 500 and 1000 notes is what everyone has been talking about. A move to curb black money has affected the common people, who now have to bear the consequence of governments decision.

In the long term, this is a really good move. But what about the situation now? There are long queues outside every bank. Almost every ATM machine is out of order. The common man is indeed suffering.

I have received SMS from my bank about how I can use my debit / credit card to make payments. Online transactions now makes it easy to pay bills and pay for groceries. But not everyone has a bank account / credit / debit card. Some people who do have a debit / credit card are scared of using it. From what Google tells me internet penetration in india is at 34.8%.

A temporary phase, things will get better soon. I hope more merchants start accepting debit / credit cards. Where’s the Square alternative for India?

Complain or help fix it

Come across something which does not seem right? The first reaction is to complain about it on social media. Thats the easiest thing to do.

The difficult thing, the one which takes time and require some amount of dedication is to be part of the solution.

Don’t like the software you use? If it’s open source, help contribute to improving it. If you don’t write software for a living, then write to them with suggestion on what you think can be improved. Don’t like the newspaper you read? Write to them with suggestions on how to improve it.

Its easy to complain. Takes less than a minute. Creating something or helping improve something is much better. Choose the latter.

Test Driven

When I started learning how to write software, the apps I built were really simple. Page hit counter, guestbooks and a way for me to add articles to a blog. None of these required a lot of code to be written.

Over the years the apps that I have written have increased in complexity. Now there are more than 15-20 features to look after, each with its own set of sub features. The front end code base is now as big in size as the backend code base demanding its own set of tests.

Writing tests for your software is good. As your app grows in complexity, it makes it easy to ensure that all the features still continue to work, after the most recent change you made. And if they don’t your tests should tell you that.

I did not part take in Test Driven Development till last year and now that I understand the process(still learning) and its benefits, I would recommend it to everyone who writes software for a living.

Over Engineer

Or don’t.

I have been working with a colleague on building a timer this week. What started out as a simple feature request has been under development for more than 2 weeks now.

Building a new feature is always a learning lesson. You have so many decisions to take. From use cases you want to consider to edges cases that you choose not to build. Timer as it turns out has a lot of use cases. What if they have the same timer running in multiple tabs?, Can I resume the timer on my laptop at home if I started it on my desktop machine in office?.

You can spend a lot of time writing code for all the use cases or take a stand on why you did not consider a use case. After all you can always improve the feature once it’s out there. Its important to get the feature out in front of user’s and improve it based on their feedback.

Over engineering a new feature is never a good idea. Always make gradual improvements.

Towards a better nation

Indian government yesterday made a bold move and banned all 500 and 1000 rupee notes. If you had a lot of un declared money as cash lying around this move means trouble for you.

I have been talking to a few people about this since last night and almost everyone thinks this is a good move by the government. Turns out I don’t know anyone who has a lot of black money lying around.

As a law abiding citizen, you should be filing your income tax and declaring the money you make. We should all contribute towards the nations well being.

P.S: America you had one job!

Addicted to progress

Incremental improvements every day. This has to be the best lesson I have learnt this year.

Have a lot of projects you want to work on? Or have a large feature you want to release? Thinking about all the tasks at once can be daunting. A long to do list is scary to look at.

Break your tasks down into smaller chunks. Move the progress bar by a bit every day.

Platform as a Service

Like most developers I like to spend time configuring servers and tweaking OS settings. Trying out different flavours of Linux distribution was once a hobby.

Moving from shared hosting to VPS was a big change. From not having control over settings to now being able to install packages and tweak Apache/ nginx to perform the way you wanted it to. Hosting on VPS is still my preferred way of hosting.

Sometimes though for a few projects, you don’t want to deal with choosing an OS, installing packages, making sure every package/OS get’s its security update etc. There are a lot of things to look after when managing the server on your own. The project maintenance plan does not account for this.

Recently I have been moving a few projects that I previously maintained from VPS to Heroku. Heroku has a really good user experience, right from setting up the app to installing adds on to work with it.

Give platform as a service a try for your next project. It’s a welcome change from having to manage all aspects of the server to only focusing on the application.

Takes a long time

Building a product is a long term investment. If you are planning on building a SaaS product or a subscription based service, you have to be in it for 2-3 years before you start making an impact and your business generates good money. Of course there are exceptions to this, but they are very rare.

Zendesk, Salesforce and many other subscription based products make millions of dollars every year. They have been in business for 5+ years now.

279 Days to Overnight Success : The Art of Non-Conformity is a book by Chris Guillebeau. Definitely worth a read.

It takes a while between releasing a product / a blog / a software to when it starts making an impact on a lot of peoples lives and start making good money. I hope you have the patience and have budgeted to be in it for a long time.

Lets rewrite this

Thats the first reaction to taking over a project from another developer or other agency.

Code commenting is not quite right, so many bugs, “the other person” did not write the function the way I/we would have written it, why did they choose Foundation? Everyone’s knows Bootstrap is the framework to use.

Someone taking over a project from you might have the same arguments to make as to why the system needs a re write.

http://dilbert.com/strip/2014-08-12

Dilbert Comics

It’s easy to think that re writing a software will fix all the issues. Talk to someone who has been working as a software developer since a long time and they will tell you how this is not a good idea. New code = New bugs.

When taking over the next project, take the time to understand someone else’s code. If the software has been running since a long time, they have done a lot of things right. And if after spending time with the code, you are unable to understand how the system works, talk to client about the upsides / downsides of re writing the software.