Jim Shore

Welcome visitors--as of today (Apr 29, 2008) it's been many years since I participated in Ward's Wiki. I offer the below as a purely historical curiosity. It's not necessarily representative of my views today--in fact, some of it's pretty embarrassing to me now.


mailto:jshore@titanium-it.com

I have a new website and blog: www.jamesshore.com

Formerly known as Jim Little. These days, I'm doing business as Titanium I.T. LLC ("Making IT Profitable"), helping companies improve the profitability of their software development efforts. Although I started out as a programmer, focused entirely on technical issues, now I'm more interested in how software fits into the big picture--the difference between writing code and creating software that improves lives. In the context of business, "profitability" is a nice, pithy way to say this.

I haven't lost interest in technical issues... in fact, I think the foundation of software development is programming. Writing code. Design, requirements, testing; these are all inputs to the final end result of making software that has an impact. Writing code poorly leads to poor results. Writing it well leads to good results... but writing it "well" means more than making it work. I believe programmers, business experts, and the rest of the development team all need to work together, intimately, in order to make truly great software.

Here are some pages I've written along these lines.

I'm particularly proud of Good Design--I've seen many attempts to define "good design" in the past, and they all get caught up in subjective discussions of "truth and beauty." I like to think my approach brings a new spin to the discussion.


The above was written March 2004. The following is pretty old, but not so old that I want to rewrite it today.

If you're just looking for interesting pages that I've written, I consider each of these six pages my best of its category. I started these pages, and often didn't sign my work, but not everything unsigned is from me.

For more of my writing, take a look at the "New Stuff" section (next) and the "About Me" section that follows.

If you'd rather learn about me by seeing what I like, scroll about halfway down the page, where you'll find favorite links and quotes by other authors.

If you'd like to leave me a message, scroll down to the very bottom of the page. I don't check it regularly, but I like getting it. Or send me an email if you want me to read it now. You'll see a link to my email at the very top of this page.

I've also added a picture of myself. Vanity is an important cause, so I'm glad to be able to contribute. That's at the very very very bottom. Consider yourself warned.

Short warning about my sense of humor: When they were handing out the funny, I applied for "clever and witty" but all they had left was "goofy." I do the best I can with what I've been given.

If you're not at all interested in me, try Random Pages. It tends to be better reading anyway.

If you're like me and think "short and sweet" is preferable to "long and drawn out," pretend this is the end of the page. Thanks.


New stuff:

Software By Numbers (book information)

My column on Continuous Design is now available at www.martinfowler.com

At the risk of seeming egotistical, here's something I wrote on Oo Empirical Evidence. I really like it. (And besides, that's what this home page is about. Me me me me me. Scroll down... way down... if you want stuff by other people.)

code

code

code

code

code

Here's something else I wrote recently that I think is way cool... except that it implies that refactoring is a stand-alone activity, rather than being an active part of development. Oh, well. It's still a fun analogy.

code

code

code

code

code

code

code

code

I've been thinking about my Definition Of Project Success recently. I have a very strict definition:

code

A response to a post on the XP mailing list about the need for up-front design with some transactions and multithreading:

code

code

code

code

code

code

A random statement I made recently that I like. I know this is going to come back and bite me, but I have to post it anyway. (Vanity, thou art a cruel master!)

code

I'm writing an article about Continual Design. Here's a thought that occurred to me as I wrote. It's a silly metaphor, but a fun comment.

code

I just wrote quite a bit on Object Oriented For Dummies, which inspired and then fed off of Good Design. It's 4:30 am. Right now, I'm thinking this is great stuff. I fear what I'll think in the morning. (Or rather, when I wake up, which probably won't actually be morning anymore.)

I just saw "The Bar is Higher Now" on Michael Feathers' blog (www.artima.com):

code

A thought on Law Of Demeter:

code

code

code

code

code


About me:

I'm a programmer who's very interested in high quality software and effective methodologies. I'm a sporadic contributor to Wiki - I have bursts in which I'll contribute a lot, but then I'll go away for a while. Right now, most of my energy is focused on Nunit Asp. I've also been recruited for the C# port and maintenance of fit (Framework For Integrated Test).

I like creating small pages that focus on a single concept, then seeing the pages grow as people add their thoughts. I experiment with writing as compactly and clearly as possible. I also experiment with concepts: I'll start a page as a way of trying out an idea, as well as a way of seeing what other people think. Sometimes I'll write provocatively in order to seed discussion:

