What does a boom in an industry bring in? It brings in a shortage of talent.

What does shortage of talent bring in? It brings in a great demand for the talent.

What does great demand mean in a shortage of talent? It increases the supply in an inorganic manner and inverse vandalism occurs.

In a country called Noviland, carpentry was an expensive business dictated by undersupply of wood as the wood cutters only had access to axes. This kept carpentry and arts related to wood accessible only to the elite and the academics who studied carpentry. This brought in many skilled and intelligent people to the field who were well respected and well paid, people were committed to workmanship. Even though the forest cover was huge in Noviland, technology of axes led to a limited supply.

A wood cutter’s daughter invents a circular saw that can be driven through the bicycle gears which helps to cut trees at 10 times the pace they were used to. Suddenly the supply of wood increased ten fold and there were not enough carpenters. The demand for carpenters grew way too much that it drove their paychecks very high, prompting people to switch careers. Those who learnt other trades, tools and works now did a simple study of hammer, nails & saw and jumped into the profession.

Maintaining old work was easy as everything was in place and simple maintenance tasks were all required to keep up. New work is were all the hell broke loose. People were now getting furniture that does not last long, wooden bridges collapsed on a few days of exposure to heat and rain. People who wanted to replace their furniture dreaded at the cost of replacement and replacement failures. There were way too many carpenters and finding passionate people was next to impossible. Carpentry became a high paying job where no passion or study was required, all it matters was to know about hammer, nails and saw. Some of them who did exceptionally well were immediately made a manager and given interns to manage thereby killing passionate carpenters in the interest of scale.

Software engineering in a few countries is at this state, merely having a crash course in Java and understanding of few libraries are enough to be called as a programmer. Programming is not just writing code, it is solving a communication problem which involves many aspects. Lots of productivity is lost because of the failure to understand and implement good engineering practices. Some people pick agile as a tool to enhance productivity but do nothing to improve the capability of the developers. There are so many practices which can help us develop and release software in days & weeks but many of us are still stuck at the timescale of months & years because of the ignorance of practices as well as reduced progression on the skill level.

Below is a table which helps us to find where we stand in terms of skills, I can say with confidence that even with 10 years of experience many of us will not rate ourselves proficient. We should let skill and passion dominate engineering fields.

 Table source: http://science.raphael.poss.name/programming-levels.html

 

If you want to walk fast, walk alone; if you want to walk far, walk together

When I talk about pair programming, I am confronted with things like return on investment, efficiency etc. The arguments which come against are with very simple programs and simple domains where it does not matter you pair to program or test drive the code. Beyond the fibonacci and measurement problems there are complex domains which people get involved to solve problems and pair programming helps there.

A good analogy is racing. Racing falls into circuit racing and rallies, if we note that circuit racing like Formula-1 or driving around in circles like in NASCAR has only one driver. These ones are repetitive with relatively very few unknowns and parameters for the driver to take care. The moment you know about the car condition and the track conditions and few laps taken then the driver’s mind is on autopilot. Rally unlike circuit racing has lots of challenges, we just roughly know the route and it could be riddled with lots of surprises and obstacles. There is no way that a driver without a co-driver (navigator) could win the race.

Pair Programming

Programming at work is like rally driving, many of the examples which people take up for classroom sessions are similar to Formula-1 or NASCAR driving; which is the primary reason that most of them fail to see the potential benefits of pair programming. Depending on the nature of the task at hand we should be able to decide if we need work in pairs, group or alone to find a solution to the problem. Having a blanket rule to always program in pairs or avoid pair programming will force us to fit into one of the styles of work which may prove counter productive. Always failures are taken as strong examples than successes and if we fail in choosing the wrong approach, chances are high that the approach itself will be called a failure.

Image courtesy of patrisyu / FreeDigitalPhotos.net

It is around 6:47 am, Novi’s wristband detects that he is about to wake up and it gently vibrates to indicate that it is time to wake up. It wakes him up at the right time and at a natural point in the sleep cycle that he is able to start his day immediately without the grogginess that usually follows an alarm call wake up. He collects data about his physical activity and finds that he has had enough of physical activities last week throughout to maintain a healthy lifestyle and he could afford to skip the exercise today. He switches on the TV just to find that the last month bill wasn’t paid, so he logs into his mobile app to pay the bill and the TV programmes come back to life. He also sets a recurring instruction to pay the bill automatically. A while later his phone alerts that his car pool mates have started and are about to reach his place in 30 minutes, he gets ready on time and reaches office. The office is equipped with a great canteen; it has multiple automated vending machines, automated trash collectors, state of the art coffee machines giving a perfect latte or cappuccino at a press of a button.

All this easy lifestyle stops at home and the cafeteria for Novi. Once he at his desk, the scene changes. There are around 20 developers in the team, they have been trying to integrate their code for the last one week and they had not been able to do so. Meanwhile the previous release had way too many bugs in production and it had to be rolled back which earned lots of bad reputation for the company. Every one in the team were angry, frustrated but still trying very hard to get through their day. People fell sick easily and there were not many people who could read another one’s code to fix bugs. The environments were not consistent in setup; it required long term context and undocumented knowledge to set an environment from ground up. People wished that the day at the office gets over soon so that they could go back home and rest.


CD

Why this difference in lifestyle between personal and work place. Is it possible to have a cool and easy lifestyle at work? Yes it is possible, with some effort; just like how you have to invest in some gadgets and software to make your personal lifestyle cool. That lifestyle which can make our life cool and easy at workplace is “Continuous delivery”. Continuous delivery is a lifestyle choice for software projects, it requires upfront investment in learning the methods, practicing with discipline and using the appropriate tools (software and hardware).

In one of the recent projects we completed, we were having lunch with the product owner. He said  “for around 10 years, a software release meant a tough long week at the office and now things have changed so much that I am able to have lunch peacefully while a release is going on”.