Every week here and in our newsletter, we feature a new developer/blogger from the DZone community to catch up and find out what he or she is working on now and what's coming next. This week we're talking to Gleb Smirnov, Plumbr’s senior Java Engineer. Gleb was kind enough to take some time out of his day to speak with us.
1. What have you been working on lately?
Several months ago, I relocated to Estonia to work for Plumbr, a Java performance monitoring solution for JVM applications. I like that line of work a lot since I really feel how I am making life easier for many other engineers. With the ever-growing complexities of deployments, merely alerting when a failure occurs is not enough. Plumbr automatically provides solutions to the issues that it detects. Oh, and Plumbr predicts issues in advance, before they actually happen. This is quite challenging in many ways. Aside from the need to go deep into the JVM to squeeze out all the smallest bits of relevant information, we also have to ensure that Plumbr itself does not make the customers' applications slow. So, to put it shortly, I am working on automating some aspects of the work that performance engineers and site reliability engineers do.
In my spare time, I like to do deeper research into what happens after you run the code. This usually results in blog posts or conference talks that aim to make this understanding much more available to any curious mind. For instance, the most recent interest of mine was to provide reference material and structured how-tos to anyone who faces seemingly weird behavior of the JVM. Be it a sudden crash when executing an innocent-looking piece of code, or inconsistency between the readings of different profilers. But generally, I try to save time to people who suddenly find leaks in their abstractions. And also raise the general awareness of (and ideally pique the interest in) how runtimes work.
2. You seem to identify mostly as a Java developer. What are some of the most enjoyable and least enjoyable things about coding for Java? Where do you see Java development going in 2015?
What I love most about Java is the sheer amount of effort and brainpower that was and is being put into it. The core principles that were laid down those two decades ago really do matter. That I can write multi-threaded code that will work in exactly the same way (except for performance) on all supported platforms is amazing. Also amazing is how I can go deep down to the inner workings of the virtual machine and still have some security in knowing that things I do (e.g. via JVMTI) will work on different platforms and on different versions of the JVM. The drawback of this is that with such level of encapsulation, many people never get to realize how complex and beautiful some of the things are underneath. Why, sometimes I catch myself using some things without any understanding of them.
For 2015 I do not really expect to see many changes in Java development, sans for a wider adoption of Java 8. This may result in more wide-spread functional-style coding and improved parallelism of the applications, but nothing really ground-breaking. Java 9, though, along with the impending IoT is really interesting.
3. Are there any particular developer tools or resources you couldn't live without?
After the standard command line tools, IntelliJ's awesome IDEs firmly take the second place. Then come the version control systems, my favorites being git and mercurial. To add to that, while not exacly resources or tools, are conferences. It feels just great to get together with smart like-minded people. Not only does this help exchange knowledge in an efficient and fun way but it is also extremely motivating. After each conference I get a huge productivity boost. Some of the greatest people I know, I know from conferences.
4. Do you have a favorite open source project (or projects) that you've contributed to recently?
I have not contributed there yet but OpenJDK is clearly my favorite. For such a complex system, the whole development process is very transparent and open. Other than that I greatly support openness. For instance, anything that I publish is cc0, that is, public domain. I do not get enough time to be an active contributor to any particular open source project, but I dutifully at least report any bug or a place for improvement that I find. If I can manage that in reasonable time, I do that via a pull request. There's also a tool build atop of JMH that we in Plumbr use internally for performance engineering, which we plan to make open source.
5. Do you follow any blogs or Twitter feeds that you would recommend to developers?
I do not follow any blogs, community or individual. Instead, I follow individual people on Twitter. Many of them share interesting things right there, often in the forms of links. These could be anything from a blog post to a particular commit to some project. Also, sometimes interesting discussions happen right on Twitter. I have a separete list here: https://twitter.com/gvsmirnov/lists/engineering
6. Did you have a coding first love -- a particular program, gadget, game, or language that set you on the path to life as a developer?
There have actually been several times when I fell in coding love that changed my path as a software engineer. But the first one of them that has really set me on this path would be an old Soviet child book about computers, The Encyclopedia of Professor Fortran. I read it as a kid and have become fascinated by computers ever since then.
7. Is there anything else you'd like to mention?
Several things. First and foremost, cooperate! Do things together and learn from each other. Our capacity to accumulate knowledge and do professional specialization played a large role in where the humanity is now. But we can always do even better than that! Second, be mindful of your own limitations, including, but not limited to, cognitive biases. As engineers, we can understand on a gut level what a bogus execution environment can do to the program. Our wetware is well known to contain lots of bugs but many of them can be worked around. So, never stop improving yourself. Last but not least, have fun!