Sundarrajk's Weblog

Archive for the ‘Software World’ Category

Your Code As a Crime Scene: Use Forensic Techniques to Arrest Defects, Bottlenecks, and Bad Design in Your ProgramsYour Code As a Crime Scene: Use Forensic Techniques to Arrest Defects, Bottlenecks, and Bad Design in Your Programs by Adam Tornhill
My rating: 4 of 5 stars

A very different way of looking at problems in the code. The author suggests various non-traditional means of identifying problems in software development.

Number of times a code has changed, code churn (number of lines added, removed), number of developers working on a single piece of code, code changing together.

The primary requirement for all of this that the version control should be adhered to correctly. Every developer should have a personal login Id and should use it to checkin at regular intervals.

Many of the techniques provided in the book are available in the form the tool from https://github.com/adamtornhill/code-…. These are only starting tools. These need to be coupled with other tools like d3.js https://d3js.org/ to get a good representation of the status of the code.

A must read for all software developers.

View all my reviews

I was at the IBM Software world 2012 at the Renaissance, Powai in Mumbai, India yesterday. The guest speaker was Rahul Dravid. Before the session I was skeptical of what a cricketer who has never been in the corporate would be able to speak to a bunch of people who are steeped in the corporate world of the IT industry. But he surprised me with a his talk. He spoke of three points which helped him in his career and I was left wondering how relevant they are to the corporate world and especially in the IT industry which is where I have been running the rat race for the past 21 years.

The three points he mentioned were:
1. Adapt or fail – Change is inevitable
2. Be the best you can be as an individual in a Team
3. Playing with tailenders (read encourage and coach the young and the not so great players)

Adapt of fail – Change is inevitable
He spoke about how he started playing in the tests and when he met with successes in tests the popularity shifted to the One Dayers where he was considered a liability and was dropped. He said that he took it up as a challenge and learnt to adapt to the One Dayers and history tells he turned out to be pretty good at it. And towards the end of the career the One Dayers morphed into 20-20 and it needed further adapting. The fact that he who was trained to hit only along ground and only in the “V” hit three consecutive sixers in a 20-20 match goes to prove that change is inevitable; one needs to adapt to changes; and if one applies one’s mind, one can adapt.
Nothing can be more apt for the IT industry which is in a constant flux. Technology change practically day to day and the only way to survive is to keep abreast of the changes, learn them and adapt to them.

My Journey and Experience
I started off writing assembly programming in 8085, 8086 and 68000 in the college days. When I joined the industry I was trained in COBOL and C and much to my frustration I ended up in a project which was on IBM mainframe but surprisingly used C, as COBOL was the in-thing in those days on the mainframe. I continued on the project for about 2 and half years before moving into another project in another procedural language PL1 and again on a mainframe. The first one was a pure mainframe project and the second was a client server system in which I worked almost exclusively on the server system. This again lasted for a year and half
In the next set of projects I was on web based projects using CGI and C and this lasted for about year and a half.
For the next project we were in a Client Server mode and used Object Oriented Programming in VB. We were fortunate and got the opportunity to use Interface to a large extent and Inheritance to a lesser extent in the project. The usage of interfaces in this project influenced a lot of my design in the latter period of my career. I was slowly moving from the procedural world to the object oriented world.
With a little bit of exposure to the web world and a not so little, but not so great introduction to the object oriented world I started doing projects in Java and started writing full fledged web applications after about 9 years in the industry. From then on I have been on fully object oriented web applications and most of them in Java. I did dabble around a little with .Net and some more client server for a brief period, but it was not significant. I got hands on only a very little in .Net. All this time I continued to be comfortable with C and helped many a teams with their applications written in C although I never go back to writing anything significant in C myself.

About three four years ago I read about the Functional Paradigm through Groovy. Did a lot of reading around Erlang, Haskell, Scala, Groovy, but so far I haven’t had an official opportunity to work on any project using the functional programming paradigm.
Although the heart is all set to learn the functional paradigm the brain seems to have dulled and I am finding it difficult to make inroads into this paradigm. The lack of opportunity to (read as not being thrown into water to learn swimming) is adding to the frustration.

So like Dravid I have made one switch, but am finding to make the next switch now and I am hoping that it will not lead to my being dropped or having to drop out of this industry. 🙂

