Bruce Eckel is the author of Thinking in Java, Thinking in C++, and a number of other books on computer programming. He's been in the computer industry for 30 years and periodically gets frustrated and tries to quit—then something like Scala comes along and offers hope and sucks him back in. He's given hundreds of presentations around the world, and enjoys putting on alternative conferences and events like The Java Posse Roundup.
Bruce is currently studying organizational dynamics, trying to find a new way to organize companies so that working together becomes a joy. His struggles in this arena are at Reinventing-Business.com, while his programming work can be found through MindViewInc.com. We caught up with Bruce before he heads to OSCON 2015 to give a talk on creating trust organizations.
It's your third year in a row at OSCON. What are your feeling about attending this year, and how do you feel the conference has grown?
Actually I've only been to OSCON once, two years ago, when my coauthor Dianne Marsh and I were there talking about Scala. I liked the feel of the conference and wish I had been coming earlier. I used to organize the C++ and Java tracks in the (now defunct) Software Development Conference and I feel we could have learned a lot from OSCON.
What are your views on newer programming languages, especially Go or Golang, which, as I understand it, is easier to learn but as powerful as C?
New languages are very important because they can try out new ideas where existing languages have gotten stuck and are unable to do so, or in the case of Go, rethink everything from the ground up. I have a lot of interest in Go because it's a kind of modern, re-imagined C. Rob Pike and his team have asked "Why?" about every single aspect of programming and are carefully crafting something amazing. I would love to see easy connection between Python and Go, for example. That would be a very powerful combination. And Go seems like it could be a much better solution for Android programming, which looks like it could happen.
I also think that the functional stuff has been producing great benefits in the programming world. Python has been adding functional features for years, and although Python isn't considered a functional language, the functional additions are very helpful. I still find that objects have a lot of value, but functional thinking has really clarified a lot of my programming.
Well, Swift is a brilliant language design, and Objective C has been long in the tooth for quite awhile. So I don't see it as a "loss" but rather a long-needed upgrade for Apple programmers. Personally I haven't been able to get interested in Dart; I think there are other—more sophisticated—languages on the horizon that might ultimately be much more powerful on the client side. In general I think dynamic languages have been gaining mindshare for a while and will continue to do so. That's where a lot of my interest lies. But I think one of the most powerful ideas continues to be hybridization: using multiple languages to solve a problem, using the power offered by each language where it does the most good.
You have written bestsellers on Java, C, Python, and Scala. What's next?
I'm working on a project that I'm not ready to talk about yet, but after that I want to do a kind of translation of Atomic Scala into Python; which works surprisingly well. A lot of Scala features can actually be implemented in Python. Even though I've been a Python user and a participant in the Python community for a long time, I've kept getting distracted by other languages. But I think I understand enough now to do something useful in the Python world, and I also feel like that's where I want to spend my time. So I plan to put most of my focus there from now on.
What should be the top five commandments a newbie programmer should live by?
- Use some kind of automated build system.
- Test everything all the time.
- Use distributed version control, even if you're the only programmer.
- Keep it simple and clear. Code is read much more than it is written. You will especially appreciate this when you read your own code later.
- Programming is a learning career. Keep learning, all the time.
With everything you do, what do you enjoy the most?
The best is the various learning events that I put on, and open-spaces and self-organizing conferences are the best of those. I also enjoy traveling, speaking, meeting new people and being exposed to new ideas, visiting organizations and seeing the different ways that people do things and solve problems.
This article is part of the Speaker Interview Series for OSCON 2015. OSCON is everything open source—the full stack, with all of the languages, tools, frameworks, and best practices that you use in your work every day. OSCON 2015 will be held July 20-24 in Portland, Oregon..