Google Must Hire Usability Experts

Teacher: “Mary, what do you think should happen in a Web browser when the user presses Ctrl-T?”

Mary: “It should open a new tab with either a blank page or your home page. Some browsers show most recently visited sites. In any case, it should be easily configured”.

Teacher: “Good girl! When I was as young, as you I also thought so.  I assumed that browser vendor thinks of the user first and would hire a usability expert budget permitting.”

Mary: “Are there still some poor vendors who can’t afford hiring usability experts? Are you talking about vendors from under-developed countries?”

Teacher: “No, I’m talking about Google. They are pretty good if the application’s UI consists of just one text field and a button. Anything more complex than this is overly complicated for them.”

Mary: “I thought they’re filthy rich and can hire anyone?”

Teacher: “Mary, they don’t give a damn about the end users. I was about to record a screencast and wanted to be able to open a tab with a blank page so the viewers wouldn’t see all my recently visited sites. Is this too much to ask of Chrome version 18.0?”

Mary: “No, teacher. It should be really easy – just go to Preferences and select some option to open a new tab with a blank page.”

Teacher: “There is no such option in Chrome. After spending 10 minutes searching for a solution I found one! You have to install and Add On called Blank New Tab.”

Mary: “Now I understand why my grandma doesn’t want to replace Internet Explorer with any other fancy shmancy browser. When I’ll grow up, I’ll become a usability expert and will help Google to create applications that will put the end users before the geeks.”

Teacher: “Mary, do you happen to have a link to the IE download handy?”

I Feel Bad

Yesterday, I made a trip to Manhattan on some family matters. While walking by the the Seaport in the lower Manhattan, I noticed a group of asian guys doing back massage to the tourists right on the street. I’m sure you saw these special chairs where you kinda sitting on your knees while they work on your back.  Before, I never trusted my precious body to unknown people unless they were licensed medical doctors or were working in SPA in luxury hotels.

But about a week I started feeling some pain in the lower back somewhere above the kidney. First, I thought it was a minor muscle  pain that should go away in a day or two. But it didn’t. Then I started to think that it might have been something more serios inside. So I decided to take my chances and give myself to the hand of this street masseuse who barely spoke any English. The deal was simple – $10 for 10 minutes or $20 for 20. I never saved on investing into myself and have chosen the more expensive version of this treatment.  My logic was simple – the chances that he’ll make my pain worse are slim. If the pain won’t go away, I’ll make an appointment with my family physician.

Twenty minutes later, the massage was over, I gave the guy $20 and left. Right after the massage it was not clear if it helped with my issue. But guess what, the day after I can confirm that the pain was gone! Now I feel bad. Why I didn’t tipped the guy?  It is bad. I’m not sure when I’m going to be there again – it’s about 50 miles from where I live. I can’t send a check to a guy that I saw on the street and don’t know anything about. That’s why I decided to write this blog.

If you happened to be in that area and need a massage, go for it. There are three men and a woman massaging people. Mine was a short guy wearing a blue shirt and earphones. The next time I’ll be tipping someone, I’ll double the tips too.

Sorry, man!

Identifying Design Patterns in Resumes

Just got an email from a person who calls himself a Senior Java Developer. Two out of five pages were devoted to  describing his skills. Below is an extract from the Skills section:

Java 2 (J2EE, J2SE) rich operational experience
JDBC 2.0. rich operational experience
EJB considerable operational experience
SQL rich operational experience
JSP rich operational experience
JSTL rich operational experience
Servlets rich operational experience
Struts rich operational experience 
GWT considerable operational experience
Spring framework rich operational experience

The list would go on and on. I didn’t even need to interview this candidate – it’s clear that he can’t be senior.  He already violated the Don’t Repeat Yourself (DRY) design pattern.  I can imagine what his code will look like…

What the Title “Senior Developer” Really Means

When I post a job opening for a Senior Java Developer, people send me resumes, and their titles match my post title. But the meaning of the word “senior” varies depending on the geography. Here in the USA a 22-24y.o. person graduates from college and starts as an intern or a junior programmer working his way up the career ladder. By his 28th birthday or so, a hard working person may qualify for the title Senior Developer.  Having said this, I realize that there are prodigies who became seniors in elementary schools, but they never send me their resumes anyway.

In the countries that supply offshore developers it works differently. The amount of outsourced job available in India or  Russia is overwhelming, and any IT agency is willing to take just about anyone who has a Skype account, can speak some English, and has a vague understanding of what his future IT profession is about.  If you are a freshman in college majoring in any engineering profession, you can easily find a job in IT company.  A typical Junior Java Developer or a QA Engineer is 18 there. Senior in college means senior in software developer in their world.

A 35 year old person is considered brain dead, and I read all the time discussions in Russian programmers forums suggesting opening businesses by the time you’re THAT OLD. A typical resume starts from the date of birth screaming, “See, I’m young!”

