Chris Hermansen: Don't be Afraid to Create
Summary
Jim Grisanzio from Java Developer Relations talks with Chris Hermansen, a Java developer, consultant, and data analyst from Canada. Chris discovered Java in the 1990s and was drawn to its free accessibility and object-oriented design. He particularly appreciated Java's straightforward single inheritance model over C++'s complexity. But Chris's path to technology came through mathematics rather than computer science. He identifies streams as Java's most transformative feature for data analysis work and praises how it improved code readability and maintainability. On consulting, Chris cautions against Silicon Valley mantras like "fail often" when applied outside prototyping contexts, and he observes cultural differences in how engineers approach problem-solving with some preferring abstract discussion while others focusing on concrete data. Chris emphasizes that technology work remains fundamentally human and stresses the importance of listening, maintaining humanity in professional life, and avoiding corporate stereotypes. For students, he notes the differences between learning with modern IDEs versus the command line tools of his era when he learned to code, so he advises that new learners to try multiple approaches to deepen their understanding. His core message, which became the episode's title, is simple: "Don't be afraid to create."
Discovering Java in the 1990s
Chris discovered Java in the mid-1990 when Java was announced while working as a data analyst. "Java came along and it was free to use. It wasn't open source at that point, but it was free to use," he says. "And it really intrigued me because of its object-oriented approach to things, which was something that didn't come with the platform we were working on." Unlike the purchased software products he was using at the time, Java offered a free and accessible alternative that promised serious long-term value.
He also appreciated how Java's design avoided the complexities of C++, especially the problems with multiple inheritance. He and a colleague had been discussing moving from Pascal to either C or C++, but his colleague had concerns about C++'s complexity, particularly around multiple inheritance. "The first thing that really jumped out to me was the straightforward single inheritance pathway and the use of interfaces to define contractual relations between code," Chris says. Java's approach to inheritance immediately stood out as cleaner and more maintainable.
Features like array bounds checking and interfaces for defining contractual relationships between code further convinced him he was learning something that would age well. "I felt that I was learning something that would wear well over time. I wouldn't turn around and look at what I'd done 10 or 15 or 20 years later and say, yuck, what was I thinking?" After committing to Java and sticking with it through the learning process, he found it repaid his effort many times over. "I liked it and I stuck with it, and I found it paid me back enormously for my investment in learning."
Career Path Through Mathematics
Chris's path to technology came through math rather than traditional computer science. He actually stumbled into science during the registration process at school in the 1970s and eventually pursued math after deciding against engineering. His career took him through various mathematical applications, including consulting and data analysis positions in forestry.
Java's Evolution: Streams and Beyond
Regarding Java's evolution, Chris identified streams as the biggest feature improvement for his work. When asked about new features that have been useful in his applications, he immediately identifies streams as transformative. "I mean, streams was the big one. Streams just made a whole difference to the way you would handle data," he says.
He contrasts the old approach of writing hundreds of lines of nested for loops with the more elegant stream-based approach: "And so streams has just made that a whole lot easier. And the code is so much more readable and maintainable than the old 500 line do loops that we used to have in Fortran that turned into the 375 line for loops in Java. Anyway, so streams is a big one, a really big one for me. The biggest, I would say."
He also valued the introduction of templates (generics) in Java 5 or 6, which represented a significant evolution in the language and allowed applying libraries to custom classes. He praised the Java community for keeping the platform and ecosystem viable, noting that the combination of an active developer community and a satisfied user base creates a virtuous cycle that keeps the platform evolving and improving: "There's enough Java programmers out there, enough people interested in the continuing viability of Java that they keep it going, that they modernize it, that they solve new problems with it, that they make it perform better than it ever has before." He added a "big shout out to the garbage collection people that do that amazing stuff," acknowledging the often-invisible work that performance engineers at Oracle do to make Java faster and more efficient for developers.
Throughout the discussion, Chris talked at length about developers, the user community, and the technology. He has a nice habit of mixing the issues seamlessly. Check out this gem below where he beautifully concluded that Java is far more than a language because it's really a movement.
"The user community is, generally speaking, pretty satisfied with [Java]. And it's a broad enough user community. It's got people like me. It's got people still doing desktop Java. It's got people using it on servers. And there's a whole tool ecosystem out there. Personally, I prefer working right at the command line. I always have. But the application that I mentioned we built using NetBeans, which came out of Sun originally. And it's quite a nice IDE. I don't think it's the most popular one. It doesn't really matter. It's still a very nice one. And it gave us a big part of that long-term support. And lately, I find myself using other JVM languages. So it's not just Java. It's the JVM that underpins it, that has permitted a flowering of alternative approaches to things that, generally speaking, work very well together with Java. So, it's a pretty cool thing. It's a movement. It's not just a programming language."
Consulting, Professionalism, and Cultural Differences
On consulting and professionalism, Chris stresses the importance of contributing to the team to best serve customers. He cautions against embracing some Silicon Valley software mantras — such as "fail early, fail often" — when applied outside their intended prototyping context. "And I know failure is a thing that people talk about in software development. Fail early, fail often. But you don't hear consultants saying fail often. It's not a good look for a consulting company," he says.
Instead, Chris focuses on engineering being technically excellent and using open communications to help ensure the team's success. "In a consulting organization, you really have to be a team player," he says. He clarifies that getting prototypes out for feedback certainly has merit: "Get something out there and [letting] people throw rocks at it and [recording] what they say [that's] false and recognize that, okay, you failed, but at least you moved the ball down the field. I'm a huge fan of prototyping."
Throughout the years in his career Chris also observed cultural differences in problem-solving approaches around the world. He says that some cultures prefer abstract discussion while others focus on concrete data. "Never mind all these grand theories. Let's actually look what we have. And really, you know, like don't go down that rabbit hole either. Look at what you have and base things on the reality that you know about," he advises. He warns against getting lost in theoretical discussions: "Resist the old, you know, the medieval concept of how many angels on the head of a pin kind of thing. Just don't go there."
The Human Side of Technology Work
Chris emphasizes that technology work remains fundamentally human. Near the end of the conversation, Chris focuses what he sees as most important: "I would just emphasize maybe that we're human beings here and we're driven by our human desires and wills. And as you rightly pointed out, cultural things roll into that," he says. Despite all the technical discussion about tools, languages, methods, and preferences, the work is ultimately done by human beings with human needs and motivations.
Cultural factors, listening skills, and collaborative team approaches matter as much as technical competence. "Remember, you spend a long time of your life at your job. And so, it's important that that contributes to your humanity and that your humanity contributes back." He encourages developers to remember their humanity throughout their careers, to contribute meaningfully to their teams and communities, and to avoid becoming caricatures of the latest corporate culture. "It's really important to remember that you're part of a group of human beings here. You don't want to be a Dilbert comic," he says, using the comic strip as a reference point for the dehumanized corporate worker trapped in absurd bureaucracy.
On the importance of listening, Chris shares wisdom from a sign he saw years ago: "If God had intended man to speak more than he listened, he would have given him two mouths and one ear. Listen more, say less." When discussing custom solutions versus off-the-shelf tools, and after discussing how being familiar with algorithms allows you to blend approaches for better solutions, Chris delivers what became the title of the episode: "Basically, you know, if there's not something off the shelf that — Don't be afraid to create!" This is a message that Chris encourages all developers to embrace because they have such advanced skills right at their fingertips.
Advice for Students: Learning Then and Now
That creation framework extends to Chris's advice to students learning software development. Students today face different challenges than he did decades ago. Chris compared his learning experience years ago with his daughter's more recent computer science education. Modern students learn differently through sophisticated IDEs that suggest improvements and refactor code automatically, while Chris and his colleagues back in the day learned using only a command line, a text editor, and a compiler.
"The difference is really striking between the two because the only tool we had was the command line, the text editor, and the compiler," he says. Modern IDEs provide capabilities like automatic refactoring and code suggestions that fundamentally change what students focus on during their education. He notes that learning with modern tools creates almost a different world than learning in his era: "And so it was really almost learning a different discipline for her than it was for me."
He advises students to try multiple approaches to problem-solving and to explore all their options to apply their technical skills in many diverse fields. "And I think if there's a lesson to be taken from that, sometimes it might be fun once you've learned how to do something in the IDEs to try and do it the old way and see what it's like just creating from nothing, you know, and starting out that way. And vice versa, guys like me that always insist on using VI at the command line, we should learn an IDE. It's time."
Finally, Chris reflects on the value of learning multiple approaches to solving problems. This goes beyond just technical skills to understanding the problem itself more deeply: "I think learning several different ways to solve a problem ultimately teaches you more about the problem. And learning more about the problem, I think, teaches you a bit about yourself and how you go about solving things and your value to your organization." During the entire conversation on technology, Chris consistently wove in the human element. We are people, after all. We're just using digital tools to create.
Duke's Corner Java Podcast https://dukescorner.libsyn.com/site
Jim Grisanzio, Host, Duke's Corner https://x.com/jimgris | https://grisanzio.com/duke/