How to become a Java champion programmer?
A few months ago, I dined at a restaurant in Paris with my business partner Carl and our French course instructor Xavier. During the conversation, Carl and I were laughing and joking about all the cool technology we used when we were younger. At the same time, I noticed that Xavier was silent for a long time, so I decided to ask him his age. Although I can't recall his age exactly, I remember that he was quite different in age from me and was about the same age as my second child. This means that all the programming experiences Carl and I had at the same time over the years were worthless to him.
In the career of a software engineer, knowledge has a half-life of three years. This means that after three years, half of the knowledge you have will be worthless. To give an example, the older you get, the harder it is to see anyone who understands TSR (Terminate-Stay-Resident), and finding someone who has written a TSR is like finding a needle in a haystack. In a DOS system, multiple programs cannot be run at the same time. Therefore, when we need a background function, such as a calendar or calculator, we write a memory-resident program ( Terminate-Stay-Resident program ) and then activate it from another program through a specific key combination.
In this industry, the three-year half-life of knowledge is actually a wonderful thing, so that you will never become a sinking tree. As a teenager, people warned me against becoming a programmer, thinking I would be forced to constantly learn new things, but I thought our work would benefit from it. First, the mind should be kept fresh and active. The last time I saw my grandmother, she was 98 years old and had difficulty walking, but she still had a clear mind. She saw my Macbook Pro and said, "Hey, that looks great, I want to buy one too." It's because she's constantly learning new things that keeps her mind clear. Second, ignore technologies that you are not very interested in because they will be replaced soon. Let me give an example of Subversion. I used it in the past because I had to, but I didn't treat it special and I didn't become a
Subversion expert. A few years later, git appeared, and I could only wave goodbye to Subversion. Sadly, one of my clients actually migrated from CVS to Subversion this year! This is 2015!
Okay, let’s return to the topic - how to become a champion programmer? I think the following points are very helpful:
1. Strong memory.
When I was in eighth grade, I convinced myself that my memory was terrible, all because of that lifeless history teacher. However, to my surprise, after years of working as a programmer, I was surprised to find that I could instantly reproduce Java source code I had seen before. When I read a method in the JDK, I can often tell whether the method has changed from the previous version. Maybe I can't remember someone's face and name clearly, but I can remember Java code--if only the person's name was also a for loop. Fortunately, a lack of good memory does not prevent us from becoming champion programmers, but having a strong memory is still a clear advantage.
2. Mathematical ability.
You don’t need to be a mathematical master to become a good Java programmer, but mathematical ability will obviously help you have the qualifications to become an excellent programmer. In January this year I had some free time, so I decided to try Project Euler. One of the puzzles requires nine and a half hours of running time to find a solution. While it was running, I took a look at the problem and discovered a little relationship between the numbers that could be used to optimize the solution. I ran it again and this time it only took 6 minutes. Meanwhile, my first algorithm keeps running, trying to find the answer. I went back to the numbers again and discovered another pattern I hadn't seen before, and now it only takes 6 seconds to complete. I also tried using clever programming techniques and parallelism to brute force optimize the code, which may have sped it up a little, but still couldn't get it to less than 6 seconds.
About ten years ago, Sun launched the Java Champion program. The idea is to discover the top 1,000 Java experts in the world who are actively doing things to help Java improve. We're probably ranked 160th now. Oracle continues this program, and over the past few years we have seen additional benefits from this recognition system. This is a self-selected group. New champions are recommended and voted on by existing champions. Typically, more than a dozen votes are needed before a champion is chosen, and one vote vetoes the proposal. Self-recommendations will be considered, but generally will not receive enough support.
Programmer friends often ask me how I became a Java champion programmer. "It's very simple" I said, "Just be like me and publish 200 Java-related articles; or write Hibernate, Spring, Jacoco or answer thousands of questions on StackOverFlow and publish a dozen good articles; or organize the largest Java developer conference in Europe ”
You need to do something extraordinary, and that will take time and effort. No one becomes a Java champion programmer because of their charisma and good looks, it’s all about hard work, which may be why we don’t have mugshots after our names. Even more, don't become a champion programmer for the sake of becoming a champion programmer. Get rid of selfishness and wait for other people's praise, which will make you feel better. Not every champion programmer will be officially titled "Oracle Java Champion".
No matter which path you choose, becoming a champion programmer means dedication. It's completely different from working a 9-to-5 job. You can't learn everything you need while working. To become a champion programmer, you need to study in the evenings and weekends to keep up with the times. The most exaggerated joke is that programmers will enter the elimination period as soon as they reach 40 years old. Maybe they are doing just fine in Java programming - unless they refresh their knowledge by reading books, articles, or attending developer conferences and challenging courses - relying solely on a diploma will eventually become Worthless, the industry will throw them away like used napkins. Never become such a person! learn, learn and learn! And the best way to learn is undoubtedly to share knowledge with your peers.
How to share your knowledge? Nowadays, we have many options: we can answer questions on StackOverflow or other similar sites; we can discuss technical issues over lunchtime by ordering takeout - this is how we did this many years ago at a company I worked for. The method went through "Design Patterns". This requires a bit of sacrifice; you may have to give up lunch and spend some evenings preparing for your talks. However, there is much more to learn than simply being a consumer of information.
"The Java™ Specialists' Newsletter" is now read by more than 70,000 programmers in more than 130 countries, but it started very small, I sent it to eighty of my friends and family (including me brother, and my parents), I begged them to forward it to their friends and colleagues. It develops slowly over time. I believe if you look around you can find 80 email addresses and that's how it started. Everything starts small. It develops slowly, but its growth is steady. I know when you see the number 70,000, you might be shocked, but this is only a small percentage of Java programmers.
Finally, I want to end this article with a very helpful point: Passion. Most people have to do boring computer work and few enjoy it. At one of my jobs, they gave an electrical engineer the job of organizing the source code repository. He got it all wrong - when he was doing source control, let's copy the source tree between directories. We have to do this at the same time every week during the build, and the server is as slow as a crawler. It can often take hours when the machine is stuck and everyone is left waiting, which is agonizing and frustrating. I have no enthusiasm for VSS (Visual Source Safe: used to manage different versions of source code and documentation in software development). Find something you are passionate about and it should be something you are very willing to do after get off work. For me, it's about studying the nooks and crannies of the Java ecosystem. Passion is what drives us forward when there are countless reasons to stop.