Interestingly enough, most of the 25 year old sincerely believe that they are seniors. No kidding. They’ve been around for a while in this overheated market. As expected, 80% of these seniors can’t pass a technical interview with me. But, of course, there are talented and hard working people there, and your main goal during the hiring process is to weed out the fake from authentic seniors. Take it very seriously,  and you’ll be able to create a team of talented people working remotely from overseas.

What Project Managers Can Learn From Airport Security

On average, I pass the airport security four times a month either on business or as a tourist. Over the years I became a living proof that Pavlov’s finding about conditioned reflexes were correct.
When I see an airport, I start pulling off my belt, taking off my shoes, and my hands are unzipping my laptop bag. Everyone knows that keeping the notebook in a separate tray while passing this X-Ray machine makes your flight safer. Nobody knows why though.

Last week, the New York Times published an article titled “The Mystery of the Flying Laptop”, where Matt Ritchel tried to find the reason WHY you have to pull the laptop from your bag, but tablets or smartphones can sit inside… in some airports. He was talking to different people from the Transportation Security Administration (a.k.a. TSA), but no one seemed to know the answer.

Finally, one security expert offered the following explanation: “…the laptop rule is about appearances, giving people a sense that something is being done to protect them. “Security theater,” he called it.” And this makes sense to me. On the same token, just seeing policemen on the streets may stop some criminals from trying bad things.

And what all this has to do with project management? It’s elementary, Watson! Some of the project managers trust their employees completely (and in many cases for good reasons), and don’t even bother checking on the status of their current assignments. Sometimes they get surprised that John, a great software developer, was working for three weeks on the assignment, got carried away and delivered not exactly what you’ve expected. Sure enough, John will fix this little issue – he just needs a couple of more days for this.
This could have been prevented if the manager would be checking on the status of the project every couple of days. “Management theater”, kind of. Not that the manager would have helped the experienced and trustworthy John in creating that software piece, but just the mere fact that “somebody cares and will ask about the status” may prevent John from moving sideways and will help in accomplishing the assignment in a timely fashion and to the specification.
So don’t underestimate this management theater. Talk to people who work for you regardless if they have an excellent track record in delivering great results in the past. Do it respectfully, but do it regularly.

Our aircraft has landed and pulled over to the gate a minute ago. I’m about to witness a demo another Pavlov Dog’s reflex – right after that beep sound everyone will stand up to open the overhead compartment… just to spend the next 5 minutes standing uncomfortably in a tight space between the bags instead of continuing sitting in their seats. There’s nothing you can do about it – reflexes rules!

A Life Saving Egg Hack

Sometimes I eat chicken eggs in the morning. I boil two eggs for six minutes. My wife is not too happy with the fact that I’m doing this in an old-fashioned way. Yes, I simply bring the water to the boiling point and then put there as many eggs as I want. But my wife has a dozen different kitchen devices, and one of them is specifically for boiling eggs. It looks like this:

The first problem with this device is that it comes with a plastic measuring container, which used to have these special marks for the right amount of water depending on the number of eggs you want to boil. These marks disappeared over time and you can’t me sure if you’re gonna get the soft or hard boiled eggs.This egg machine has another annoying thing – you have to make a hole with a special needle in the raw eggs. But the grandma’s method always works fine. I just need to remember one number – 6 minutes regardless of the number of eggs you’re boiling. No holes, no nothing.

Here’s my life saving egg hack (c).

After the eggs are cooked, I put them in a special egg-holder for large eggs. You may be surprised, but chicken continue producing eggs of different sizes, and if an egg is small, it slides down to the bottom of the egg holder screwing my entire breakfast experience. If this bothers you too, here’s the trick.

Important: you must eat the larger egg first. After you’re done with the first one, keep its shell inside the container, and put the smaller egg inside the used shell as shown in the photo below. Yep, it’s that simple.

If this blog has ignited your interest in eggs, I can recommend you this wikipedia article for further studying of the subject. Enjoy your eggs!

How to make your Chrome browser work faster

Any Web browser has local cache, and everyone knows that its goal is to minimize the number of network requests by caching locally some resources like images or even the program code. The google.com home page opens blazing fast? Sure, because the browser loads it from your disk cache, not from the network.
But let me question this holly grail of all Web browsers. Does local cache make your Internet browsing faster? I have two different ISP at this location. Take a look at the speed of my Verizon FIOS wireless internet connection produced by speedtest.net.

Optimum Online is my second ISP and below is their data. Both ISP show pretty respectable speed, aren’t they?

Now back to local cache. Being a Web developer, I use several Web browsers to make sure that my JavaScript (a.k.a. HTML 5) applications look good on four major browsers. A regular person may not know a little dirty secret of Web developers – they often turn off the cache to make sure that the Web browser will always pick a fresh version of the application being worked on.

Recently, I started using Google Chrome for personal Web browsing. It’s a nice browser, but I noticed that some Web sites started loading really slow. Cleaning cache often helped. So I decided to make a more radical move – I simply disabled cache once and forever. Man, my Chrome started flying!

