Skip to main content

Hiring a Super Programmer?

When it comes to programming, I noticed most of the super programmers share similar attitude and thought process. I started identifying similarities whenever I took interviews.

After meeting 3000+  potential candidates (thanks to all my previous companies choosing me as interviewer), I dared to have a quick points to spot a 'Super Programmer' from the pool of programmers.

When I shared these points with my colleagues, they found it useful during their interviews.

Please note

  • These points are strictly valid for 'Rock Star Programmers' only. If you apply these observations to a good programmer, you may loose him. 
  • I always don't follow these points very strictly in interviews as there will be many other aspects to consider, However these can just be used as indicative pointers if you feel good. 

So here it goes,
  • They may be little nervous in the beginning. When you ask them about their interesting project, their eyes glow and for a moment they just forget where they are and completely immerse in explaining the problem, how much they were amazed, their explorations and implementations.
  • They have habit of knowing all latest happenings in their interested technical area. That means they are closely following beta and release candidates as well.
  • They read lot of blog posts, tech articles and most of the time own a technical blog. They have good bunch of posts on technical articles or pointers in their blog.
  • Even if they don't know the answer, they logically think and almost get through the problem. Their hands don't shiver when writing code. No matter even if the syntax is wrong.
  • They always try to generalize the approach and try to make it reusable.
  • They are fanatic about browsing the project code-base and finding out what is best in it. If something is badly designed or written, it disturbs them and try to revamp/fix it if permitted. They will be proactive in doing it (provided such an opportunity is given).
  • They have earned good reputation points in technical forums. That is more important than having bunch of certifications.
  • Their resume contains bunch of memory profiling, performance profiling, code review tools and many popular open source frameworks used (like Caliburn..etc) in their project and few of those is introduced in their company projects because of them.
  • Ask which piece of code in their previous projects liked a lot and which was not. It indirectly tells us their level of understanding about technology.
  • Observe your conversation with them. As you know, the developers conversation context is bit different. Are they catching it quickly? your such conversation should go with them smoothly. For example, I usually ask what version of Dotnet you are using and many reply, its 2010 or 2008! First point, They are best Visual Studio.Net IDE users than Dotnet programmers. Second, they are not understanding the context. I have asked the version of Dotnet framework not the IDE. If you are explaining too many things during the discussion, then there is a problem.
  • When you give them a paper and pen and ask to write a program, check how much space they waste. 2 things to notice,
  1. If they fill A4 sheet page to write 2 small programs (reverse a string and looping through ArrayList having different type of objects) maintaining bigger inline space, then they can't think more on efficient usage of computing resources also. Even if they think, it may be their simple programming habit but not something coming out from geeky mind. This is more inspired from 'you will work the way you really are'.
  2. With minimum inline spacing, even if they fill A4 sheet writing lot of code (without striking unused ones) then, they are dangerous programmers. They can explain the logic on the same day it is written and anytime in future you need to pray for God to know about the hidden logic.
  3. Why there should be a 3rd point when I said only 2.
  • Ask them very basic questions (If you have to implement AJAX response/request what objects do you use in Javascript) and see how detailed and thoughtful answer they give. Whats more interesting is how deep they delve and present different aspects of it.
  • They have either contributed to one of open source projects (on CodePlex, SourceForge,gitHub..etc) or have hosted their own.
  • They have published some articles on technical article sites (like CodeProject...etc)
  • Majority of their posts on twitter or facebook speaks about their serious technical explorations than 'I ate this', 'been here..' or sharing funny cat videos.
  • They have list of achievements in the resume and may not be a certified professional. 
No matter even if candidate don't stand true for all above points. Most of the time we believe our senses and take the decision (and that is usually proved right.)

Well, this is my list. Do you have some quick points? Feel free to share here.

Thanks for reading!



Comments

vikas hebbar said…
The blogs and help given are nice.Keep posting.All the best
Thanks Vikas. Glad that you enjoyed reading.
Great strategy to differentiate between programmers, moreover this I am glad to see that someone is there who cares about all other parameters as well to be a rockstar programmers. Loved this part of first point it is so real :

"When you ask them about their interesting project, their eyes glow and for a moment they just forget where they are and completely immerse in explaining the problem, how much they were amazed, their explorations and implementations"

Popular posts from this blog

Windows forgets visual effects settings on log-out or reboot for non-administrator account

Steps given here worked for me with Windows 7 SP1. Hope you may find it useful.

Start -> Run-> cmd (press enter) -> type SystemPropertiesPerformance.exeThis gets you the "System Properties" window, go to  Advanced tab -> Performance Settings -> Visual Effects tab and choose "Adjust for best performance" and click OK. Note: While doing all these UAC doesn't show-up as all changes you are doing will be saved in your logged-in profile account.

Reference material used: http://msdn.microsoft.com/en-us/library/ee330866.aspx

Feel free to comment your findings.

Hangfire with In-Memory Storage (ASP.Net MVC 4/5)

This is in continuation to my previous post: Hangfire with ASP.Net MVC : Simplest Code To Start with.

In this post we will see how Hangfire can be configured without the SQL Server as its backend for job scheduling, instead, manage all in-memory

1) Create ASP.Net MVC 4/5 Projects
2) in web.config file
3) Run Install-Package HangFire -Version 1.6.17 or visit here for latest version: https://www.nuget.org/packages/Hangfire/1.6.17
3) Run Install-Package Hangfire.MemoryStorage -Version 1.5.2 or visit here for latest version https://www.nuget.org/packages/Hangfire.MemoryStorage/
4) I am simply updating a table with a primary key (auto incremented), and string field "StampTime" with current date and time.
5) Open Global.asax.cs and paste below shown code.
6) Run the app and check the database.


using Hangfire; using Hangfire.Common; using Hangfire.MemoryStorage; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Web; using…

Hangfire with ASP.Net MVC : Simplest Code To Start with

It seems many are looking for using Hangfire with ASP.Net MVC 4 / 5+ SQL Server here is the simplest code example for you to start quick.

I am using Visual Studio 2017 Community Edition

1) Create ASP.Net MVC 4/5 Projects
2) <add key="owin:AutomaticAppStartup" value="false" /> in web.config file
3)Run Install-Package HangFire -Version 1.6.17 or visit here for latest version: https://www.nuget.org/packages/Hangfire/1.6.17
4) From the sample code, make sure you create database in SQL Server DB and update the connection string.
5) I am simply updating a table with a primary key (auto incremented), and string field "StampTime" with current date and time.
6) Open Global.asax.cs and put this code.
7) Run the app and check the database.

The example code also showcase a hack on how to run jobs with few seconds interval.

namespace HangFireDemo { publicstaticclassMyTasks { publicstaticasync Task<int> MinuteTick() { awa…