Thursday, August 25, 2011

Steve Jobs

Steve Jobs was born of educated parents then adopted by a working class family. While this wasn't by design, it couldn't have been a more perfect beginning. Intelligence and a strong work ethic make for a good shot at success.

He has always been ahead of his time. Apple didn't invent the first computer small enough and inexpensive enough to have at home. But the two Steves did recognize that every home should have a computer and effectively invented the notion of the personal computer. Jobs has never been short on vision- from the original Apple computer to the Macintosh to NeXT to Pixar to the iMac, iPod, iTunes, iPhone and iPad. But his vision is even greater than that. Every thread of the fabric of Apple is scrutinized by Jobs. I heard that when the first Apple stores were opening, Jobs personally chose the songs that would be playing in the store.

Jobs has always been a man of great vision and focus. The vision part, in some ways, is the easy part. You either have it or you don't. I think Job's vision is to make things as easy as possible for the customer and not let the current limitations of technology and others' lack of imagination get in the way. If you ever find yourself interviewing for the job of CEO somewhere, you'd better walk into that interview with your well-thoughtout vision of the future of the company. The board will either love it or thank you for your time but you'd better have it.

Focus, on the other hand, is much more difficult. When you are in the role of CEO and you have lots of great ideas for growing the business, it's easy to want to try just about everything you can think of. Having the discipline to focus very intentionally and directly on your value proposition is rare. I remember Jobs once saying, after being praised for the work Apple had done on some product, "I'm more proud of what we have not put into our products than what we have." Jobs believes that you should only put in features that 80% of your customers will use. Anything else distracts the user, making the product harder to understand and less elegant.

At All Things Digital Jobs was asked what it felt like now that Apple was bigger (in market value) than Microsoft. Jobs responded (and I'm paraphrasing here), "It's sort of surreal. But it's not what gets me up in the morning." That really says it all. Jobs doesn't spend much time thinking about Apple's competitors. His focus, and the focus on Apple, is on what is best for their consumer, their customer. Jobs believes that if you focus on your customer, you will win. I think he's right.

I have been guilty in years past of wanting to put every feature I could think of into Real Studio. But I have learned by careful study that that's a mistake. I've grown more focused over the years. That's something I have learned from watching Jobs: focus is an extraordinarily valuable thing. And of course that technology can be beautiful.

Jobs has made his share of mistakes. He's an extraordinary demanding CEO which is a nice way of saying that he's not an easy person to work for. He has very high expectations and if you don't see things the way he does, he will tell you, bluntly, rudely and in no uncertain terms. I think he has mellowed over the years a bit, but still, this is who he is. I think perhaps this comes, hand in hand, with his vision, focus and work ethic.

You probably already know the reason for this post today. Steve Jobs has resigned as Apple's CEO. He has formalized what has been the case for the last few years. How will this affect Apple? In the short term, not much. Jobs is going to continue to be as involved as he can at Apple. It's his baby after all. If he has imprinted himself on Apple (and I believe he has) then Apple will continue to be the great company that Jobs always knew it would be.

I hope Jobs is with us for many more years because I believe he still has a lot to contribute. But if that's not the case, he will certainly be going out at the top of this game.


john said...

Xerox PARC made all the innovations and Steve Jobs made all the money.

MacATDBB said...

Nice post.

@john ... I think Xerox PARC were just the final step before the person who made the money ;)

@Geoff .... Focus is admirable, but when the compiler generates 32-bit, single-threaded code, and virtually every one of the machines in my company has multiple cores and more than 4GB of RAM, I think focus may be the wrong word.

Geoff Perlman said...

@ MacATDBB - We are working on 64 bit support. Regarding single-threaded code, what exactly are you looking for? What most people want is for their apps to magically use multiple cores and that's not realistic. The UI code in the OS itself (Windows, Linux and Mac OS X) is not thread-safe. This isn't our issue. But even if it was, users would have to make user their code was thread safe and that's not easy code to write.

You can create helper console apps that will run on other cores of course. This allows users that feel comfortable with this level of sophistication to take advantage of multiple cores without making the language unnecessarily complex. Would this work for you? If not, why not?

Geoff Perlman said...

Regarding Xerox PARC, Xerox knew they needed to invent the technology that would replace the copy machines they were making. They invented the graphical user interface, postscript, ethernet and laser printers. But all of this technology was very expensive and they just couldn't see a way to make it inexpensive enough to be practical. Jobs believed he could make a computer that was inexpensive with a graphical user interface and since Xerox didn't, they had no reason to not license it to him. Even Jobs couldn't make an inexpensive computer at first. The Lisa was $10K. It wasn't until the Macintosh that it became affordable.

MacATDBB said...

@Geoff One element I think I'm missing (or not finding) are threads that can run in parallel, share data resources and communicate very rapidly by modifying these shared resources. I'm not finding this in console helpers.

An example from my area ... A company that makes a fantastic product that allows you to find a small (~100 byte) piece of data within another dataset (>4GB) very quickly. It's cool because the small piece of data doesn't have to match exactly. This application is single-threaded and available for free because it has only very limited use. They have another version that is multithreaded - this version costs about 15,000 USD per year to license - but on our 64 core machines is incredibly fast and indispensable.

This is typical of the scenarios I'm seeing. If each of these threads ran as a separate console application it would need its own index file (~1GB) and I'm not aware of a way within RB that console apps can very quickly communicate updates (of the order of millions of updates per second) with each other (perhaps through MonkeyBread shared memory plugins?).

I can't write applications that fulfill this kind of role in RealBasic even though people writing in perl, python, ruby as well of course as C variants can. I guess the case could be made that this is exactly the kind of distraction you are trying to avoid and that I should really learn python. But this would seem to suggest that multithreading is somehow a niche and single-threaded apps are the future.

I recall back when Apple in the days of system 9 were focused on defending co-operative multitasking even stating it was superior to preemptive multitasking. Not quite the same issue ... but I think this was one of the key changes Steve Jobs brought in with OSX. It was painful but Apple was just falling further and further behind without it.

Geoff Perlman said...

@ MacATDBB - You can use the IPCSocket class to communicate between console helper apps. We certainly could provide a class of thread that works the way you suggest but it would come with a LOT of caveats. We would have to provide a specific list of framework classes that can be used (because they are thread-safe) and you'd be restricted to just those. Then your own code would also have to be thread-safe of course.