If you want to try this experiment too, here’s how to do it. Click on the image of a little wrench at the top right corner of the browser’s window, and select Tools | Developer tools. The bottom portion of your window will show the panel depicting the guts of the Web page you’ve been looking at. Then click on the little round Settings icon at the right bottom corner of the page. It’ll open a new panel, where you can easily find the Disable cache option. Just do it and let me know if you’ve noticed the difference. The same trick should work with other Web browsers too – just goggle on how to disable cache in yours.

The Java Courseware

If you are planning to do build a career as a software developer, you have to be prepared to get trained and re-trained every couple of years. But how? If you’re lucky, your employer will send you to classes, otherwise you have to spend substantial amount of time self-studying. Back in the nineties I was hungry for the courseware. Going through these thick manuals on hot technologies was the shortest way to master them.

Beside software developers, university professors and contract instructors are also looking for the courseware that would help them to teach the class without major surprises and failures in front of the students. No matter who you are, I’d like to offer you some extra materials that’ll help you in learning or teaching programming in Java and Java EE.

Last year, Wiley/Wrox has published my Java Tutorial. 24-hour trainer. It was already structured as lessons, had homeworks, came with video screencasts and included easily importable Eclipse projects for each lesson. Then, I created a supporting site where you can download solutions for the assignments. Some of my students offered interesting versions of the solutions and I let them upload their projects to the same site.

Then, I started eating my own dog food and taught a number of online Java training classes using this book as a textbook. While doing this I created presentation slides and used them in classes. These slides included new information and tons of links to additional studying materials. Today, I finished uploading the slides, and they are publicly available under the Wiki section on the site with solutions.

Enjoy your Java!

P.S. Currently I’m preparing the courseware for my upcoming one-day master class “JavaScript for Java Developers“. My colleague Victor is working on the materials for a fast track workshop on using the JavaScript-based framework called Ext JS. Any of these training classes can be delivered onsite at your organization.

Social networks are getting high

Not that I don’t like social networks, but I see no use for them in my personal life. I use Twitter for business reasons mainly, like advertising my upcoming training “JavaScript for Java Developers“, which doesn’t prevent me from posting a photo of two salmon heads that I was about to use for fish soup. Java developers eat fish too, and these fish heads could start a small talk with someone, who could decide to enroll in my training later.

I have an account on LinkedIn, which, hopefully, one day will bring me some business opportunity other than these annoying emails “I want to add you to my professional network”. I have an account on Facebook (everybody does), but my main activity there is denying requests to become friends (is this wrong? did they bring business to anyone?).

As any citizen of an industrialized country where people don’t need to hunt for food, I live in two worlds – virtual and real. The question is, “Do I need to merge these worlds or should keep them apart?” Take a look at this image.

See a handsome face on 15F? You guessed it right – it’s me! No, I was not using Photoshop – everything happened naturally. I booked an airplane ticket with a European airline and got an email from them suggesting to pick a seat and use my FaceBook or LinkedIn account to identify myself, which I did. This is how my pretty face got into the seat 15F. The next question is if it was a smart or stupid thing to do? Initially, I selected 15F hoping that the flight won’t be fully booked, and no one will want to take the seat in the middle (15C), and I’ll have some extra room during my flight to Europe.

But now, after identifying myself, most likely some 300-pound LinedIn aficionado will take 15C on purpose even if we’re not connected just yet. No thank you very much. I’m not going to take chances. In the virtual world I can easily ignore annoying people, but being trapped with an unknown talkative facebooker for 8 hours doesn’t seem too appealing to me. Luckily, this airline let me delete my LinkedIn profile from the seat map, so I’m flying incognito, yay!

Update. Two weeks after I wrote this blog, I ran into an interesting TED talk by Sherry Turkle “Connected or being alone.” She found the right words explaining why I decided not to put mu face into that airplane: We want a controlled communication, which could be screwed up should I allow someone from the virtual world sit next to me.

Germany opens borders for programmers

Have you read today’s German version of Financial Times? I did. Not that I can read German, but you don’t have to – just copy/paste the text of this article to Google Translate’s left box. It’s smart enough to recognize that it’s in German. Pick your language in the “To:” dropdown and enjoy the news.

From now on, if you are software developer, your perspective employer doesn’t have to pay you 66 thousand Euros a year, but “only” 45 thousand. Given their tax laws, it’ll translate into two thousand euros a month after taxes. Who can Germany attract with this amount? India, Pakistan, Bangladesh, and China. Russia and Ukraine won’t bother. They can take home this much cash either officially after paying from 5 to 13% tax, or using what they call grey salary, where part of the pay is given in an envelope stuffed with long and green bills.

Some people will get excited by the fact that you can enter the country and spend 6 months there just looking for a job, but again, this won’t attract software developers from the Eastern Europe. Overall, Germany tries to take a step in the right direction, but five years down the road the may not be happy with the results.