Tuesday 18 October 2016

MISSING IN IT: Personality before skills

When one looks to advertisement of open positions or CVs of applicants in the IT-industry, what one usually finds is that they are heavily populated by list of programming languages and libraries to software products from databases to application servers. This doesn’t change much in job interviews, in worst case interviewers rely on short interview with formal test to find out applicants’ level of remember even smallest details of selected technologies while in best case they discuss on what is applicants opinion and specific experience of certain technology in question. Technical skills are important, no question about it, but there is something much more important than that, the question of how well does the job match the personality of the applicant.
Now what do I mean when I say personality of the applicant? Let me address this the other way, let me ask you, what kind of personality a person should have if his or her task would be to…
  1. Develop a new software system, or
  2. Maintain and redevelop a software system
Are there any personality straits that would be more suited for one task instead of another? In my opinion a person who develops a new system should be stronger atideation while person maintaining and redeveloping should be more analytical. Maybe also a person developing new software should also be more positive as developing something new always includes a lot of unknown questions and risks that the developer just has to trust that he or she can overcome them. Also maybe a person maintaining software should be more context aware as any change to the function of system can start multiple cause-effect cycles that need to be understood very well to prevent any unwanted side-effects appearing and possibly causing major harm.
Of course a skilled developer can both develop a new software system and maintain an old one, however when one’s personal straits match with demands of the task in hand, then we right person for the right job leading to higher work motivation, higher work moral and enhanced work satisfaction, this in return leads to better results. From my own personal experience both as developer and as team lead, I have noted the importance of matching work with personality. For example before I understood the importance of matching work with personal tasks, I thought that generally maintenance and bug hunting work is tedious and dull, and that only interesting and fun work involves new development. I was completely wrong about this! For me maintenance work was tedious, but some of my colleagues shined and enjoyed maintaining systems, vice versa I also noted that for some people innovating and generating new code was the most horrifying task that they could ever think of.
What we in the IT-industry should start to focus more is to ask what type of persons we are, what kind of personal straits we have, and what kind of work we are best suited for. If we keep just matching work and people based on solely on technical skills, then we will keep wondering why we sometimes people become dissatisfied and lose their work morale. The way for better future is with valuing personal straights and trying to understand what works suites best different persons.
P.S. I am not in business of advertising throe my writings, there are many ways to try and evaluate one’s personal straits and strengths. One of the best ways that I know is using self-evaluation test from Gallup called Strengths Finder 2.0. I and many of my friends and colleagues have used it successfully on finding the words describe who they are and by doing so have succeeded on better understanding to what they are suited and where their strengths lie. No matter how people evaluate what are their personal strengths, the most important idea to remember is to take count of personality and personal  strengths when matching people with work.

Wednesday 12 October 2016

Hardware is cheap, people are not

Have you ever struggled with an IT-system that is operating at the limit of its capacity? I have. Have you ever noted that people instead of asking how to raise capacity, try to squeeze out everything they can from the current system? I have. I don't know exactly why we do so. Maybe people fear asking or making decision to invest into new equipment. Maybe people feel that enough is enough, that the system should work with the equipment it has. I don't know exactly what is the reason for us trying to save up, but what I know from my experience is that trying to squeeze up usually ends up costing more.
Let me give some examples. I was once working with an telecom system that was very database intensive. We tried to optimize the database, we fixed bugs that were causing reruns, we rewrote parts of the software, but at the end of the day after months of man power was used, the final fix was to replace systems hard drives with SSD drives, and like magic, our problems were over. Another time I was leading re-development of an retail system that was suffering of horrible slowness, while at the end of day the software had to be rewritten completely, we gave artificial breath to the system by just upgrading hardware, which made the system actually be usable again for users.
Of course not always problems can be solved by just investing into hardware. Many times especially with large scale systems it is very important to keep the code clean and optimized. However many enterprise systems that we rely our business are of limited use, in those cases people should not automatically go and try to save up, but they should approach the problem holistically and look on different ways to get to the point where they want to be.