I offer you a translation of the blog entry, the author of which noticed the global trends of modern programming. Although this is Java, which I have never worked with, I found a lot of painfully familiar.Last week, I conducted several interviews to hire Senoir Java developers with about five years of experience. After them, I felt that frameworks make life easier for developers, but at the same time make them dumber. Everyone specifies almost all new frameworks in his resume in the form of "Powerful experience with Spring, Hibernate, Web Services, and so on."
Here are the interviews.
')
Me : You used Spring in your latest project. What are the benefits of using Spring?
Applicant : We can customize the beans in XML, and Spring will take on the creation of the instance and give it to us.
Me : If Spring is only for creating objects, why is it needed at all - I can directly create an instance using “new”. Why should I customize class names in XML and retrieve an object from Spring?
Applicant : If tomorrow we want to make another implementation of our interface, we can add it and update the XML to use it. We do not need to change the class in Java and compile it.
Me : But you are writing a new class, obviously, you need to compile the project. After the change, XML, in 99% of cases, will be packed into a war or ear file. You run the ANT script and create the war with the new changes. So your point of view “if it’s XML, I don’t need to compile” is groundless.
Challenger : Mmm, but the Dependency Injection pattern needs to go this way.
I : Ok, I'm done. Our HR will contact you :-)
Other interview:
Me : Can you talk about your latest project and the technologies you used?
Challenger : This is the XYZ system. We used Spring, Hibernate, REST WebServices.
Me : Well, can you say something about RESTful architecture?
Applicant : We can develop a RESTful application using @RequestMapping (value = "/ url", method = "POST"). We can also use the PUT and DELETE methods.
Me : That's true, but what is the concept of RESTful?
Challenger : In what I say: if you use @RequestMapping (value = "/ url", method = "POST") - you can develop a RESTful application.
I : Okay. How well do you understand Hibernate?
Applicant : I have been using Hibernate for the past two years and I feel comfortable working with it.
Me : What are the advantages of Hibernate over JDBC?
Challenger : Using Hibernate, we don’t need to write anything to interact with the base, Hibernate will figure it out.
Me : How does Hibernate learn about the requirements of your project?
Applicant : If you use it, he will be engaged in saving, updating and retrieving data from the database.
Me : Uhhhh ... Okay ... In your free time, do you read any technology-related blogs?
Challenger : Yes, why not. So I study Hibernate from the inside.
I : Very well, it was nice to talk to you. Our HR will contact you :-)
All interviews are similar.
I believe that frameworks increase developer productivity. But developers should try to understand how the framework does this. And you do not have to deal with the entire internal structure of the frameworks for this.
If you really understand Servlets and JSP, it will be very easy for you to understand any Java web framework like Struts, SpringMVC, and so on.
But if you do not really understand the basics, it is obvious that for each question the answer will be: "the framework documentation will solve this problem."
I highly recommend those who want to start their career as a Java developer to learn Core Java, Servlets, and sometimes JSP.
Then only you can understand the framework at a decent level.