General description of any developer role would expect required skill set, mostly the companies expect java/.net/c/c++.
Most companies even expect the developers to know good language skills and analytically strong. But do we think that should be sufficient for any developer?
Most of us might agree, because we expect developers to code nothing more than that. What are the other skills you might expect from a developer, I might suggest you would be a very good developer if you posses these qualities.
- Never Give up Attitude
- Team player
If I am the hiring manager along with the skills developer posses I would try to probe on these areas. Let me elaborate on why I am thinking these are the key things for developers.
Never Give up Attitude:
Development or writing programs are not as easy as you see from outside. Even a very simple problem like saving data from browser to Database might create some expected errors when you are try. Some errors /exceptions you get might look silly when you see from outside, but when you sleeve up and make your hands dirty then only you will realize the actual problem. As I developed code for more than 10 years I am aware of the issues developer might get into. So you need to try try and try until you succeed. I particularly see this attitude in the candidates I interview.
How you will find out “Never” give up attitude?
You should ask a question / program to developer which is almost impossible to solve in the given time. A very simple way could be give a small project instead of asking a simple prime number program and ask him the class diagram and code with in 15 mins. Which he will not be able to achieve. Then after 15 mins you ask him to show whatever he/she has done. Developer will immediately say I am not done yet, and he already realized that it is going to take more than 1 hr to finish. If you ask him/ her would you like to attempt it if I give you 5-10 mins? Now you will understand the attitude of the developer. If he/she gives up and say no, even after 10 mins I won’t be able to finish they are not ready for attempt itself. I might not take this developer for my team.
This is a very important attribute of a developer, I myself didn’t understand why some code is not working at many instances. So, you need to be very patient when you do programming. This is not the only reason why you need patience. The first and important reason you need patience is to listen and understand the requirements of business. Any software’s aim/ objective is to solve the business problem, If you don’t understand that completely and create a solution for it, it might not solve the problem but it might increase the problem for user.
Every time you write code you have to wait sometime to see your code working. If it is a server side coding then you should have to wait for some time to build the application and wait until it gets deployed to server, then test it and find that your code is not working then you have to redo these steps again 😦 Nowadays there are lot of tools like Maven / Eclipse who made our development process very easy but still you have to repeat these steps as a developers many times as part of your Job.
If you don’t have the patience to repeat these steps, you might not be a fit for this role 😦
How to test patience of the developer?
This is a very interesting question, but it is a very difficult question as well. This is something you can’t figure out in a very short time like interview of 30 mins to 60 mins time. But sometimes you should be able to guess based on the expressions of the developer when you try to ask the same question in many different ways to him / her. Or If you have a better approach please comment on it.
This is an attribute every developer should have intrinsic innovation. I could see nowadays the organizations are very much forcing the developers to come up with innovations, I am not sure how it will work in reality.
Motivating developers to innovate is a good thing. Where as I have seen many ideas not even considered when they reach upper level. I am not saying this is wrong, they might not see the value of this innovation as they have a bigger picture in mind. Sometimes they have to comeback to developers and explain why their ideas are considered to make them understand that bigger picture they have. Other wise this might lead to demotivate developers.
How to identify Innovation ?
Again in a small span it is very difficult to understand and assess this ability of developers. I usually ask developers what is the “NEW” thing you have done in last 3 months apart from doing regular coding. It could be learning new framework, tool or API from development. Some times I get completely different answers like started learning Guitar, French etc. So here there is no right or wrong answer. But this would give you some idea what he /she is doing New in their life, this is a very important thing because developers should be learning new things every day then only they can do some innovative thing.
Lone development is a past, considering the distributed teams globally I think nobody in today’s world would develop a software alone. Yes I agree with you on, sometimes you might have to go to a quite room and do your coding alone. Team play is usually encouraged for developers as they can learn from each other when they work as a team. And understand each other as individuals also very important to work as team. If you see the business perspective of teams is – if any one person’s unavailability should not stop the show.
How to identify a good team player?
This is a tricky one to address in interview, I tried asking questions like If you get stuck in a problem what will you do? Some developers say I will go to senior developer and ask. This might sound like a team player but he/ she should do a though-rough investigation of the problem and find the root cause of it and still if they could not get the solution from searching all possible online sources then you should approach senior developer. Then you might ask about what you don’t expect from your team members. For this also I got some very different answers from developers for eg, unfriendly, non supportive etc. you might have to probe them to get to what exactly you want to hear as these are very vague answers.
When you hire a developer you might even think of many more things than these four but I feel these are the most important along with the technical abilities of any developer.