Bio Yakov Fain is responsible for the Enterprise Architecture and emerging technologies at Farata Systems. Yakov has authored several Java books, dozens of technical articles. Sun Microsystems has nominated and awarded Yakov with the title Java Champion. He leads the Princeton Java Users Group. Yakov holds a BS and MS in Applied Math.
Software is changing the world; QCon aims to empower software development by facilitating the spread of knowledge and innovation in the enterprise software development community; to achieve this, QCon is organized as a practitioner-driven conference designed for people influencing innovation in their teams: team leads, architects, project managers, engineering directors.
1. I am Barry Burd I am a professor at Drew University in Madison, New Jersey, we are here at QCon in New York city, and I am talking with Yakov Fain, how are you doing there? Do you want to introduce yourself to our viewers?
Hello, sure, I live in the area of the Big Apple and I am a partner in two startups one is technological Farata Systems and it’s a consultancy, and the other one we make products for insurance companies. So when we make a couple of bucks for other systems we know where to spend them on the product. I teach, I write books, basically.
Yes, Princeton Java user groups and New Jersey Flex user groups, that’s true.
Yes it is, it is object oriented the only thing is that they are not using classical inheritance for example they use so called prototypal inheritance but it is inheritance, the only thing it’s much more flexible.
You had a couple of questions: one of them is it dangerous as a knife?
Barry: Any language is dangerous as a knife.
Barry: Which is a problem.
Which can be a problem if your main goal is to create programs that are as readable as possible.
Barry: But readable means maintainable to some extent.
8. So say an IT manager asks you for a recommendation on how to move their website to the mobile space, and I know that IT managers like to do that like crazy right now. What kind of advice would you give them?
So first of all you are right in saying that IT managers are trying to do this like crazy, even if they will not do it now, they will be forced, there is no other way, because people are using I think like fifteen percent of all access to the Internet these days is done from mobile devices. You are driving, you are sitting at a baseball game, or somewhere and you do things.
Barry: You are sitting at the baseball game, but you are not driving and doing mobile things, driving a car.
I don’t know you might be driving right on the baseball game. Anyway, if you select a platform today, for the software for the enterprise if this platform doesn’t support all these mobile devices this is a wrong platform so you will have to go there.
Barry: How does one best do that?
Well, to answer the second part of the question I could say that first of all you need to distinguish a couple of things: are we talking about website, or are we talking about a web application? These are two different animals. The website is a page, it’s one page at a time; it could be a newspaper it could be a site itself something, but it’s still a set of pages accessed one at a time. The application is a different story: it’s typically much more complex, and you need to remember state of certain objects, it has to be much better UI, it has to be much more responsive, it’s important how the data goes back to the server and to the client so this is the first question, if it’s a site or an application. Then, if it’s a site for example, now you have a choice again, do you want to develop separate websites, or separate applications, for different mobile platforms? Are you capable of hiring people with Objective-C skills and Java skills for Android? And let’s talk about Microsoft phones and Blackberry. So if you are, that’s one thing.
Barry: Is there an advantage to doing that? I am beginning to hear you say no.
Not really, and I can tell you that web browsers that are used on mobile are much more advanced, you don’t need to worry about IE 6 on mobile phones. That’s one thing. The other thing is how different should your website look like, depending on if you look at it on the iPhone or iPad, or maybe Galaxy Tab, if the changes are not that big, you can use different techniques called media queries or responsive design actually, so you develop one and only one site, one website and in the CSS file you put special media queries saying if the screen size is say between 800 pixels and 1024, then we are on the large device, if it’s say between 480 pixels to 800, we are on a tablet and automatically the appropriate CSS style is applied.
So in this case you maintain one website with multiple sections in CSS for lying out or maybe changing little pieces of code. I can tell you there is this newspaper, Boston Globe, and this is a site that was created using this responsive design. Go in there, just open it up in a big browser on desktop and then try to move it make it smaller, make it narrower and it’s immediately reassigned readjust everything but it’s only one site. In my opinion it’s a huge advantage, so I would go this way, try to have one code base for the website and use responsive design if you can and use Phone Gap if you need to access native API. If it’s a web application then consider what are the advantages if you are creating a trade application how fast it is, what is the best framework to use, how rich it is in terms of the library of UI components, what is the communication layer, how fast it is, does it work on every device?
Because in some cases people say, you know what, I picked up this framework it works fine for iOS and Android but it’s not one hundred percent of the market, if I am selling something and I have this button “Buy” I want to make sure that everybody, regardless of what device you have should be able to press this button. So there are too many variables.
Barry: And test test test. Absolutely.
Yes, that’s for sure, compiler won’t help you that much, it’s not Java you can put almost anything and it will say “Alright”. And then eventually it doesn’t work the way it is supposed to.
Java is doing great in my opinion, it’s never been better, because some people were afraid of Oracle, saying Oracle purchased Sun, Sun used to be like a company with engineers now it’s Oracle, I don’t see any problem with Oracle. Of course there is this first slide that every Oracle presenter starts with “Whatever I say cannot be used against me and put me in jail and so on”. If you ignore this little lawyers artefacts other than that Oracle is doing for Java a lot, it’s a very solid platform, they are moving in the right direction, Java 7 specification is moving in the right direction, they are also gearing toward a better work with HTML 5 clients, they are trying to put JSON as a standard and as of today I am pretty happy and I don’t think anything bad is going to happen with Java.
Barry: In Java.
Barry: It’s still not at this time June 2012 the specification certainly isn’t cast in stone.
But I wouldn’t go crazy about it regardless of which way they decide to go it’s not crucial for Java if it has closures or doesn’t have closures.
Problems is managers, mediocre managers in many cases and they think that outsourcing their project is the way to go but outsourcing a project doesn’t mean that you will give away this job and the rest works the same way, you have to be smart, you have to worry about who you hire, you don’t have to allow, you shouldn’t allow to use teams that you don’t trust, you shouldn’t leave the office unless you know what your outsourced people are working on, so I don’t see this in many American enterprises and in my opinion outsourcing is much more expensive than people think, people think that if I would be paying twenty dollars an hour, or thirty dollars an hour, for the off-shore person, I will save money. But you don’t think that you did not manage this person well enough and the person spends eight hours working and you spend say two hundred dollars it seems like not much, but he didn’t do much, if the person would be here maybe this person would be more productive so in my opinion a lot of money is being wasted.
Yes, it happened in our company. We are a small company and we know everybody who works for us, we are not a huge financial firm where they don’t even know names. But we do, and half of our team works in Eastern Europe and I didn’t see some of the people ever and in our case we watch very closely every person, we cherry pick every person but we can afford it, large companies have to make a special effort to do this. But we have very good experience I don’t want to blame people who work overseas in any way, if there is somebody to blame, it’s American management.
Barry’s full question: Now, again let’s assume that we’ve done some outsourcing in a large company, and things are starting to go wrong, or things have gone wrong, or we have waited too long to perceive that things are going wrong and that costs are rising and so on and so forth is there a way that you can backtrack and recover that you can recommend? Or does it become at that point a really difficult thing to manage well?
It’s a very difficult thing if you put yourself in this situation, unfortunately some managers that I’ve seen they care about retirement they want to live another couple of years that I would be promoted and then retire, they want to live quietly. And if something went wrong what I see is they will find a way to say that it’s not wrong actually, this is what was planned and we need more money, we need more budget and we will improve this project, but you can’t build on something that was done wrong in the first place.