Some Simple things to be an Outlier Developer

Cory House Outlier developer course provided covered the key items which are required to become an outlier developer.

In this post, I want to share with you all some simple things which I have learntover a period of time in my career and which I felt makes sense as an addon to becoming an outlier.

First things First

All of us have aspirations, dreams and also to some extent greed due to lack of knowledge. We really confuse between wish and need and chase up lot of unwanted items only to find that the journey was not worth it when we finally got the result.

Becoming an outlier developer requires a huge amount of effort, motivation and discipline. The intense focus on some of the areas means that we end up focusing less on some of the other key areas in life. There will be failures and personal set backs. In moments like them, we need to take a though decision and really focus on “First things First”. We need to do what is right under that circumstance. That may mean for some time taking a back seat from our main focus area. We should know when to stop when there is no benefit in putting extra effort or we know that we need other things at that point than being an outlier developer.

A key thing is to have a supporting family, a select network of friends whom we can lean upon and above all good spiritual support so that we can weather the rough storms we may face in life.

Having the above things first makes sure we enjoy our process of becoming an outlier developer better.

Having a leaning plan and documenting results

As we get older for want of time and the daily pressures, we will not be able to spend more time and intense effort on our learning journey. Under such circumstances we need to
have a flexible plan. It is also important that we takes notes of what we learn and revise it often.

With the growth in digital tools we spend less time taking manual notes. I feel that manual note taking process is very important and we should also have this in parallel to digital note taking. Drawing diagrams and looking at things from different view point and trying to related what we learn to things we already know makes sure that we retain the information we learn better.

I also think we should have a quarterly or annual learning outcome report where we document our key learning in our personal and on the job learning. Business confidential information can be left off but the key lessons in generic terms can be share with other.

A very good example of learning outcome report is from the blog of Rama Kanneganti. Though his About me page looks simple and highlights less of his technical accomplishments, he is one of the best thought leader, I have seen among IT architects.

In his blog article 2014 a Personal technology journey, he has shared key learning outcomes across various technologies. This is one a good way to document our learning to be shared with our friends and colleagues.

In fact we can even prepare a quarterly learning report to document our learning outcomes.

Rama also has authored many interesting articles which are a good read. What does it take to become an architect is a good post and an essential read for any architect.

Looking at the big picture

Today’s work life is in some cases chaotic and filled with conflicts. There will be frustrating times and we need to handle some sticky stakeholders. There arises a need to step back, not lose sight of the big picture handle things tactfully.

We must see the role we play and its importance to the big picture. Looking at our role from a larger perspective helps us to handle many of the strifes we face in day to day life much better.

Blogging about how our work impacts the industry we work on is also another way to enlarge our perspective.

Simple advises for being better programmer

There are a lot of articles on the web on how to be better programmer. Though a lot of articles lack originality, there are really some good posts from people famous and really simple. I have been bookmarking them for the past 4-5 years and I maintain a list of really wonderful posts in this lisly list. We can follow what feels best for us.

Read widely

It is also important that we read on other non technical areas like listening skills, lateral thinking, creativity, visual problem solving, art, history, etc.

Reading widely keeps our minds open and keeps our interests alive.

Why I like Charles Simonyi

Charles Simonyi is one the top programmers who was the key brain behind many of popular Microsoft Products. An excellent interview of Charles Simonyi is present in the book Programmers at work by Susan Lammers. Some of the interview of the book are also online at The interview with Charles Simonyi is also present at the above site.

The following are the key lessons I learned from the interview.

Have a mentor

During his days in Hungary, Charles Simonyi has had the advantage to learn about many arithmetic tricks from an engineer who was a mathematical genius.

Read Good programs written by others

The Danish computer on which Charles used to work has the worlds best Algol compiler. It was written by Peter Naur and it was memorized by Charles Simonyi. As he had a deep understanding of the program he was able to use it to many related problems in his later programming.

Save Money

Simonyi saved money during the period he was working in Denmark for around one and half years and later travelled to US to study at the University of California at Berkeley. He just barely survived doing some programming jobs at the lab there.

Build tools for others

While at Berkeley, Simonyi wrote a SNOBOL compiler which was liked by all. Butler Lampson liked it very much and this was instrumental in their working together when Berkeley Computer Corporation started and later at Xerox Parc.

Look at problems in a different way

We have to make the complex look simple. Simonyi used the backward scanning process in the Algol compiler on Danish computer when he rewrote the SNOBOL compiler. Just by looking at a problem in a new way, what formerly might have been rather difficult to solve becomes easy to solve.

Programming is art, science and skill

Programming is a complex skill, very much like tool making that required a lot of care. It takes a healthy dose of all three – art, science and skill to get some great results.

Programming Process

Imagining is the first step in programming. We have to visualize in our mind what we need to do and the data structures. Once this is clear, programming is just a manual process. Knowledge of the best algorithms is the science, imagining of the structures is the art and implementing the algorithm using efficient code is the trade or skill.

Best way to supervise

By setting personal example and frequent code reviews.

Mental Models

Concentration and Visualization are very important. When he was young Simonyi could easily visualize a castle with 20 rooms and 10 different object is each room. This shows is huge mental span. Having a mind with rich mental models is key to programming

How to solve it

The book How to solve it by George Polya is a recommended read to make programmers better at problem solving.

Keep a closed mouth

Top programmers when they open their mouth know what they are talking about.

First post on this blog

Hello World,

This is my first post on this blog. For a long time in my life I have had a lot of interesting thoughts but I have no been able to take action on them or share them with others. Now I have learned that sharing and thoughts, learnings and experiences with others is a great way to be happy and keep our mind young.

So I will writing about me learning about technology, lessons learned from my career and life, spirituality, book reviews and so on.

It is my hope that people who visit my blog find something useful for them and makes them happy.