So change is inevitable and unless one is ready to adapt to changes one will fall by the side and others will trample over you with nary a thought for the ones who have fallen by the sidelines. One needs to keep reinventing oneself with every major change.

Be the best you can as an individual, while playing in a team
What Dravid said was that even though Cricket is a team game and it is important to be a team player it is equally important to strive for the best as an individual. If taken to an extreme it can lead to a big ego and will push the player to become selfish. But if a player is able to balance this with her responsibilities as a team member it will be a win-win situation for both the team and the individual. Dravid spoke about his stint as a wicket keeper which was not his natural skill. But since the team demanded it of him he became one. As much as he admitted that he is probably nowhere near a good keeper, he was never a bad one and he served the purpose.
This is again something which is very relevant in the IT industry. Most projects require a team and unless the team functions as a whole, while the individuals strive to achieve their best it is unlikely that one would end up delivering a good output.

Although I consider myself to be a good team player, unlike Dravid I cannot claim that I have accepted roles with which I am uncomfortable or I feel I am not adept at. I was and am still OK with playing a role in any section of the SDLC. The one part that I am uncomfortable with is the testing and I have stayed away from it. I consider myself fortunate to have been able to retain my role as a technical player in all the projects all these years. The few times I was asked to play a managerial/administrative role I have refused do take up those roles although the team (or rather the management) demanded that of me.

In this respect I cannot consider myself to be as good as Dravid. I can possibly take consolation in the fact that Dravid never bowled, but then he was never expected to bowl at any point in his career and possibly if he had been asked to he might have that too with enough enthusiasm and with the right spirit and it is likely that he would have succeeded as well as he has in the other roles.

Playing with the tailenders – Coaching the greenhorns
Possibly playing with the tailenders while trying to build a score for the team and for yourself or trying to save a match is possibly one of the biggest challenge that a batsman can face. There are few who can claim to have been successful at this. Dravid says he got inspiration from Steve Waugh who has forged many partnerships with the tailenders like Mc Grath. He said that the biggest boost for a tailender is not that the batsman take a single of the last delivery but it is the fact that the batsman feels confident enough to allow him to face a full over. This was the policy that Steve Waugh adopted. He also took Mc Grath under his wings and encouraged him to improve his batting by giving him chance and forcing him to practice at the nets as a batsman. Dravid spoke of Laxman as one such person who did something similar in the Indian team. The name of one Indian that comes to mind who did this extremely well, in my opinion, is S M H Kirmani. It is not the easiest to build a partnership with the likes of B S Chandrashekar, but Kirmani has done it. Although if one were to watch those matches, it was forged by taking singles on the last ball of the overs.

It is almost the same in the IT industry with so many greenhorns coming into the industry everyday it is sometimes not easy to hand over a task to a greenhorn and sit back and expect it to be done. One needs to take the effort to coach the greenhorns so that they do the right things and counsel them so that they take their careers in the the right direction.

My crib about the Indian IT industry
I said the last bit “is almost the same in the IT industry”. While it is relevant up to a point,  I am not sure it applies beyond a point. One should allow individual to pick up what interests them and what they are good at and help them find a path to grow in the industry using their talents. I am not so sure that everybody having to learn all the skills required in an IT project.

Not everybody would be good at documentation, or management or administration or testing. Does that mean that these should be relegated to the lower rungs of the industry and be left there? No I think everybody has a skill and it is the manager’s responsibility to understand this and ensure that the person is put in a position where she can use her skills and add value to the team. There is no point in asking a person who has little or no management skills to learn it and become a Team Lead or a Module Lead and lead a team. If a person is good at coding or designing they should be allowed to advance their careers along those lines.

Unfortunately this has not been happening in the Indian IT industry. Everybody is expected to get into a management role after a few years and is expected to manage a team, take on revenue goals and earn measurable revenue for the company. Only such people are able to grow in the Indian industry. Technical personnel rarely enjoy the status that the sales personnel, administrators and managers enjoy in the corporate. This has led to an unfortunate situation where people who cannot manager are managing, people who cannot sell are selling and people who can design and code are designing and testing. This is one of the biggest reasons why the quality of output in our industry is very very bad.

I am still awaiting the day when this realization dawns and there is a change. Hoping that it will not turn out to be a pipe dream.


Categories