Cameron Philipp-Edmonds: Today we are joined by Ken Kousen of Kousen IT, Inc. He's going to be giving you a presentation at the Mobile Dev+Test conference. First off, let me thank you for joining us today.
Ken: Glad to be here.
Cameron: Can you start us off by telling us a little bit about yourself and your role at Kousen IT?
Ken: It's a one-person company. It's Kousen IT or as my wife says, "Cousin It." It was her idea. I'm still waiting to hear from the Addams Family people. Basically, through the company, my day job primarily is teaching software development training classes in all areas related to Java and Open Source—specializing in things like Android. Also, Groovy and Gradles and Spring and hybridnated topics like that. I do some consulting and mentoring for the company as well but basically my day job is dominated by that. I also speak at a lot of conferences. I have a book out from Manning called "Making Java Groovy." I'm working on a book through O'Reilly called "Gradle for Android" which we can talk about later.
Cameron: Now what brought you to the idea of the presentation you're going to be giving at Mobile Dev+Test?
Ken: Android development has changed a lot in the past couple of years where the real changes are just breaking through now. Google at Google IO back in 2013 announced that they were changing the development process for Android and moving to a Gradle-based build system or skipping Maven entirely. They were getting tired of being dominated by an IDE build. Also, they introduced the new IDE called Android Studio and said they were going to be working on it for a long time. They were. It was in Beta or even earlier than Beta, Alpha, for a better part of a year or more.
It's only in the last month in December, actually, (or maybe it was October) of 2014 that they finally released it as a full version 1.0 product. They also announced a Gradle plug-in as 1.0 at the same time. All of these things have led to a significant update—a change to how you develop Android applications. Now, I've been making presentations on Android and teaching training classes on Android for quite some time. This conference being focused on mobile and Android (and even testing, which is perfect) gives a great opportunity to talk about all of those topics and give the most up to date information possible.
Cameron: You mentioned some of the new things that are happening with Android. What advantages does Android have over rival Apple when it comes to mobile application?
Ken: Let's address that one right off the bat. There are advantages and I'll talk about them. But, the truth of the matter is that this is a market which has two winners to it. Clearly Android is not going away any time soon. It's going to be very, very large and neither is Apple. Especially with the new changes with the iPhone 6, the 6 Plus, and all of that—they're going to be very strong especially in the high-end marketplace. If you look at North American or Western European market share studies, then you will see that both are roughly equivalent.
Android may have a slight 55/45 lead depending on where you study it. Whereas if you look at worldwide marketshare, Android is up in the 80s or 90s in terms of marketshare but that's pretty much because they have focused on a wide range of devices including the low end. Apple still does not really have a low-end device. They're not really interested in low-end marketplace. They're only interested in producing hardware and making software that you sell as hardware.Whereas Google, of course, is all about services. They want their services everywhere which means on all Android devices everywhere.
The result of all of this has been that both companies have pretty much gotten what they want so far. They both are very, very strong and very, very established in the marketplace and will be for the foreseeable future. You really can't ignore one versus the other. You can't say, "I'm only going to develop for Apple," or "I'm only going to develop for Android." You may have a debate as to which one to develop for first but ultimately, you're going to need to focus on both.
Now saying that, are there some advantages developing on Android? In my opinion, the biggest advantage is that the documentation is free. The IDE is free. The environment that you build in is pretty mature at this point and well-established. The Google Play Store is very easy to work with and to upload to. You don't have to go through the approval process, for example, that you go through on the Apple Store.
You still have to fulfill some minimal requirements but in general you don't have to worry about whimsical or arbitrary refusals for publication. Of course, the Android IDE and the Android development is based on Java. You don't need to learn a totally new programming language either. If you're reasonably comfortable with Java, you can pick up Android pretty easily.
Cameron: Fantastic. Now you mentioned two clear winners when it comes to Android versus Apple. I assume you're referring to both Android and Apple, but are the consumers and developers also considered winners in this case too?
Ken: Right. In a sense, certainly, because competition is going to help everybody. For example, Apple during the first quarter will be coming out with their watch device which will be very interesting. It looks very promising although right now there's so little hard information on it that a lot of people are making comments on Vaporware. They don't really know what the thing is going to look like. I'm not sure what the hardware equivalent of Vaporware would be, although maybe that's Vaporware. At any rate, it's clear that the Android-based companies,:Samsung, LG, many of the others, even a Chinese company like Xiaomi, et cetera, are going to have to respond to this.
Now there are already many Android-wear devices out there. There are nice little watches and all sorts of nice tools, but clearly the wear device or the watch device from Apple is going to spur a major improvement in the wear devices for Android. That's obviously good for the consumer. It will be good for everybody to see what ultimately that leads to.
Cameron: You talked about the consumers there. What role does the user interface play in the development of a successful Android app?
Ken: Interestingly enough, that comes as quite a shock to many Java developers. Back in the day if you could go back to the '90s or even earlier, we actually had to deal with user interfaces in a real way. You might even vaguely remember swing apps if you'd go back that far. Then everything shifted to browser-based interfaces and the web. Most of that interest went away or at least went to more client-side based frameworks involving Java script. These days, of course, that would involve things like jQuery or even the frameworks like Backbone or AngularJS or several of the others.
In other words, the user interface became the domain of the client-side developer. The people who were focused on Java spent most of their time on the service side. It didn't really focus on what the user interface looked like, leaving it to people who were experts in HTML5, CSS, Java script, et cetera. The first thing you find out when you start working with Android is that the user interface is everything. If the customer doesn't like the UI, they're going to uninstall your app. If they do like the UI, they're willing to tolerate a lack of functionality if they know it will be added later.
It becomes very important to understand good UX practices and good UX development. Now on the Android side, the move to the material design in Lollipop in the latest version of Android is expected to have a substantial impact on the look and feel. The problem right now, of course, is that there are very few Lollipop devices in the marketplace. We're still waiting to see how all that's going to play out but it's definitely something that developers are going to have to be aware of and to focus on.
Cameron: You talked a little bit about what developers need to focus on and what they need to be aware of. You mentioned earlier that if you know Java, you're going to be able to work with Android pretty well. What other programming skills are important to have in your arsenal or your quiver of developmental traits to make strides as an Android developer?
Ken: The Java background is step one. If you have an object-oriented background in an alternative OO language, something like C Sharp or any of the others, then you can move over to Android and do reasonably well. But sooner or later you're going to have to become an Java developer. Just as if you were going to go with iPhones, you'd have to learn Swift and Objective C but with Android they do have a fair amount of XML embedded in there as well.
Some background in XML is helpful but not required. That's certainly something almost any decent developer can pick up as you go along. I wouldn't worry too much about that but be aware it's going to come.
Beyond that, then basic software development practices are slowly working their way into the Android ecosystem. For a long time, Android was based on IDE builds. Testing was an afterthought. There was really nothing there. Now with the move to Gradle, then you're going to have to learn something about Gradle which means you may have to learn a certain amount about Groovy as well and understand things like test-driven development, deploying to continuous integration servers, and all of that kind of stuff as well.
Cameron: To loop back to a question earlier in the conversation, you talked about a lot of the different developments and strides Android has made. Mobile relatively is still in the infancy stage. How do you think Android will help to grow further the development and spread of mobile in general in our lives?
Ken: Mobile is currently in an explosive environment. The growth in mobile has been staggering. There are way more mobile devices in the world than there are PCs in the world. The gap is only going to get larger. In fact, I've seen recent studies point out that being mobile is the first opportunity anyone has ever had to develop an app for everybody in the world. We're not just talking a particular market or a particular vertical, or a particular demographic root. We're talking about an app that can be useful to everyone everywhere. In fact, even some of the poorest countries in the world show a remarkable growth in the number of mobile devices.
People consider mobile devices as their way to run any kind of business, stay connected to the world, or even just basic services. People, if they have electricity, want a mobile device. This was very unexpected. They started off expecting mobile was going to be a luxury item but that's not true. Now, of course, the high-end marketplace will largely be divided among iPhone and Android but the rest of that marketplace is going to be dominated by Android devices for the foreseeable future.
Then the next evolutionary step or the next thing that's currently going on right now is this movement into the Internet of Things (IoT) as they call it (whereas we used to call it the internet), but at any rate the idea there being is that we will have connective devices throughout the home and inside of cars. Android is just moving very quickly into the automobile market. So, of course, is the iPhone, the iOS environment, as well. All of those devices are going to be controlled by ultimately your phone. Your phone will be your remote control to every device in your life. That's a huge, huge impact on the world but, of course, that's also going to spawn many opportunities, lots of which we have no idea about at this point.
Cameron: What you're trying to say is that you're not Nostradamus. You can't predict the future as far as the Internet of Things and what Android will drive forward.
Ken: I predict things all the time. I'm wrong all the time. I'm wrong a lot, but the difference is that I don't stay wrong. The key here is adaptability. The key is to find the areas that you find interesting, learn them and produce things in that area. You will be successful that way. Then you will continue to work in an area that becomes important. Then clearly, just getting the baseline information on Android is a big step. If I have to make a prediction, is it time to get into Android wear at this point? It wouldn't hurt but don't expect any significant revenue from it yet.
A year from now, that may be substantially different. Is it time to get into the Internet of Things right now? I would say no. I would say that there are too many barriers right now. It's not a very well-interconnected world. There's a lot of proprietary fiefdoms and stuff that have to be broken down but is it coming? Certainly it's coming. It's definitely going to work. Again, knowing the basics of Android and how the ecosystem works, you'll be ready when the opportunities then arise. Does that give you a better answer?
Cameron: No, that gives me a great answer. Absolutely. Do you think it's possible in the future we might see college majors geared towards app development and maybe even one that's geared toward Android?
Ken: Ironically, the university system doesn't think that way. I'm also an adjunct professor at Rensselaer at Harvard. When they talk about development, they still think of object-oriented programming as this great innovation. Now, there are exceptions out there. There are professors out there who do marvelous things. There's a lot of academic work being done in deep computer science-related topics all over the map. But programming, Android development and things like that, is not really their primary domain.
Now the online universities, that's a different story. Especially one I've been spending some time at lately, the Udacity System. Have you seen that one before?
Cameron: No.
Ken: I can send you a link. At any rate, Udacity has a brand new Android class that was written clearly by people at Google. They actually assembled it. The biggest problem with the class right now is that it's dated already just because they wrote it before Lollipop came out. Therefore, they're going to need to change things. I expect that to be a big move in the future throughout the online world. There will be a lot of documentation and opportunities and online ways to learn these things because, again, books become out of date as soon as they go to press practically in this world, although hopefully there's a focus on curation. They'll give you an idea what's worth your time rather than giving you all of the information from the ground up.
Cameron: Absolutely.
Ken: It's a very active environment. There's a lot of things going on in it. I think conferences like the Mobile Dev+Test conference are very useful in that they help you see what the current state of the art is, what's happening right now and give you some sense of what's coming down the pike. The online information is your repository for deep knowledge and for the latest information and for the latest information and places to get answers like stack overflow. Then the university online stuff is for tutorials and stuff.
Universities as a major place of getting CS degrees and things like that will give you your grounding in data structures, in database information, and in things like that much more than they're going to focus on how do we actually do Android development? Community colleges maybe the exception in all of that. They may be the ones who fill that gap on the actual practical stuff for the university community.
Cameron: Now Android versus Apple has become a great debate in today's society with this new iGeneration. Before it was Coke versus Pepsi. Is Android versus Apple the new Coke versus Pepsi debate?
Ken: Basically. There is a difference. There definitely is a difference in look and feel. There's a difference in quality but it's simply a question of understanding that Apple and Google have two different goals in mind. Therefore, the solutions they've come up with are going to be different. Apple is a hardware company. They're currently going after with the watch a luxury market. I wouldn't be surprised if they came out with a watch that cost $5,000 that was watch-enabled. Everybody would be like, "Wait a minute. IT people are never going to pay for something like that."
It wasn't designed for the IT people. It was designed for the luxury market and the jewelry market. People who buy Rolex watches are now going to buy something Apple-related. Android is unlikely to be interested in that approach. They're much more going to be interested in the IoT (the Internet of Things) and other things because they want to be everywhere, because Google wants to have their eyes everywhere. Far more interesting for them is going to be this idea of deep linking. It's being able to click on something inside an app and having it trigger something in another app, in a browser or what have you. That's the opportunity and the scary part at the same time.
We're going to see very different approaches to these problems. Now, of course, by the way the big advantage that Apple has at the moment, the biggest impact very likely from the iPhone, the iPhone 6, and iPhone 6 Plus, is this idea of Apple pay. The idea of being able to use a sensor right on your phone with a thumbprint and being able to pay immediately. Now you can do that with Android devices now. I did it with Google Wallet just recently but it's a little bit more awkward as with most things Android, a little bit less secure and gives away a lot more information. This too is going to be a big thing to watch in the future to see how both sides develop it and to see what it looks like in the coming year.
Cameron: With that, of course, the winner is the consumer.
Ken: Hopefully. That's the goal. The goal from any business is to remove friction. It [the goal] is to make it easier and easier for anyone who wants to sell something, to [be able to] immediately do it, especially on an impulse buy. If you could just take your phone and tap it on a sensor or wave it by a sensor and check out, you've made an enormous gain for the business. They say they did a study at Walmart. They said for every thirty seconds they could shave off the amount of time it takes someone to check out, they made something like $12 million. It's crazy.
Cameron: That's pretty crazy.
Ken: That's where we're looking now. It will be good in the sense that it will be easier for us to impulse buy. It will be bad in the sense that it's easier for us to impulse buy.
Cameron: You've covered a lot of great things. You've gone in depth in a lot of information here, but what takeaways would you like the attendees to leave with after they've left your presentation?
Ken: Interestingly enough, most of the presentation isn't going to be about the big picture stuff. I do intend to talk about that, but the presentation will be far more practical. This is much more of a workshop. I hope that you can see how the environment works, how you do the STK install and then basically we're going to start by assuming that people don't know anything at all about the Android environment.
I do assume that they have a Java background. We are going to have to make that assumption but beyond that, show them how to install the STK, show them what all the components are, activities, services, intents, content receivers, and all those. Write a few applications of a simple "hello world" app, then something a little bit more interesting that uses web services, breaks down adjacent data, and all that kind of stuff. I'm hoping when they come out of that, they have a foundation of what is involved in Android development, what the actual tools are and the various pieces they need to learn.
They need to have some knowledge of the breadth of the Android ecosystem and some recommendations of where they go from there in order to learn a little bit more. We're also going to use the Gradle build tool. We're going to use Android Studio for everything. Hopefully, they will see what the state-of-the-art looks like at least in a relatively small, self-contained, one might even say safe environment with us.
Cameron: Now you're also the author of a book titled "Making Java Groovy." Can you tell us a little bit about the book and why it's worth checking out? What led you to write it?
Ken: I've been involved in the Groovy community for many, many years. I've been working with Groovy since roughly the 2007, 2008 time frame. Through a very circuitous path, I wound up writing a Java Groovy integration book. The basic idea is that if you already know Java, then what sorts of problems do you encounter and how do you solve them? This book says, "Let's look at those problems one by one and see where you could mix in Groovy to make your life easier." That's what the book's all about.
For example, in the database chapter we talk about how to do raw JDBC and then how to do hybrinate. Then to see what Groovy brings to the table, like the Sequel class and then pure Groovy-based solutions like GORM from Grails, that sort of stuff. It's at Manning. It's been out since September of 2013 so a little over a year. Everybody should get it. I actually have a blog post that is the top ten benefits you can get from buying a book without ever actually reading it.
Cameron: Oh really?
Ken: Oh yeah. You can use it as a doorstep. It's okay to learn balance. You can kill little bugs around your garden with it. I've got lots of ideas.
Cameron: Perfect. Now you're also writing another book too. Can you tell us a little bit about that?
Ken: Yeah. My wife did not kill me when I said I wanted to write another book after this. It was a close thing but it turned out that the Gradle ware people, people who support and work on the Gradle build tool, were looking for someone to write another book in their Gradle series. They have two existing books on Building and Testing with Gradle and Gradle Beyond the Basics that are these short, 100-page books published by O'Reily.
Since I already had experience with both Gradle and with Android, they asked me if I would be willing to write the corresponding book for the Gradle plug-in for Android. That book is under development right now. We are very much hoping that it will be out in Beta before the conference occurs and hopefully published. I think that if you look on the website at O'Reily, they've given me a publication date of September. I'd certainly hope to meet that.
Cameron: Fantastic. Beyond writing, you also teach and speak on Java and Android.
Ken: Right.
Cameron: Is there a particular aspect of or niche within Java and Android that you really enjoy teaching or speaking on?
Ken: Actually, it's still at, this stage, a large enough community and a large enough audience that you don't really have to specialize yet. I would say that as a typical Java developer, my UX experience is my weakest aspect. I'm still working on learning to make good user interfaces and how to do that. I still tend to focus on the nuts and bolts and how to get these things working. Of course, because I'm working on the book I'm very much interested in how Gradle and, of course, Groovy is going to tie into Android ultimately. But, I don't require the students to follow me down that path. It's just something I'm interested in.
They are going to need to know the Gradle build. There's a couple members of the Groovy ecosystem who are trying to port Groovy to Android so that you could write things in an Android app that mixes Java and Groovy together which is always a good thing. Again, that's still in one of those wait-and-see modes. I think we're a version away from that being practical.
Cameron: Now as the one final question here, is there anything you'd like to say to the delegates of the Mobile Dev+Test conference before they attend their conference and, of course, before they attend your presentation?
Ken: Simply that if you are a Java developer and you're interested at all, then you will get enough information out of the conference and hopefully out of this day-long workshop that you'll be ready to go ahead and build. You do not need to wait any longer. This is one of the cases where the topics and the practices are sufficiently mature that you can learn this stuff now and not expect to have to rewrite everything a year from now or two years from now. You will be able to get enough out of this that hopefully you'll be able to be productive almost right away.
All I'm expecting, again, from people who are attending is that they have basic, and I don't even mean expert, just basic, Java knowledge so that they're reasonably comfortable with object-oriented programming. I warn you that you will be disappointed in a lot of the Android API. In many cases, it feels like they've gone back ten or fifteen years. They're only slowly bringing that forward again. There's layer after layer of indirection. If you're willing to tolerate some of that as things improve, you'll pick this up very quickly and easily. You shouldn't have any troubles at all.
Cameron: Fantastic. Once again, this was Ken Kousen of Kousen IT. He's going to be doing a presentation at the upcoming Mobile Dev+Test conference. Make sure to check it out. Thanks so much, Ken.
Ken: Great. Glad to be here. Thank you, Cameron.
Ken Kousen is the President of Kousen IT, Inc., through which he does technical training, mentoring, and consulting in all areas related to Java, specializing in Android, Spring, Hibernate, Groovy, and Grails. He is the author of the Manning book “Making Java Groovy” and the upcoming O'Reilly book "Gradle for Android". Ken is a regular speaker on the No Fluff, Just Stuff conference tour, as well as at many other international conferences. In 2013 he won a JavaOne Rock Star award. Over the past decade he has taught thousands of developers in business and industry. In addition to owning several technical certifications, his academic background includes two BS degrees from M.I.T., an MS and a Ph.D. from Princeton, and an MS in Computer Science from R.P.I. Contacts Ken @kenkousen.