Self Improvement 2.0 and the Role of Software

It used to be that the term "Self Improvement" meant reading a book about eating better, exercising more, or controlling anger (maybe that's self help?) In any case, it was usually confined to you reading, watching, or listening to someone else tell you what you should probably do (most likely without much research behind it), and then you being left to your own devices to hopefully muster the self motivation to actually practice something enough to improve.

In Outliers, Malcom Gladwell asserts that the key to success in a field is to spend 10,000 hours practicing it. Whether that number is accurate or not, there's no arguing the fact that practice leads to improvement and that becoming proficient at something usually involves significant effort and time commitment.

There's also no arguing that self motivation is hard (so are citations and statistics). Many people procrastinate and delay things that they have to do, and even things that they want to do, especially if they believe it'll be difficult - like work . Fortunately, there's something we can do to help. Given a textbook, would the average child read it, practice the material, and master the skill? No. This is why we have schools. Teachers (ideally) interact with children and (combined with grades and rules) provide external motivation to learn and practice.

If all goes well at a young age, kids grow up to be hungry for knowledge. By middle and high school they begin seeking out more information on the topics that interest them and challenge them. But what happens when college hits? The workloads double or triple over anything the kids dealt with in high school, and time and motivation become and issue again, even for the most driven young adults. The effort we exert becomes limited to our obligations - classes. After that, our jobs. Then, it's up to us to improve on our own.

A New Idea

People seek self improvement in many ways - fitness, personality changes (being nicer, controlling anger), health (dieting, quitting smoking), education (learning a new language, learning any new arbitrary skill, reading more), finance (investing, saving, planning for the future). Technology is revolutionizing all of these. We now have supercomputers in our pockets with powerful software that is changing self improvement. I believe it's come in two waves.

Track Everything

Many people have very mixed opinions on tracking. Over analysis of details often leads to missing the fundamental goal (like in counting calories, for example). Either way, there are countless mobile apps and websites that allow people to track everything from their daily steps to calories consumed and calories burnt, to money spent, miles driven, cigarettes not-smoked, money saved, daily weight, pages read, and more. People use these as motivators to move up or down a usually arbitrary scale to get better results.

It's important to note that a lot of these work for a lot of people - but they aren't 100% successful, or any kind of guarantee. For some people, they don't work at all. For others, they work, as long as the user remembers to enter the relevant data every day (or every meal, or every week), which becomes quite the chore, and often leads to failure. These tracking apps and sites are tools that bring a better user experience to something people could have always done with pen and paper. The lower barrier to entry with tracking is the key.

Another use of tracking is gamification. Sites pit users against each other to see who can run the most miles, read the most books, or lose the most weight. Again - sometimes it works, but not always.


Interaction as a tool to improvement isn't new. People go to school, people go to exercise classes, people go to support groups for addiction or depression, people make teams and practice a sport, people join together and enter competitions. These things get people together in the same room, field, or court to practice and improve - and they work.

But, just like tracking, how can we lower the barrier to entry with interaction? One fundamental tool has been the Internet. The Internet has revolutionized communication. Blogs spread information between people in a way that was only previously rivaled by speakers at conferences - structured, informed, detailed information, presented logically, and planned. Online encyclopedias and databases make huge amounts of data available for people to consume and learn from. It gave us Twitter and Facebook and instant chat. We can network socially.

But still - using these things to improve in some way requires self motivation: initiating complex conversations on social media, writing or reading blog posts on your own, parsing and reading databases and encyclopedias, watching TED Talks and educational youtube videos. If you couldn't motivate yourself, you can turn to interaction on social media. There are some people who provide meaningful, improving interaction, but overall - it's hard. People have to be interested in the same things at the same time, and both have the interest in actually interacting at the same time.

So what can we do to make interaction instant and gratifying?


In an age where web and mobile technologies are evolving faster than ever, brilliant people are creating revolutionary software that brings new kinds of interaction to users. Interactive software that engages users and drives use isn't new, though. Video games have existed for years, engaging players for hours or days on end to think, decide, solve puzzles, and react quickly. Now, an emerging goal is to bring those benefits to self improvement. I don't mean "gamification of learning" even though there is some overlap. Succinctly: the goal is to provide a way for users to interact with software in a way that they can engage, teach, and improve - at the user's pace, on her time, in the subjects she wants, cheaply.

Cost is important. Software for kids to "learn" in school has traditionally been clunky and expensive, and often not providing much benefit (I personally completed US History in 2 weeks on a computer in high school, and I can assure you that I remember very little, and history is my worst subject. This also cost the school a significant amount). Users need to be able to freely or cheaply engage, because this lowers the barrier to entry. Rosetta Stone language learning software is great - but it's expensive. (I don't want to get into a debate about the cost of software - as a developer I believe in its value and know the work developers put into it should be rewarded. However, I also believe in the free sharing of information, and a way to lower the cost is to crowd-source the content creation - something that a few of the sites I'll mention below do very well.)

Well written lesson plans provide students with meaningful information, the opportunity to ask for more information, adequate practice, and challenging, meaningful tasks for practice. But they take time to deliver, and a disconnect during the practice and assessment. Well written software can provide tasks and assessments in real time, with valuable feedback. I want to share some examples of these, that I use. They provide immediate interaction, valuable information and skills practice, and have a lower barrier to entry (learning controls, set up, cost).


DuoLingo is an amazing free and effective language learning tool. It has web and mobile interfaces, intuitive controls and the ability to move at your own pace, as well as elements of gamification. I use the app regularly to practice Spanish (my wife is fluent and I hope for my future children to be, too), and I'm able to get instant feedback on my progress - provided in lesson blocks in a topic tree.


Codecademy allows users to both learn and teach (by creating lessons) programming. The coding environments are emulated in the web browser with shortcuts and all relevant tools available instantly. They remove the barrier to entry of IDEs and read-along tutorials, by making interactive, code-along tutorials that actually execute and validate your code for correctness. This is an incredible breakthrough in programming education.


Learn Git Branching is in the same vein as Codecademy, but is specific to a concept combined with code in a tool called Git. It teaches both the abstract concepts of branching with the concrete commands for using them in an interactive, validated interface. This is an incredible tool.

GitHub branching