How I became a Java expert

I was teach­ing myself C out of the Kernighan and Ritchie book (sec­ond edi­tion, so you know I’m a poseur john­ny-come-late­ly) when I tried to pick up Java. This was 1996 and my head was filled with «what if» sce­nar­ios that are still as absurd today as they were then. You know, like «what if all appli­ca­tions were Open­Doc com­po­nents writ­ten in Java?» Which is sec­ond only to «why can’t we all just get along?» in it’s naïveté. But any­how, I had noth­ing bet­ter to do than buy com­put­er books and pre­tend that some­day I’d have some use for the knowl­edge they contained.

When­ev­er I try to learn a new lan­guage, I always try a few sim­ple tasks to famil­iar­ize myself with the syn­tax and the ins and outs of the lan­guage. Most of these I’ve hung on to from being taught For­tran when I was ten years old, so they’re all sil­ly algo­rithms for deter­min­ing pi or bub­ble­sort­ing lists, stuff like that.

I did my few exer­cis­es and prompt­ly for­got every­thing I knew about Java, as I had work to do in Perl and TCL. To this day I have not cod­ed a sin­gle line of Java or C for pay.

In 1996 I began to work for CNET and I was sur­round­ed by oth­er graph­ic design­ers-turned-pro­gram­mers, most of whom had actu­al­ly been mak­ing things hap­pen in Java for, well, weeks at least. I thought about try­ing to pick up Java again at that time, but there seemed to be enough peo­ple already doing Java and mean­while I was plen­ty busy being tutored in JavaScript which seemed to me to be much more handy on the client side of Webdev.

Under­stand that at that time, Java applets were being used the way that Future­Splash is used now. We were years away of think­ing in terms of JSP and Net­Beans and servlets. Java was the way a few tech­ni­cal­ly-ambi­tious design­ers were mak­ing danc­ing car­toon char­ac­ters and mini video games for Web pages. Go back to mag­a­zine arti­cles from 1996 and 1997 about Java and they’re all about how to use the AWT libraries for mak­ing fan­cy graph­i­cal displays.

Need­less to say, I nev­er touched the AWT libraries. I was­n’t a part of that wave and I had my own prob­lems to deal with.

One day when we’d all been crunch­ing hard to get a demo out to impress Shel­by and Halsey enough to get the go-ahead and resources to build computers.com, there was a sta­tus meet­ing to show where we all were in the process. One of the devel­op­ers from tech­nol­o­gy (who had jumped over from design) showed off an inter­face for com­par­ing aspects of con­sumer elec­tron­ic equip­ment. The graph he had up had errors, which he point­ed out pre­emp­tive­ly. It was just proof-of-con­cept at that stage and he was going to have to do some work to devel­op some log­ic to pre­vent round­ing errors. He did­n’t have any way to round a num­ber off to the near­est dec­i­mal and he’d have to work some­thing up.

To a pro­gram­mer, that will sound pathet­ic. Any­one who lives and breathes code will make a swag­ger­ing claim to be able to han­dle numer­i­cal round­ing in hand-cod­ed assem­bler while blind­fold­ed, but of course, why would any­one both­er? There isn’t a lan­guage in exis­tence that does­n’t already have these rou­tines. But keep in mind what I’ve already referred to about how Java was being used almost exclu­sive­ly for graph­ics pre­sen­ta­tion on the client-side, and that code was all being put togeth­er by peo­ple whose intro­duc­tion to pro­gram­ming was sud­den immer­sion in the AWT libraries with­out any intro­duc­tion to pro­gram­ming method­ol­o­gy or com­put­er sci­ence the­o­ry. So cut the guy in my anec­dote a lit­tle slack. He was doing a great job of keep­ing up with a rapid­ly-chang­ing field and dis­play­ing tremen­dous adaptability.

But I opened my big mouth and, in front of every­one else, point­ed to the core libraries chart that he had on his office wall, and sug­gest­ed that he look at round() in the Math. library and that what he was look­ing for was built in to the lan­guage. Of course, I knew noth­ing about Java, save for my expe­ri­ence cal­cu­lat­ing the val­ue of pi a year ear­li­er. But there I was cor­rect­ing the com­pa­ny’s fore­most Java expert on the capa­bil­i­ties of the lan­guage and telling him what to do. In front of upper management.

