Tuesday, October 13, 2009

What all makes a software engineer

Yesterday night I could not sleep  much, I was thinking about the following

1.       what all things will make you a software engineer

2.       but  more important than that, what are the things that will take you a notch up

There is a rising conflict between the marketing people and the technical RnD in a company, but the best marketing guy may not be technically the best but trust he could handle some technical jobs himself, his acumen, his hunger does beat the rest, and same goes for the best RnD guy, this guy is a doer to, and though there is no serious book written about this small nuances that senior management check, since everyone has a secret formula, it is always to keep the best technical and best the marketing guy happy. The rest are vegetables, as they speak in a hush hush corporate board room meeting,

 

I sometimes find my senior bosses equally adept  at getting things done from us as a marketing or sales team senior guy could do but  there is s catch , the corporate bosses would shower everything on the guy who finally is on the field and  can make a product sell, only then does a RnD guy have a chance to get a fat pay check. It all depends on this last link in the chain , but the very vital closure chain,

 

well, the RnD person has his own fights as well, but being in a technical world, especially software,you are to be fighting with binary only, at max the worst thing could be a bug that can be found out, and your worst constraints are time and nothing else, the smarter engineer would do the same job much quicker than that. We have all the things in our hands, just there to do it, but a sales guy is fighting , nature, fighting , human minds, he does not know, what action of his, what, word or statement of his can make or break a deal , and there is technical knowhow that has to go with it, and thus inspite of all what RnD say , I salute these Sales guys, once you know the trick in selling a thing, the days in poverty for you are numbered.  ( Ethically a good sales man should not prove his merit by selling the worst stuff in the market, that just keeps his afloat for a month or so, the good Sales guys thus requires we, the rnd to do his bit too, and make a good product,

 

 

After all that discussion , now coming back to the points that I thought of yesterday are the following, step by step an RnD has to be good,

Problem Statement: You are afraid that if you go to a new job, they will fire you soon since you could not learn as soon as possible, well for you though there is one book to read always, “Stay hungry , stay foolish”

 

Stay foolish, that I follow to the word , to the letters precision to be correct , or how else do you expect me to be blogging , hale and hearty at 1:04 PM in the afternoon on Tuesday , when I should be working .

1.       Reading and comprehension skills

well if you have that, that is a an added thing, suppose you are learning about a new debugger, you have the manual that is 190 pages, but you have to choose the important pages, go through them fast enough so that you can start working on the thing asap, since they are just tools for your final result , and you cannot spend time on that. You have read some stuff, some new thing, some new document, some new training and get going with your work, since you cannot put that in your productivity chart and say I was reading this and that

2.        Memory

Now that you have read your stuff, you got to have the memory to take you to the next level, obviously you have the net handy with you and n number of books, but is sometime very difficult to be context swapping and going to other material that is not necessary  or may be searcing in a loop, where you just seem to be forgetting a small bit but have to go through the whole thing again to find it,  I have a good memory but still always keep forgetting stuff that should be handy , for me, though I always know the way to get to the data and that way I do come up early with solutions but I am not happy with the fact that the amount of time I spend in doing those is just simply unacceptable, since while debugging an issue or writing a new piece of code that has to have backward compatibility or something that will need some knowledge of the context, one needs to remember stuff. Memory is something that can be jogged , that can be strengthened, I don’t about the rest  , but I strongly feel that some are gifted in terms of memory and some are mere trying to get there,and they do it all their lives, only to succumb. But still this is a must

3.       Ability to use the above knowledge

You have understood everything that you have read, you remember the stuff, the small small commands, the tips and tricks, but there is nothing that beats on the job training . Very few people with straight bookish knowledge can excel while on the job, While you are on your desk  , you need to be able to use all that you have acquired , learnt and used in the last few years, days, hours or minutes, immediately, have the courage, obviously this is software and you don’t break anything. Today with source code control systems and monitoring done from all levels, backups getting made, all you can actually loose is time, so all you got to do is come out this fear and try , lets spend some time, and make use of what we have learnt, A good software engineer will always come with some kind of alternative, some kind of plan that he got while seeing something else, He might be on a bus and see someone doing something peculiar, put that to his ideas and see that whether it works. This mental mathematics happen  one can see the clues that hang around all around

4.       Logical analysis beyond just using it

You may be smart enough  and having learnt everything, using it carefully and achieving your goals for a long time, but you don’t see any growth anywhere, You don’t see yourself, doing much other that just finishing you stuff. Yes to be a software engineer, it is not a clerical job an having done all the things above you are not supposed to be a paper pusher, you ought to do the things that are show above . If you are still stuck in one of those levels above, please don’t go further reading , you may confuse your way of working now.  Read it only if you desire to be amongst the best. Well, doing the 9-5 job ion software is using your brain always, so to be smarter you got use it differently too. I put the clues thing in the earlier point itself,but here it is a must, It is mandatory that you are can handle any problem now in this software, you are now a master. It is like this, there are some people who given 1 whole day will finish their exam papers, but they are only given 2 hours and in that they are not able to make it. But they have it in them to finish it.  Now the only thing that can take you forward is your ability to see the things that are inherent and invisible to the eyes, thigns that will increase the performance , things that will make it customer friendly.

5.       Vision from the top

it is more like the movie a view from the top, You have the capacity to look at things differently, but that ill keep you as a jewel engineer, Your management will think that there is one guy sitting here, whom I will call upon  the tough days, He will be a good member of the team that takes the whole thing forward. You can become like the courageous and brave soldier and on whom the software parts can rely, You can see your component from the top give good estimates, you can feel the errors and bugs at levels that no one else will be able to comprehend, at this level you can remain like this for ever or go ahead, To go ahead you need the next thing in the basket for sure

6.       Patience

As we speak  this point, and you can come upto this reading this article. I am sure that you are a patient guy. Many would browse through this and say that well, I know this and that. I work with some very smart people and all that I have learnt in the past from them is that no matter how smart you are, no matter how difficult the problem is, you got to be patient with software, Good that new tool development happens mainly upon the frameworks that are already there in the market and not upon some developing platforms. Still GNU tools are getting upgraded, but the basic framework is done and many able engineers can do wonders with all that we have now. And with all these if you are not patient, whether in management or good software you will never be able to see beyond things that I have written.  At thing point lies the fundamental difference between a good engineer and a almost there engineer

7.       Consistency

You have been doing almost all the things correctly, you are smart, and can get things done quickly , sometimes slowly, you are patient and can see a product the way you are looking through a clear piece of glass. You can feel it, etc etc, but you are not the man to trust on , if  month after month, or year after year, Actually it should be problem after problem you have fended well. Always came up with sound explanations, always found the root cause. Remember with software , the oldest and the most legacy thing is just 20 years or so old. Many even newer than that, think about people in the administration, fighting things that are imbibed in the human mind, and for all of us in the software engineering community ,all we have to do is clean that bug. Sometimes the customer is happy using it so much that, he has forgotten that it is a bug. Same like slum dwellers who are satisfied staying there and will never move from there . At this moment you have got a name to defend, you are a responsible guy. The management will rely on you now.  You are now forfront guy for the important projects

8.       Reliability

The reason I put reliability post consistency , is one you are predictable, once you have proved yourself, it is now known that this person can do it. He knows how to do it, but there is a just a predictability about him, we still don’t know,whether I can give a commitment to some one depending on what this person says. AT this moment you are not at all just writing code, you are at par with any other senior person in another business group, in another world may be, but the criteria is same all around the world, You got to be reliable. Your words should have the backing of all that you have tested, should have the experience behind it. It is like putting those words in to perspective “ put experience to your years and not years to your experience “ and once you have done that, you are now supposed to be enjoying the benefits of it.

9.       Management

Some come to management much prior to this. For long enough  now it was a common perception atleast in India that once you are 5-6 years experienced all you

need to do is ask and there will position for you, that was because all the companies were in the startup mode and none of them had enough top management to look after the expanding business. There was attrition and lot of vacuum was left here and there, and people could go up, Number of software enegineers was less and one could just ask for what he or she needed. Today you have a surplus of engineers with everyone wanting to become one, we need to be careful about what we do today , you got be specialized, you got to be the best, Today if 10 lakh engineers start their journey do you expect 10 years down the line all of them to be managers, no , some will go totally the other way, they might eventually loose the game to the new comers, stop thinking about the fact that they were not in the race in any batch. Well, this point is not for those, it is for those who will fight and get it to the management, at this point, today, you cannot be just a peoples manager, you have to be a good software engineer with all the points that I mentioned above, only then you will be trusted, only then you can be held responsible, at this point you can be asked to report about people below you and they will look up to you for better management with sound decisions. You will be pressed down and pushed up , for quality , for administration, At this moment you got to be fit enough to have all the above things, energetic enough to finish your work, delegate stuff, not micromanage and get the reports that are vital for the next step. There is a lot to write, but since it is a good software engineer that I am talking about , management from the software engineer requires this next thing more than anything else

10.    Ability to handle smart guys

IT is almost like working with 10 PhD scholars, it is like looking after their egos, their ways of thinking, many a times I find people saying that I am tired of the way I have to explain my manager every small thing, I have to explain to him that this is better, and that is not and this is dynamic and that is not. Actually, a good manager how has proved himself day in and ay out will never have this traits of being jealous or will not be lousy enough to stop a good idea from floating up since he is not seeing the greater good . Many ideas go down the drain only because a manager did not approve it on time, It is like a good author s manuscript getting returned everytime he tried to send it to some publisher. I know that it sounds no different but a good software engineer knows that he is in for a challenge. He himself has seen great managers and it is high time that he too becomes lie one, But if you  don’t have it, you got to develop it. There are some managers that I have seen who will get on the field and do the job sometimes only to show to you yes that can be done and I am the best engineer first and then a manager, SO at times while handling good guys you got to be the best

11.    Seeing the next manager

                you have done all the things that are there above, but inspite of all the these you got to go the next level, at this point, start understanding the business as a whole, start seeing the things that are totally visible to the top but invisible to the people in the bottom, for that, get some people who will work as you and sometimes you can rely on the, Get that guy, let him go through the points that you have gone through. Sometimes you might not meet that person and it will be an endless wait, but once you have met that one, it is like religion for you get that guy with you. Show him the way to your seat and once you have enough free time to think ,you will be seeing the next big things automatically,. You are no more a software coder, you are no more handling the good guys yourself, just expecting things to be done. at max you look at some data and analyze some upcoming red points, some milestone. And you now you need to make the next step, choose a junior engineer and make some new enhancements, think about a new technology,  file a patent if at all possible ,only then do you become the next guy.

12.   Understading business like a business man does

This is pretty self explanatory , and there is nothing smart about the statement itself, but to do that, you got to admit that you need to be  a businessman first and then the rest.There are many who rise through other verticals and reach here, but to be  real VP or a CEO you got to be the  business, All the above things mentioned, all the above things told, finally you have to be the salesman, you got to be the best.

 

 

Other than these ,I always think, being fit, staying healthy, sleeping on time , waking up early, eating light food and thinking positively are all the major things that will make you do the above easily. You will just be jogging through your life you will really take a jog once in a while early morning.  Trust me, all my senior managers, all the successful people I know, wake up early, eat light food and have endless stamina

 

 

 

No comments: