I've been involved in some interviews to candidates in my current company. I've done a lot of interviews in the past at my former company. Usually I drive the technical interview as based on topics that the candidate can talk about, considering not only his/her most recent project but also from thoughts, conclusions from personal projects or whatever source of inspiration. Basically the point is to get the more information as possible of what is exactly the level of knowledge of the candidate.
Not bad, but I've noticed after many interviews that most of candidates are working in very closed environments and technical landscapes.
Around a half of candidates are working in Spring, Oracle Forms, Oracle PL/SQL scripts generation (stored procedures), WAS.
Most of candidates work on the customer's network and they have not access at any level beyond teh DEV environment. The DEV environment is not a part of the SDLC of the projects and is out of the scope of the IT concerns.
ORM is extended although the level of knowledge is very worrying. Even JPA certificates are not able to ask the right questions to a difficult problem.
The JVM is totally ignored. Do not forget that most of them have not access to the SDLC of the project.
Spring and JEE specs are considered as the same thing. This has been very astonishing to me! Not surprisingly, the knowledge of JEE specs is low or unexisting (CDI, Websockets, JMS).
Spring is always present in CVs but the level is generally low, with a basic understanding and usage of the framework.
Cloud computing and programming simply do not exist.
The presentation layer is commonly based on JSP or GWT.
JQuery is included as a language as itself! The comprehension of JavaScript is very worrying.
Some questions and answers can be disturbing:
Interviewer: "Are you familiar with AngularJS"
Candidate: "Yes, I've worked a lot with AngularJS but I prefer ReactJS. AngularJS is very slow"
Interviewer: "Do you know any way to improve the performance by removing elements from the dirty-checking in AngularJS. Infinite scroll, pagination, etc?"
Candidate: "No, never. By the way, what is the dirty-checking?"
Candidate: "Spring is much better than JEE. Injection of dependencies is undoubtedly superior"
Interviewer: "Have you checked out metrics in a comparison with CDI?
Candidate: "I do not know what CDI is."
There are many examples. The ones above are only two from many strange answers and questions.
Everyone (me included) define themselves as "Full Stack Developers". Honestly, this is not what the reality is. We are simply One-Stack-Developers.This is what I can pull out from the last interviews:
- Programmers cannot be limited to use a couple of tools or frameworks. People working with Oracle Forms and PL/SQL are useless for the best companies.
- Programmers cannot be limited to use one single framework, Spring in most of cases. This is a no exit way. The strategy of Spring trying to create a closed world (MVC, Boot, Cloud, etc) is disastrous for developers. Most of best companies are not using Spring in their projects and the reality is, they are abandoning this way of working. Reactive programming, Functional programming, new languages are occupying the place of the old Spring.
- Some companies are still delegating a lot of their business logic on SQL scripts. Run away from these companies! This is only legacy crap that will close you in a hell of obsolete technology.
- Continuous Integration is still ignored in many companies and Continuous Delivery/Deployment is pure Sci-Fi.
- There is not a real SDLC in projects.
- Manual procedures are everywhere.
- No DevOps.
- Testing is ignored in most of cases. I doubt about what the candidates say. They lie because they do not exactly know what to say about testing.
Unfortunately, this old axiom about reduced tech landscape and productivity is still valid in software companies. The result is, many many developer are being affected by this axiom, limiting their way to acquire knowledge, improve their careers and CV and their future.
Hey managers! You usually think that by doing everything in the same stack and/or framework is a guarantee about developer interchangeability across different projects. You are terribly wrong! we need to set up standards, specifications, well-defined architectures and procedures (Continuous Integration, Source Code workflow, SDLC, etc). By having a bunch of guys that only know about your framework will turn your company in an obsolete, dumb gang in charge of legacy rigid monolithic apps. The technical debt will increase more and more every day and you will be less and less responsive to changes and new requirements and projects. Do not be silly. We must think as engineers!
Regarding developers, I strongly advice you about this in order to prevent your obsolescence. You can be slowly getting out from the job market and you are not even being noticed.
- Study! Read a lot! Read articles and books as well!
- Do not be limited to a single framework. Investigate other frameworks. Akka, Play, Vertx.
- Learn about networks, communications, protocols, virtualization.
- Read the specifications! We are engineers! We read and follow standards not tools!
- Learn new languages. One new language every year is a good frequency. Go, Python, real JavaScript, C#, Scala, R, etc.
- Learn about methodologies. Continuous Integration is mandatory.
Wake up! Keep on moving! Keep yourself alive!
Comments
Post a Comment