If I had­n’t done so tact­ful­ly and help­ful­ly, I would have been killed, and I’d have deserved it. Instead I got some­thing worse: an unde­served rep­u­ta­tion for know­ing what the hell I was talk­ing about.

Soon peo­ple I’d nev­er met were show­ing up at my desk ask­ing me Java ques­tions. And here’s the kick­er. When some­one accepts that anoth­er is knowl­edge­able, the words, I don’t know tend to increase the impres­sion of com­pe­tence. If that one is com­fort­able enough in his knowl­edge of the sub­ject that he’s will­ing to admit he does­n’t have the answer, then he must real­ly know what some­thing. On an emo­tion­al lev­el, that makes sense, and when all you’ve got is a sin­gle point of ref­er­ence, the emo­tion­al lev­el rules.

I did­n’t stay at CNET very long, although I guess in 1997 dot­com terms, nine months is pret­ty good. I think I learned a lot from my time there, both in terms of what works and what does­n’t. Some of that stuff takes some per­spec­tive and dis­tance to see.

I’ve been try­ing to learn Java again. I’m a lit­tle over­en­trenched in Perl by now, and no mat­ter how much I’ve been try­ing to use Per­l’s object-ori­ent­ed method­olo­gies, there’s still some­thing inher­ent­ly pro­ce­dur­al about it. Even with a Java class I took at Sun back in 1998 and some occa­sion­al dab­bling in the mean­time, I’m still hav­ing some cul­ture shock jump­ing in again this time. I can look back now and smile at hav­ing been, for a few min­utes, an acci­den­tal «expert.»

I’ve still nev­er learned any­thing about the AWT libraries.

2 Replies to “How I became a Java expert”

  1. When some­one accepts that
    [quote]When some­one accepts that anoth­er is knowl­edge­able, the words, “I don’t know” tend to increase the impres­sion of com­pe­tence. If that one is com­fort­able enough in his knowl­edge of the sub­ject that he’s will­ing to admit he does­n’t have the answer, then he must real­ly know what something.[/quote]

    Peo­ple know that one of the hall­marks of incom­pe­tence is an inabil­i­ty to rec­og­nize incom­pe­tence in one­self. There­fore, I guess they think the reverse must be true.

    This is one of my favorite articles:

    http://www.apa.org/journals/psp/psp7761121.html

    We’ve all encoun­tered those too stu­pid to real­ize that they are stupid.

    In any sam­pling of peo­ple, most of them will think that they are above aver­age intel­li­gence or com­pe­tence with­in the sampling.

    How­ev­er, in any sam­pling of peo­ple, 50% of them will be below aver­age intel­li­gence or competence.

    Here’s anoth­er one: think of how stu­pid the aver­age per­son is. 50% of all peo­ple are *stu­pid­er* than that.

  2. LOL! great post!
    LOL! great post!

    That part about all the java coders being once design­ers real­ly hit home, and some­thing sim­i­lar real­ly echoed that here today.

    Cur­rent­ly I work as a Java pro­gram­mer. On my cur­rent team, I’m the only one with seri­ous UNIX expe­ri­ence, and con­sid­ered the lead tech developer.

    Dur­ing a staff meet­ing today, we were review­ing resumes for some con­tract­ing slots we need to fill on my cur­rent project, and the entire team was favor­ing this one can­di­date. Who, truth­ful­ly is a very good can­di­date, but it was obvi­ous to me that he lied about hav­ing a Com­put­er Sci­ence degree. After rankling every­one’s good vibe on this guy by point­ing this out. That in turn leads to a dis­cus­sion about how rel­e­vant C.S. degrees real­ly are any­ways, and that fur­ther lead to dis­cussing just what is every­one’s degree in the room. Well it turns out every­one on the team has a C.S. degree except for me — B.F.A. and M.A.

    I wish I had a pic­ture of the stunned looks.

Leave a Reply