📜 ⬆️ ⬇️

A passion for programming. Chapter 8. Be a Specialist

We continue to translate Chad Fowler's book The Passion for Programming through joint efforts. Ready to coordinate with other translators.

Chapter 8. Be a Specialist


- How can you make JVM crash using only Java features?
In response - silence.
- Do you hear me?
- I'm sorry, I did not catch you. Please repeat the question.

Despair sounded in his voice. I knew from my experience that repeating a question would not help. Nevertheless, I repeated the question, slowly and loudly.
')
- How can you make JVM crash using only Java features?
“Um ... Sorry, I have never encountered a similar task.”
- I am sure that they did not come across. How about this question: how would you write a program that would never crash the JVM?

I was looking for really good Java developers. At the beginning of the interview, I asked this person (and all the people I interviewed during that week) to rate myself on a scale from 1 to 10. He said nine . According to my expectations, he must be an incredible specialist. If this guy appreciates himself so much, why can't he come up with a single trick that will lead to a JVM crash?
Not enough deep knowledge.

This person claims to understand Java. If you met him at a party and asked how he earns his bread, he would answer: "I am a Java developer." However, he could not answer this simple question. He could not even give the wrong answer. For two and a half weeks in search of candidates for vacancies in India, this picture was no exception, it was the rule. Thousands of Java specialists applied for vacancies; almost none of them could explain how the Java class loader works or describe in general terms how the Java virtual machine manages memory.

Well, you do not need to know all these nuances in order to write simple code under the supervision of experienced professionals. But it was assumed that these applicants were experts . It seems that so many of us believe that specialization means that you simply do not know anything else. For example, I could call my mom a Windows expert because she never worked with Linux or OS X. Or, I could call my relatives from the outback in Arkansas country experts because they never heard any other music.

Imagine that you are at a reception at your family doctor, complaining about a strange seal under the skin on your right hand. Your doctor will refer you to a specialist for a biopsy. What if this specialist was considered as such only because he did not learn anything at a medical school that would not be directly related to the biopsy? I do not mean that he studied in depth everything related to biopsy. Perhaps he only casually ran through the materials on this topic, but does not know anything else. If you asked this specialist:
- What if that device starts to beep during an operation?
- Hmm, I don’t remember that this happened, it is unlikely to happen this time. I do not know what this equipment does, but it has never made any sound.
Fortunately, most developers do not depend on the results of their work. If they screw up, their employers lose money, not lives.
Unfortunately, there are many such narrow specialists in our industry who use the term specialist as an excuse for not knowing anything else. In medicine, a specialist is a person with really deep knowledge in a particular area. Doctors refer patients to specialists, because in some situations a specialist will provide them with more qualified assistance than a general practitioner.

So who should be an expert in our industry? I can tell you exactly who I was looking for on my trip with the goal of hiring qualified developers. I was looking for people who are deeply versed in Java development and are oriented in the environment in which the developed software will work. I was looking for people who could say “I know, did” in 80% of situations we can get into when developing and whose depth of knowledge will allow them to cope with the remaining 20% ​​of unfamiliar situations. I wanted to find specialists who, working with high-level abstractions, would understand the low-level details of what makes these abstractions possible. I wanted to find a person who could deal with any problem associated with the introduction of the product being developed, or at least I would know who to ask for help.
This is a specialist who will survive in the volatile software development industry. If you're a .NET specialist, this is no excuse for not knowing anything other than .NET. This means that if we are talking about .NET, you are an expert. Hang up and need to reboot the IIS server? "No problem". Integration control system version with Visual Studio? "Will be done". Are customers furious about incomprehensible performance problems? "Give me half an hour."
If you do not agree with this definition of a specialist, I hope you do not call yourself this word.

Act!


1. Do you use a compiled language that works in a virtual machine? If so, take some time to study the internal structure of this virtual machine. In the case of Java, .NET, Smalltalk, there are so many books and online resources devoted to this topic. It is easier to get acquainted with this topic than you think.
Whether your language depends on the virtual machine or not, take some time to figure out what happens when you compile the source file. What happens in the process of how the code you typed turns from text into instructions that a computer can execute? What do you need to write your own compiler?
When you import and use third-party libraries, where do they download from? What does it mean to import a third-party library? How does your compiler, operating system, or virtual machine combine several pieces of code together into one cohesive system?
Studying these questions will bring you a few steps closer to the status of a specialist in your chosen technology.
2. Find an opportunity (at work, or during non-working hours) to teach those who wish to those aspects of technology that you would like to understand in depth. As you will see in the “Be a Mentor” chapter, teaching others is one of the best ways to learn yourself.

Source: https://habr.com/ru/post/205980/


All Articles