As a IT guy, a Software Developer, a Microsoft technologies developer (from C++ to .NET ) with over 24 years development history, I still have to face to some awkward (embarrassed ? ) situations such as job interviews. I left school so many years, but some interviews still needed me to give correct answers for some basic computer and programming acknowledges, such as: What is C# ? What features does OO have ? or I was asked for writing code to give a good performance program to implement a scanning or searching case based on stack or queue ….
Not a single time I mentioned that kind of interview way was not fair to an experienced software developer.
Those interview way are not fair to an experienced but left school many years. It could be due to the following reasons:
1: How could I remember all basic programming acknowledge ? Especially for some basic stuff but normally they have very few chances to be used in most of real applications? For example, most of my working history were not touch Advanced Mathematics because there was no an employer and business needed me to write Advanced Mathematics code, what I could use might load existed Advanced Mathematics library directly, this was also how and what most of software developers were working, and how and what they are working now;
2: How could I compete with new graduated university students for writing or implementing a basic data structure or algorithms ? They learnt most of basic development acknowledges and they have not forgotten most of them, those acknowledges are still fresh in their brain now, their home works or projects might be just the same questions as my interview questions. For example the simple program which asked for a binary searching from an integer array could be a popular home works or a stand teaching course for computer science learning, students can remember what the good performance code training is, but an experienced software developer might not remember what the best algorithms is and how the algorithms is exactly; What I learnt data structure was based on Pascal language in University, but most of students are learning data structure using C++, C# or Java currently, you know my interview questions were mostly needing me to writing C# or C++ to answer testing questions;
3: How many real cases, especially in current .NET applications, still need developers to write a list searching code with best performance by himself ? For me, I just used the code like the “List.Find”. Microsoft .NET Framework and C# language have considered how to search from a list and get good performance, what a software developer should do is focusing on the business logic, how to implement an application using right technologies, coding language based on customer’s requirement, he/she does not have to waste time on some basic algorithms such as how to searching a list, the real world of software development is really very different from a school studying, so does it make sense which those hire managers or teams are still test candidates basic concepts and coding ?
4: When a software developer took real jobs, there were different businesses and different requirements needed different development solutions and technologies, There have not been an application needed all software technologies, most of them just needed partials technologies, for example, one of my real application needed Windows Forms or WPF, I could not add ASP.NET on it since it was just a desktop application, So in some years I might only developed and maintained 1 or 2 applications with limited technologies for an employer, so how could I became an expert to know all other technologies ? For me, what I can do is switching faster between technologies as long as those technologies are in .NET range, or the technologies are similar like switch from C# to Java, I do not need to spend long time to learn;
5: As IT persons, we know the IT technologies are keeping changes, new technologies are replacing old technologies all the time, so how an outdated interview test can guarantee to find a “perfect” person to know the new technologies which might have not come yet or have not become to be popular ?
6: The online searching has already become a part of our life, when we have problem or question, we can always use searching services to get better or best answers. I don’t think there are many employers rejects the internet and force their R&D teams to leave away internet during working, most of employers can provide internet environment to help daily works now; With current searching service, a person who did not learned computer science in University could be a programmer by self-study, if I forget to write a best binary searching in C#, I can search, the interviewing online test might finally find a perfect candidate who could finish the binary searching well, but can you guarantee the candidate can give you a perfect Big Data or Cloud Computing implement next time ? Big Data and Cloud Computing are new to most of current software developers, most of us need to self-learning using online searching;
What could be reasonable interview technical test ways?
1: Give an ideal candidate a short term of probation. Both of hiring manager and candidate can use the probation term to know each other well. If the candidate is not qualified with the job, then hiring manager can cut the candidate and looking for new candidates; I think probation is a great idea for hiring people;
2: Check the references of the candidate, check background of the candidate;
3: Check the candidates’ real projects if they are available, for example: any running websites, applications;
4: Get knowledge candidate via his online resources, for example: technology blog, published articles etc.
Above all, I just give my personal thoughts and feelings for the software developer interview. There must be different opinions about the hiring, so it really depends on the hire department, hire managers and different roles on the jobs; For me, I personally expect to avoid those interviews which I mentioned above. But sometimes I had to accept the online test if I liked the company very much, I did not have choice. But you have known, I did not like that way actually.