
Interview with an experienced Java developer – a legacy code whisperer – Part -3
Interview with an experienced Java developer – a legacy code whisperer – Part -3
Bazlur Rahman: There is a book called Outliers where Malcolm Gladwell mentioned that you have to spend 10 thousand hours on a subject to be an expert.
That means you have to keep practicing for a long period of time to be an expert developer. The path seems not easy!
Scott Wierschem : Actually, the assertion in that book was based on research by Anders Ericsson. Ericsson says that it takes 10,000 hours of focused practice to become a world-class performer in any area. That would be about 5 years of 8-hour days. Most of us don’t have work that would enable us to expand our skill set all day every day. If we want to be world class, we have to practice at home. Otherwise, we’re just refining the same old skills, but not learning new ones.
Ericsson actually teaches that it takes much less time to be competent in some area. It may take a couple of weeks to be able to write a simple program in a new programming language. But it will take many weeks of dedicated study and practice to learn how those experienced in the language write the code properly.
- Observation #11: Go, walk an extra mile. There is no alternative.
Bazlur Rahman: So the bottom line is, if you want to excel in your area, you have to keep practicing, learning new things constantly.
However, there are a wide array of things to learn and explore, not that everyone can learn everything. They have to focus on a particular area, for example, you call yourself a whisperer of the legacy code. When a junior comes out from the school where he/she spent a few years (4 years in most cases) in an academic setting, s/he doesn’t always have the right set of skills that industries want. He/she sees many things: web, mobile, front end, back end, desktop, different programming languages, and frameworks. It gets tough to choose from. To be able to start from somewhere, what should be the approach?
And of course, there is a basic set of skills that are required for everyone; what are they? For example, the need to learn one or several programming languages is a must.
Scott Wierschem: When I left college, I took the first job that would hire me at a high salary. I ended up working on a proprietary system in a niche language. When I was ultimately laid off five years later, I had to take the next job as an entry level developer. My friends who joined consulting companies worked crazy hours and didn’t get paid as much at the outset, but they learned an amazing array of technologies and were exposed to many different kinds of work environments. After some years of this, they were either hired full time by a client or were able to look for work at the kinds of companies, using the kinds of technologies that most appealed to them.
So I would recommend finding work where you can be exposed to a wide variety of technologies . Once you find one that really interests you, you can dive deep into that and find work that you will love. The education you received in school proves that you are trainable. The most important skill you can develop as a programmer is the ability to learn quickly.
As far as programming languages, know one object-oriented language and one functional language to start. Then learn at least one new language every year . Ideally, one that you would never use at work. This will affect the way you approach a problem, and make it easier for you to learn new languages as you can easily compare the similarities and differences with languages you already know. Bruce Tate’s “Seven Languages in Seven Weeks” is a great introduction to the language learning process.
- Observation# 12: Learn how to learn quickly.
- Observation# 13: Learn various technologies and different programming languages.
Bazlur Rahman: And what do you think about algorithms, data structure, and design patterns?
Scott Wierschem: If you didn’t learn these in college, get your money back! (slightly smiling face)
Every developer should have at least one algorithms reference, understand basic data structures, and at least be familiar with the GoF “Design Patterns “ book. Software development has jargon that is important for being able to communicate quickly and effectively. When I was a sailor, a “sheet “ was different from a “bowline “. A “main “ was different from a “spinnaker “. Knowing these terms ensured safe and efficient communication on the boat. Saying “tighten the rope on the big sail “ would have been more confusing than “trim the main “. In the same way, “Pass this value as a parameter through to the child object so it can be referenced and used… “ can much more clearly be condensed to, “Let’s use inversion of control here.” Knowing the jargon is an indicator of professional competence.
- Observation #14: Knowing/using jargon isn’t bad; rather, it demonstrates your command of a specific subject.
Bazlur Rahman: I know you are a Java developer; recently, Java 9 was released; what do you feel about the ecosystem? A lot of junior developers think Java may die soon.
Scott Wierschem : At JavaOne I met a Cobol programmer. Any notion that Java is going to die anytime soon is based on either ignorance or wishful thinking . The Java market has never been stronger, and it’s growing every day . The language is growing in power and functionality. The tools for Java technologies are unsurpassed in quality and functionality. Anyone who programs in Java will be able to find work for many years to come.
- Observation#15: Java isn’t going to die soon!
Bazlur Rahman: Nowadays, everyone is talking about cloud-native and microservices. What are you looking forward to in the coming years?
Scott Wierschem : The new Java EE 8 (EE4J) is supposed to be supporting strong security out of the box. That’s a pretty big deal! I’m personally excited by the leaps and bounds that testing and code analysis software is doing to ensure code quality and security.
I’ve been hearing amazing things about machine learning and virtual reality. I look forward to having my car problems diagnosed by a computer. Or illnesses. We are already having legal documents and taxes prepared by computers. A lot of tedious, error-prone work will be done by computers. That’s exciting. And with Virtual Reality, I could BE one of the Avengers rather than just watching them on a screen. That would be exciting, too!
- Observation#16: The future is bright.
Bazlur Rahman: Any interesting book or online resource that you may refer to us that may help the junior developers?
Scott Wierschem : John Sonmez just came out with a book, “The Complete Software Developer’s Career Guide”. That and his site, http://simpleprogrammer.com has a lot of great information for the programmer just starting out.
Bazlur Rahman: Thank you, Scott, for your valuable time! Any parting piece of advice for our readers?
Scott Wierschem: Always have a good mentor. Someone who knows the ropes and takes an interest in your advancement. It’s just too hard to go it alone. A good mentor can shave years off of your career advancement and learning.
- Observation#17: Always look for a good mentor. Your mentor will help you to do great work.
Type your email… {#subscribe-email}
✨ This article was originally published at https://bazlur.ca/2017/10/15/interview-with-an-experienced-java-developer-a-legacy-code-whisperer-part-3/