First Rule Of Logging (this one was very controversial, but resulted in the fantastic Logging Discussion, mostly thanks to Steve Howell's refactoring)

My current favorite contribution has been the "Process Principles" set of pages, which I mostly created in August and September of 2001. In these, I'm experimenting with the beginnings of a process pattern language. Eventually, I'd like to collect enough process patterns and forces to write a book about creating processes customized to an individual project and work environment. Here's the pages:

code

Related Process Pattern pages that I authored:

I once heard Ward Cunningham talk about the idea of complexity as debt, and I thought it was a great metaphor. I wrote several pages about that idea:

I own a small consulting business and once had grand ideas for it. I've since learned better, but the pages I wrote during that time are still around:

I've done a fair amount of Extreme Programming. I started using it in April 2000, and written some pages about it:

Ats Goes Extreme and Ats Diary -- my first exposure to XP. Old, but still interesting.

I love stories. They're fun to read, fun to write, and a great way to learn. Some of the pages I created are for stories:

Finally, I have a few pages which focus purely on the nuts and bolts of programming:

Commenting Challenge Response (I really like this one)

That's all the pages that I can think of right now. If you've gotten this far, you probably need to go do whatever it is that you've been putting off. :) But if you've had a chance to read some of these pages, I'd love to hear your comments, good and bad. Knowing that people are listening is what keeps me writing. There's a place for comments at the bottom of the page.


About others, mostly:

Thus ends the self-aggrandizing part of my home page. The rest is stuff by other people.

Here's some other links that I like or want handy:

www.thomsett.com.au ("Project Pathology: Causes, patterns and symptoms of project failure")

The Emperors Old Clothes... wonderful!


Some quotes I like:

code

code

code

code

code


For sushi lovers:

code

code

(from www.ntv.co.jp)


An interesting stat: Slashdot's normal peak load is 25 pages/second, using 6 servers. That's more processor power than I expected for a popular site like Slashdot. (On the other hand, it's a DB-intensive site.) Prior to the WTC bombing, their hit record was 1.6M pages in a day, and their average was 1.4M ppd.

On Tuesday, the day of the WTC attack, they peaked at 70 pps, and served nearly 3 million pages. They continually monitored performance and tweaked the code to deal with the load. Average page serving time slowed by 2 seconds per page after performance tweaks.

(extracted from slashdot.org)


From the stating-the-obvious department:

code

code

(This is a basic XP principle so I'm being very redundant here. But this particular twist on Do The Simplest Thing That Could Possibly Work just occurred to me. I'm going to search Wiki when I have time and see if it deserves its own page.)


A success story about completely refactoring an old, crufty application in three weeks. Apparently no tests were used or added.

code


Random thoughts not yet worthy of their own page:

The programmers' bookshelf should contain few specific language and tool how-to books and many books on general principles and practices.

Constructors should never do any significant work. Although having an object be fully baked after construction is nice, it leads to coupling issues that can make testing extremely difficult. As the code evolves, the coupling can lead to code that is fragile and resistant to change. Instead, use Lazy Initialization in those cases where significant work is necessary.

When using Lazy Initialization, avoid side effects. I've twice seen a case where Lazy Initialization was used to log into a remote system (once was in my own code!) and both times it resulted in confusing and brittle code.


Research on the effects of eye-contact in group discussions:

"The effect of eye gaze has literally fascinated people throughout the ages," says Dr. Vertegaal, whose paper, Explaining Effects of Eye Gaze on Mediated Group Conversations: Amount or Synchronization? was presented this week at the Association for Computing Machinery (ACM) Conference on Computer Supported Cooperative Work.


This is an entertaining story, in a way that only the very wacky true stories can be. It's about a couple of guys who snuck into Apple to create the "graphing calculator" application that was shipped with every Power Macintosh.

I wonder if history is repeating itself? To very little fanfare, Mac Osx version 10.4 "Tiger" will again include a free ultra-nifty graphic calculator. -- Ian Osgood


Leave me a comment here. I like hearing from other people.

Is this the same Jim Little? www.cs.ubc.ca

Nope, not me. Here's me (on the right):

fit.c2.com

Jim got a haircut since the last time I saw him. (-- Alistair)

I like the Rubik's cube story. Have you seen Nose Job Refactoring? -- Matthew Astley

Sorry girls, Jim is no longer available. Congratulations on the recent wedding, Jim! -- Rob Myers


Jim, I appreciate the comment about making Fire Fox work with User Names - I tested and tweaked the info a little and put it on the User Name page. Thanks again! -- Layne Thomas


Jim I have motioned a delete of ManagementlessOrganization and therefore its related CompensationGame, and CompensationGameTheoryAnalysis. Perhaps Egalitarian Compensation is a more suitable home for some of the material. If I am wrong please explain. thx


See original on c2.com