Here's what pisses me off: I abhor monolithism, or the appearance of it. And I hate when it steals precious seconds (or minutes) out of my day. Day in and day out. Every day. Over and over again.

When I turn my computer on, it should just be on. Ready to go. Kind of like—well, like my phone, for example. Which is, after all, my real computer.

When I fire up Photoshop (or OpenOffice, or any other pathetically oversized mountain of bloatware), it should just violently start, before I've even raised my coffee cup to my mouth. Or appear to start, at least. Show me a screenshot that looks like Photoshop. Trick me into thinking it's running. Cache my UI gestures until the world has finished bootstrapping. Run my gestures against an image in the cloud. Make my gestures appear to do something interesting. Fool me into thinking the damn thing is running. Better yet, make it so.

I'm so f*cking tired of looking at splash screens (whether Adobe's, Microsoft's, or anybody else's). A splash screen basically tells me, in very clear-cut terms, that my time is worth nothing whatsoever. It's a fresh reminder that users' needs don't count as much as programmer convenience does. The customer can wait—we've got more important things to do . . . like show you this test-pattern with our programmers' names on it.

Thomas Knoll is the first name on the Photoshop splash screen, right? I know it by heart now (so do millions of others, I'm sure), not because I am intimately familiar with the history of Photoshop (and thus know that Thomas and his brother John were the originators of the program), but because I've seen that freakin' splash screen so many times in my life, it's burned permanently into my visual cortex.

You know what? As a consumer, I'm tired of that crap. It has to stop. The madness has to stop. Splash screens have to stop. Bloated slothware that takes 30 seconds (or even 10, or 5) to load has got to stop.

Let's be perfectly blunt. A splash screen communicates sloth. If I were Shantanu Narayen (CEO of Adobe) I would outlaw them immediately. Either that or commit seppuku in disgrace.

Please understand, I'm not here to pick on Adobe specifically. (After all, I work for them.) Microsoft, far more than Adobe or anybody else, deserves top billing on the sloth Wall of Shame. Imagine if your phone or iPad took as long to boot as a Windows laptop. Would you use it? Would it be usable?

Why then are we still using desktop PCs? (Well, as it turns out, we mostly aren't. But I guess that's the point.)

I'm sorry to have used the f-word ("f*cking'") a few paragraphs ago, I really am. Every bone in my body recoils at using that word in a blog (or anywhere else). But we've long since passed the point where I can remain reasonable on this subject (the subject of monolithism in software design). I remember when whole operating systems ran in less memory than Firefox leaks in 10 seconds, for crying out loud. (Yeah, so, I guess I am old. And cranky.)

But you know what? It's time somebody said something. Slothware is a non-starter. It no longer meets the criterion of "minimally usable" (as set by iPhone and similar devices). It doesn't deserve to live. Stab it in the heart with a wooden stake, I say. It's time to move on.

I can think of lots of ways to make bloatware look "lite" (e.g., show a UI right away and let an instance of the program in the cloud operate against my gestures, until the local copy boots fully and can re-sync with me). Put up a "lite" UI until the heavy one finishes loading. For heaven's sake, you can just give me a simple game to play while the program boots. Do something useful, something that makes me feel like a human being. Don't just force me to stare at a pompous billboard for whoever created the program. That's the height of arrogance and uselessness. It gives the middle finger to the customer.

I say it's time to kill bloatware (or at least convincingly fake its death) and put the user back in control. Make big programs feel lite. As a user, I want to feel empowered, not belittled. Trick me into thinking big programs are already running (because after all, they probably are, in the cloud somewhere).

We need to get this right, because today's user of desktop and laptop software (and enterprise software, I might add) will not stand for standards of software behavior that were, frankly, already pathetically inadequate in 1999. It's 2012 now. Users have smart phones and tablets that come on like a light-switch, apps a-blazin'. The bar is higher now.

Monolithism, or the appearance of it, simply has to go.

Let me put it in even starker terms. If we (in the PC software biz) keep treating customers like pathetic dolts whose time is worth nothing . . . we deserve the fate that's waiting for us.

127 comments:

Well, if you can get your desktop/laptop to use flash memory like your phone does, you'll see an improvement. Get an SSD and you'll shave a chunk of time from your boot.

It's this frustration that one is losing "precious minutes or seconds" in a day that leads to too much stress and even death. How many car accidents could be prevented if the driver decided to wait a couple of minutes instead of driving through the red light and t-boning another car, made worse when the same driver was already speeding to save seconds off his commute? If anything, these small amounts of down time we experience daily should be taken as opportunities to step back, opportunities for self-reflection, and opportunities to clear your mind and go into the next task level-headed, instead of frustrated that some program made you wait 20 seconds before you could interact with it, or some stoplight made you wait a few minutes before you could go on your way.

A phone's flash memory's speed is at maximum around 20 MB/s for class 10 SD cards, but it's usually 4 MB/s for most of them. SSD's in ultrabooks can reach 550 MB/s read and write speeds. And even then it still takes about 15 seconds to boot up Windows.

However, I think the author is confusing things a little. A phone doesn't boot up instantly. It "awakes" from sleep instantly. A cold boot-up takes about 30 seconds or more. That being said, Windows awaking from sleep mode still takes too many seconds, even with a SSD, so he's still got a point about it being too slow.

Your second paragraph describes the opposite effect. With Photoshop, he's waiting on the machine to do something that it doesn't need to do, while the human does nothing. With the car crash, the human and machine are already operating at top speed, and it was impatience with physical limits that caused the crash.

If your car's brakes took 30 seconds to start up, I think we'd see more car crashes, not fewer.

There's something to be said for having a moment of silence now and then when it's appropriate, but waiting because a developer is using a stupid algorithm is not one of those times. As a programmer, I do not "take it as an opportunity for self-reflection" if somebody wrote a bad program, any more than an automotive engineer would if his brakes took 30 seconds to start up.

Well said everyone. I understand the author's case for bloatware. I hate waiting too and the few seconds I have to wait to fire up Photoshop or any other gigantic piece of software (these are not 4Mb iOS apps that start-up in a flash, remember) isn't really enough time for self-reflection but it may be enough time to sip some coffee, scan Twitter (how I came upon this blog), etc.

Operating systems can multi-task nowadays and with multi-core processors, SSD's and cheap RAM there's no reason anyone should be held hostage by a splash screen...

And that fate is coming on fast. I hope your pleas fall on enlightened ears attached to people with the power to effect change. But most likely they'll get lost in the cochlear canals of eight dozen mid-level managers whose only real purpose is trying to get their names on splash screen lists.

With all due respect Roberto that isn't the point of this post. The point is that massive dev teams in companies like MS, Adobe and others take user's time for granted. Like the wife who's always around we don't get any roses anymore. I'm perfectly Zen about opening PS and Outlook in the morning, going for coffee and then getting down to work but should I really have to? Innovation in load times in a deep and complex subject and I think often these app developers are too focused on the next new shiny "feature" to throw into the mix. I dare say however many people, myself included, would simply appreciate a better experience from the first click!

With due respect to you but that was exactly his point. He is stating that to app developers user needs dont matter because it takes a long time to launch an application. He picked a couple of examples. I just opened PS and Powerpoint. the first took 3 and the latter took 2 seconds to load on a MacMini , not the fatest computer I own. To me those are pretty good times and I as a developer would probably make that same decision and avoid the complexity that 'fooling' a user into thinking the app is running would bring about.

SW development is the careful execution of a myriad of tradeoffs, rants like this usually come from people who 'talk' about SW but never had to actually make those tradeoffs.

You work for Adobe, correct? What did you do so far to resolve this problem? Or do they pay you to write shit about them? For all the dramatic announcements on Twitter and all the drama here about being fired, I fail to see this post as terribly subversive or revolutionary.

You sound to me like someone going through a manic episode (hence no patience), looking for a reason to rant and rage, and hoping to provoke their boss into firing them (perhaps knowing already that they are on the sacking list) so they can play a martyr.

Putting up you boss's email and asking your readers to email him is very melodramatic + attention seeking. Do you really think anyone care about you and your job so they will take time to do that? When was the last time you did such a thing for another human?

Seriously dude, get a grip of yourself or adjust medications. You might even keep the job.

Anonymous Feb 19 11:50 PM: I was thinking the same thing. Should program be optimized for startup time? Sure but unless you are starting and stopping the program 10 times a day, does it really matter if it is 30 seconds versus 3 seconds? Windows takes under 10 seconds to wake from sleep. This happens a couple of times a day during the normal work day. Big deal. And what is this nonsense about running against running against and instance in the cloud until the local instance is up? Someone is drinking too much cloud cool-aid.

No what the author is getting at and seemingly lost on you is that things can be different.

Case in point. Windows 8. It is amazing that in the keynote of Windows 8 Microsoft proudly showed off how Windows 8 uses nearly 50% less memory and is faster too. My answer is WTF? You mean before you did not effen care about my time and my memory? You just keep adding the garbage?

I have used Microsoft Visual Studio 2010, use Sharpdevelop, and MonoDevelop. Visual Studio is a PIG! I can develop just as well with Sharpdevelop, and Mono Develop, yet they seem to be able to boot and load in a fraction of the time that Visual Studio does.

Ha! You sound like such a dilettante. Are you sure you just don't like to pimp your gadgets and talk this smack to prove your not getting old and irrelevant? Looking forward to future articles about how Macs are l33t, facebook is for yestertards and Comodo Dragon is the only browser uberpeeps like you use...

I assume you've seen this video spoof on Photoshop?http://www.youtube.com/watch?v=S_vVUIYOmJM

I agree with your post 100%. Can't they do something interesting? Why does so much of everything have to be boring? Photoshop is a photo editing tool! They could put up a cool picture, for God's sake!! Who gives a s&^* about the names of the developers? Not this honey badger, that's for sure.(It's nice to know men can have PMS, too. :)

Sorry to tell you, though there is a bit of cleverness to your style, your post is bloat-writing. Period. You went on and on and on to make a single point: Some software annoys you by taking too long to open. Ok. Point made. Edit.

Really, the base post (and many comments) show a startling lack of understanding for how a computer works. It takes time to load the binaries for all those DLLs you just couldn't live without. It takes time to scan for new plugins. It takes time to load data from the hard drive into RAM, from RAM into L2 cache, and from L2 cache into L1 cache.

Can the wait be reduced? Sure - but then you'd be bitching about how Photoshop takes 8 seconds after starting for the Plugins menu to be available, or to be able to use the airbrush tool, or something along those lines.

Adobe is a horrible, horrible software company. I would be bitter, too.

Still: time yourself re-typing this rant on your iDevice, with the keyboard that doesn't have numbers on it, battling it's incessant desires to change words out from under you.

Nobody creates on tablets and phone. It's a consumption device. People who make stuff use desktops. And when you render and model and tweak and do production work, launch time is a tiny fraction of your day.

When you're flitting from coffee shop to coffee shop, yeah, waiting two minutes for Seesmic's Adobe AIR nonsense to launch so you can send a tweet or check Facebook to make sure your ex-girlfriend hasn't posted flower pics on Valentine's Day probably seems like a Real Bother. How lucky we are that our iDevices let us perform these incredibly-productive activities so efficiently!

A better version of this essay? "Performance is a feature. It's an under-prioritized feature."

Adobe could easily make its apps launch instantly ("scanning plugins... ???!"), and it would take far less engineering effort than that piece of crap iPad Photoshop Lite thing they wonked together. Does that launch fast? And does it matter, since you can't really do anything with it?

But the problem is that all programs have long launch times. It adds up, and causes stress, just like traveling through a congested town with lots of traffic lights causes stress. It accumulates.

And a long load time also deters one from using an application. For example, suppose I want to make a quick edit in an app, but the app will take 10 seconds to load: I am more likely to say "to heck with it" and go onto something else.

Load time matters. Or more accurately, the time to bring an app to a ready state matters.

Commodore 64s turn on instantly! I agree with you too. I'm a software developer who has written a few freeware apps that pride themselves on a single EXE (not tons of DLLs) so that you can plop it on a flash drive and carry it around with you and it just runs and it just works. Steve Gibson (Gibson Research) has a similar opinion and goes so far to write a lot of things in good old assembly calling it simple is beautiful. I honestly believe much of what we see in regards to slothware has much to do with the language. Take .NET for example. You need that God dam .NET run-time or you download a .NET app (written in C#) that complains your .NET environment is not up to date, bla, bla, bla... It comes down to software developers who are green and picking path of least resistance in terms of language in my opinion. Read Joel Spolsky's essay on the problem with Java Schools....

There is a worse case: Software that starts and doesn't show you anything whatsoever until it's darn good and ready. Ten seconds go by. Twenty seconds go by. Nothing. The natural reaction is: Did I double-click that icon properly? Maybe I should do it again.

Here is an example: the Komodo IDE. I just started it to see how long it takes to fire up. Answer: 25 seconds till it opens a small window that blossoms into a bigger window in an additional 10 seconds. 40 seconds till it's ready to go. I like it as an IDE, so I endure it.

Bingo. Like the spinny icons, the splash screens true calling is to tell the user something is actually happening.

As a survivor of programming Word Processing programs under Unix in the '80s - this is important. If people don't see something happening, they think it's broken. They call you. You say wait.... it's coming...

I would be interested to see your lite-ness solutions in practice (cloud, lite version) i have a feeling its one of those ideas that look good on paper that fall apart when put to the test e.g. silk browser

Well, when you start up Photoshop, you probably either want to create a new image, or else open an existing one. That being the case, there's probably no point doing anything related to functionality more than one level deep in the menus. Maybe it could remember your most commonly used functions and only load them at startup, while things you've never used don't get loaded until the day you actually click on their menu item.

If you cried about World Hunger or crisis in different Countries like Pakistan, I would give my two cents but you're ranting about something that isn't that important, perhaps if you're a programmer, I sure you CAN DISABLE THE SPLASH SCREENS VIA REG and blaming MS for the load time is just stupid. Invest in an SSD.

Mood-setting fluff that tries to compensate for irritations just makes people more angry. The splash screen itself is an irritation when someone already has in mind what they want to do with a program.

I laughed my ass off and enjoyed the article. I totally agree with you. Bloatware and cheap software are the scum of the earth. Just as IE6-9 or like a any other webserver runing on windows. Switch to linux and run windoz 15 minutes a day only if you badly need to. I can bet even Adobe can do better on linux as it proved with OSX. Splash screens wouldn't take that long either if the OS would efficiently use resources.

Take some of the crapware off your PC and it will start in 17 seconds with an SSD; phones take longer to boot than that - you actually mean how long they take to wake from sleep, which is 3-5 seconds for a decent modern laptop PC without the crapware on. Andy why are you shutting down Windows or Photoshop at all? Leave it running and hibernate - that's what your fast little phone does. Getting to work faster; cool. Doing it by with fake code that pretends to take input? That sucks. Lazy load stuff, or be like Paint.NET and just load faster. While you're ranting on Photoshop, did you know the most bugs filed are still with the installer?

Back in 2007, the New Museum in NYC opened with an exhibit "Unmonumental: The Object in the 21st Century." While the analogy between art and software doesn't extend very far, and the politics of the art world are a different thing entirely, one could perhaps make a case for "Nonmonolithic: Software in the 21st Century."

The comments here smack of denial. Ignoring an ongoing issue or pretending it doesn't affect you (or worse, belittling those who point it out) won't make it go away. I'm reminded of an oft-used phrase:

"This is why we can't have nice things."

Load times for corporate software are in the toilet and aren't going to get better until they are pressed to do so by users adopting competing products. Autocad, Adobe, Siemens, Microsoft et alia have no reason to provide a better product because you fine folks are busy letting them get away with mediocrity.

To be fair, resuming my windows laptop from sleep takes under 2 seconds, that's than the time it takes for me to adjust the screen to the correct viewing angle. Resuming from hibernation takes around 15sec. Booting an iPhone/Pad from scratch also takes +1 minute. Everyone who shuts down windows completely are idiots. This wastes both the boot-time and the time for every program to start.

But otherwise i agree with every line of your post. Splashscreens has to die and software has to become faster!

Let me summarize all the haters so far:A) Who cares if software takes a long time to startup?B) Why don't you change it by writing better software?C) Why don't you throw hardware at the problem to make it faster (SSD)?D) General trolling not worth responding to.

My responses:A) Any way that we can make a user's experience faster or easier to use we should do because some users actually feel their time is valuable (like me).

B) Like the writer understands since he works at a bigger company, I also understand that one developer who wants to write things smaller, faster, easier to use doesn't change the opinion of a company motivated to make money. No matter how smart or elegant, one developer, cannot single handedly fix that big piece of software by themselves. Big programs take teams. Teams are led by a company. All these members have to value the traits the author is stating here. As much as every geek wants to believe, there is no one man coding army.

C) This has been the excuse for bloatware since the beginning of cheap hardware. "Hardware is cheap, just throw hardware at it". While throwing that next wiz bang piece of hardware at the problem may solve some of the performance issue, it's a band aid. The problem being discussed is around how software shouldn't take more than a second to be usable. The most wiz bang hardware available to consumers doesn't get us there. So stop trying to promote bandaids to a real problem.

For what it's worth I'm not an old developer by any standards. I've been in the field for 4 years and am in my 20's. I am also disgusted by how much of my time software wastes in a day. I, like the author, understand that as much as I try to write performant software, my opinion gets taken away by the developer sitting right next to me who is willing to "take it".

The real solution will come when *the majority* of users get fed up with the performance. I was hoping since this article was written with tech people as an audience you'd have a lot of agreeable people. Apparently the apathy has even wandered into the developer community. Pretty disgusting IMO. We should know best that this problem is solvable and should want to fix it. Instead you have a bunch of people chiding you for trying to advocate software being less bloaty. Very disappointing.

B doesn't explain the hordes of open-source idiots bent on imitating Windows worst mistakes and then some. It may be some use as an argument against them, although the majority will not listen. Experience indicates they will invent the most amazing counter-arguments. By "amazing" I mean "how on Earth could someone be capable of coming up with rubbish like that and still qualify as a programmer?"

*sigh* I'm disgusted by software today, too. I've been using Linux for about 15 years and the way it's gone gives me the creeps. Loss of flexibility and bad design have been steadily creeping in the whole time, accelerating rapidly in the past couple of years. I use 9front as a platform for almost all my tinkering and scripting now, it's a very capable OS in the purest sense of the term, performing well and having network transparency light-years ahead of any unix, but doesn't have any of the code mountains needed to provide "capability" in the modern sense.

You may like cat-v.org, although you will need a thick skin to get involved in the associated IRC channel and the 9front community too. Those guys don't stand for people supporting crap.

Good article. As a developer battling "the business" for better coding practice, development techniques, and better user experience I feel your pain. Too much is given higher priority than the user! I think a few of the people leaving comments have missed the point! I hope you keep your job dood!

Why have I not come across this blog before? That about splash screens telling the user their time is worthless is exactly what I've always felt but never put into words. I mean 'always', too, it was one of a number of things adding up to the feeling I got from Windows way back when I first used it: "We don't give a toss about you."

In the 15 or so years since I switched to Linux I've seen the same attitude creep inexorably into all levels of open-source systems too. I couldn't ever take any of the desktop environments seriously, although I tried, because they just pile on senseless... rubbish. (I find it really hard to think about computers today without swearing.)

I tried for many years to run a lightweight, sensible computer system. In the end it was the Web which defeated me. The "technology" of the World Wide Web is the biggest and sickest pile of bullshit of all, and the rapidity with which the W3C pile on more rubbish beggars belief. Did you know that webkit had to double in size to support HTML5? It's not as if it was small before, it was already vastly larger than portions of the system traditionally considered impressively huge (judging by compile time, at least,) and webkit-based browsers still are some of the smallest around.

Besides that, all web browsers except Opera require the very worst abominations of present-day Linux systems. I've almost given up trying to keep a clean system for my main desktop system. There is some other choice, most of my personal computing if not web-related runs on the Plan 9 operating system. Plan 9 is saner than Linux ever was; Unix had acquired a good deal of cruft before Linux was even concieved, and Plan 9 networks very fluidly where Unix is still kludgy and awkward because it was never designed to network.

Actually I use a fork of Plan 9 called 9front. Although "9fans" generally find Plan 9 because they're looking for a clean system many bring with them the same attitudes that resulted in so much rubbish being poured into Linux. 9front on the other hand strives to remain clean. The developers have a somewhat jocular version of militant purity. Nazi jokes abound, but at least the system stays good and nobody bursts a blood vessel except me when I'm philosophizing about the "progress" of computing. Hardware is still something of a problem, but even after spending a day on the insanity that is Intel HDA audio, Cinap can still say "Writing drivers isn't hard," so it can't be that bad.

The flip side is if I want to do any image manipulation beyond a few scripted transforms on Plan 9 I'd have to write the program to do it. At least writing the program would be far easier, and there would be no need at all for that "looking for plugins" delay (which, yes, peeves me when I use The Gimp, too). Actually that first statement isn't quite true, you can scale and crop quite nicely using just the image viewer and the window manager (although at the moment a little border is added, I mean to look into removing that). Plan 9 is that flexible, which is really liberating when you're programming. It's real programming, getting the machine to work for you instead of running an insane maze formed from both artificial constraints and thoughtless design. Well, there is a maze, but it's many orders of magnitude less complex. Unfortunately my programming is badly held back by my health, otherwise there would be a half-decent image program for Plan 9 already.

sorry, but the splash screen is the smallest annoyance in the adobe bloatster collection. Watching the whole system grind to a halt while after effects is doing something or waiting 5 minutes everytime an auto-save happens while you were trying to do something (as everybody knows, it's suicidal to work on any big project without auto-save set to a very short period) are slightly more annoying, especially as those things happen in powerful workstations as much as in laptops - and it wouldn't be half as annoying if each program wasn't chock full of useless features that are only good for showing off in the "what's new in CS-X" screencasts. It makes any professional designer or whatever boil in rage to think of all the resources that seem to be wasted in tools that are never used and seem to be just for marketing purposes.

How is it that Adobe can produce really good software (Photoshop) and really, really, poor software (Adobe Reader). Is there a wall in the canteen marked 'talented programmers turn to the left' or something?

web apps loads iteratively, bits by bits, can we rethink any UI (native, web, whatever) so they're defined as group of atoms loading lazily instead of blocking/modal things ?. Not too much laziness, it's bad for human interactions, but at least placing the cursor somewhere towards the middle.

as much as i applaud this article and the ideas/sentiments contained herein, i've got to agree with ANONYMOUS above: "sorry, but the splash screen is the smallest annoyance in the adobe bloatster collection"

adobe has spent way too much time, effort, and marketing dollars creating and pushing a lot of useless, ridiculous, expensive, "wow" features in their apps. they're slowly becoming nearly incomprehensible, with dozens of menus, pallettes, prefs, options ... and they're RIDDLED with bugs. why the hell don't they make things WORK before moving on to new crap that so few want or need? how about putting some of that money into actual customer SERVICE? i invite the readers to check this out:http://amplicate.com/hate/adobe

you're batting 390, adobe. might be good in baseball, but in the world of software, you flat-out SUCK.

Wow - first world problems. Honestly, isn't there more to life than saving 5-10 seconds when launching an application such as Photoshop. I'd say you have a damned good life if you are complaining of the time spent.

"Or appear to start, at least. Show me a screenshot that looks like Photoshop. Trick me into thinking it's running."

Jef Raskin's "Canon Cat" did exactly this, 25 years ago: it showed a screenshot of the last known state of the computer for the couple seconds it took to actually load the real software.

It's a trick, but a good one: nobody turns on a computer and then starts typing the first second it's on, so the effect was that the little 5 MHz machine really did seem to boot instantly.

I've heard of a calculator app for the iPhone that did this, too. There's a resource in iOS apps that holds a bitmap to display while it's loading the app, and usually it's just the app's logo, or the main screen with no data, but somebody (can't remember who) got clever and saved the screen image there.

I would rather have my Application load fully than trick me in to thinking its loading only to piss me off that nothing i click on works. I think i can wait the 20 seconds. Besides anyone who thinks a phone or tab can handle a real set of applications or games, enough to replace an actual pc, is fooling themselves.

Do most regular users even use programs with splash screens anymore? I think the most common splash screen they are likely to see would be for Microsoft Word or Excel and those don't really stay up for more than a few seconds. Is that really so terrible? I can live with a couple seconds of splash screen so long as once it is over the application is fully responsive and has a well designed UI.

I think software engineers have bigger fish to fry than shaving a few seconds off the load time of their applications... I WISH the industry was at the point where this really was our biggest problem, but there's still all sorts of battles to be fought over standardization of common protocols and good UI design which I think are more important to user experience than splash screen duration.

Programmers today are misled. Donald Knuth once said "premature optimization is the root of all evil". Programmers have taken this to the extreme and forgotten all about optimization altogether. We now have operating systems that require 3D acceleration and many GBs of memory just to function properly.

The best computing decision I've made recently has been to switch from Ubuntu and GNOME3/KDE4 to CrunchBang and Openbox. My aging hardware is suddenly usable and fast again.

Attention developers: Please optimize your software again. If you have to, say to yourself: "Knuth was wrong. Knuth was wrong. Knuth was wrong." Make it your mantra if you have to. And then optimize away. Perhaps even "prematurely"; performance should ALWAYS be a primary concern.

Knuth wasn't wrong in the least. The problem is that many software developers either (A) don't understand that "premature" is an important qualifier and is *not* talking about "when in the product lifecycle it should be done", and/or (B) *are* optimizing, and are doing so in the wrong spots because they're being premature about it.

Premature (in this context) means, quite simply, "when you haven't spent the time to determine *why* it is being slow", or sometimes possibly "when it won't produce a noticeable benefit" — but mostly the first of those two.

I think I'd take a different approach and focus on 'load on demand'.I don't use Photoshop, mostly I rely on the open-source stack (could never justify the cost of a Photoshop license), and use such tools as Gimp. Gimp likes to be vocal about what it's up to during its splash screen. A lot of the things it's loading are things I don't need on startup. Why load all of the plugin and filter stuff, for example, or the entire font stack, if I'm only going to end up resizing the image. Why not wait to load the necessary components when I go to use them for the first time (and stay resident).Yes there are separate small and lightweight tools for doing that, but there really is no argument against Photoshop being a one-size-fits-all.The common anecdote 5-6 years ago was that the average Microsoft Office user used barely a 1/3rd of its features.. surely a perfect candidate for load on demand?

Bloat is something that affects the entire software industry. An obsession that we can't seem to get around. Back when Firefox was just a 0.3 release it was lightning fast (especially compared to IE6), and brought useful features with it. Slowly but surely it's increased in size and loading times, even as hardware has become more powerful.Google Chrome has done the exact same thing. Lightning fast to start with but is starting to show signs of slowness, so newer browsers like Midori start making an appearance.. and so on the cycle goes.

In the mid-90s I was a graphic artist and used Photoshop 3 on my office Mac ever day. I used to do professional work, using a machine that had 4Mb of RAM, running at perhaps 100Mhz - I don't recall. Photoshop 3 was a full-featured program, with layers and everything I needed. It took about 20 seconds to load, with all its plugins.

Some years later I was using a Windows ME machine with a 800Mhz processor and 64Mb of RAM. In any case, the machine was far more powerful than the Mac I used earlier. Photoshop 3 was no longer available: we then had Photoshop 6 or something like that. It also took 30 seconds to load.

BUT, I had a copy of Photoshop 3 for Windows, and I decided to try it. It loaded INSTANTLY! In literally under a second, it was up and ready to go, all plugins loaded, splash screen gone, the program sitting there waiting for input.

Today, if I run Photoshop Elements on my Macbook Pro with 4Gb or RAM and its two multi-Ghz processors, Elements will take ten or more seconds to load. Yet, it is a less powerful program than Photoshop 3.

So what gives? I would love to go back to Photoshop 3 and have it start instantly. But it is no longer supported.

What the heck is Photoshop doing these days that it takes so long to load? I would trade any feature that today's Photoshop has over Photoshop 3 to get a program that loads instantly like that!

I think the plugin architecture allows 3rd parties to be sloppy. If you have a ton of plugins which need to initialize, it's tough. You can't link all that up at compile-time obviously. Perhaps they could allow the plugins to register all their event handlers and such in the background once the app has started. But it probably takes a significant amount of work to load that all dynamically rather than initially. Anything that the plugin can touch would have to be capable of updating on the fly..

It's a tough problem. Adobe probably wants to focus on giving plugin authors as much capability as they can. That comes at the cost of longer load times. There's probably a constant back-and-forth where older features get optimized for faster loading but the newer stuff slows it down again..

Hey... if you are dissatisfied with the performance of existing bloatware, as you call it... feel free to write your own competing product that blows existing ones out of the water.

Because really, if you don't have the technical skill to know how to accomplish what you are asking for, what makes you think it's actually even feasible?

The reason software is "bloated" is because it's designed to do a lot of stuff, and that complexity takes time for the computer to load into memory and set up. Either live with it, or feel free to compete on your own and show all of us lazy programmers just how awesome your coding skills are.

It's less a matter of skill and more of resources. It is fairly straightforward, almost trivial, to provide a usable UI while loading features in a plugin-based architecture. But actually implementing those features for an application of the scale of Photoshop is not something that can be done by a lone wolf dissident.

1) Things did not boot as fast as you remember. They just didn't make it quite as obvious, in most cases.

2) That said, booting quickly is still valuable.

3) If you're going to show a splash screen, make it *useful*: show progress and details about what is going on. Even the slowest, most toolkit-dependant applications can bring up a progress bar with a changing text label, if they can bring up a splash screen in the first place.

3b) If you do it right, that will also let the user have some clue that it is the 3 billion add-ons that are eating most of the time for the app to boot.

4) If you write a minimalist operating system for today's hardware, it can certainly boot faster than a human can follow (once the POST on the machine gets done). Of course, it will be *quite* minimalist, compared to anything people expect nowadays. Hope you still have a serial terminal around somewhere for displaying the output, though you can probably get away with writing to the video card in the basic text mode. Hope you don't have a USB keyboard, though, since those are a whole lot more complex to support than an old style PS/2 or ADB setup with there was a dedicated chip handling most of the work for you.

5) To put it another way: features cost complexity, complexity costs time and/or space (generally both, but you can balance on against the other *to a limited extent*). Start by listing which features you can do without, and you're a good way along the path to a faster-starting app. That said, good apps make it possible for a user to do this via modularity.

6) All of that said, one of the core principles of good UI design is that it should be *responsive* and *interactive*, no matter what else is going on at the time. At the very *least*, provide a measure of progress and a way to cancel the entire thing and bail out (in case the user accidentally double-launches something, for example).

7) Very little will aggravate a user more than a long startup followed by a long recovery, when they have crashed out of your program. If you cannot recover *quickly*, give the user the option of either (A) not trying to recover at all, or (B) recovering in parallel with normal operation. Bad installs and corrupted files happen, but not *nearly* as often as programming bugs that crash the application.

8) If you want your Linux system to boot like it used to, remove all of the various kernel modules that are tossed into a distribution by default. They're in there so that the system "just runs" on a wide variety of machines, unlike the days of the lean kernel that would run on every machine but yours since you had an Ethernet card made in the last two years (and thus not yet supported in the mainline) and you had to compile your own… which meant obtaining the source for it without having a functional network. Let me tell you just how much fun *that* can be. If removing those would break your system, then perhaps you should consider that the system in question is perhaps not as simple as the previous hardware.

9) Think about use cases for your product. If "start up and immediately start working on " is among them, then focusing on having an extremely fast, possibly minimal boot to get to that *particular* task makes a great deal of sense. If there is more than one, and they have conflicting requirements, look at using some form of "launch hinting" (command line options or binary name) in order to be able to guess which one the user wants most immediately.

My desktop DOES boot faster than both my phone and my ipad. It also patches in the background. Then allows me to reboot it whenever I feel like it. Although I haven't seen many updates to iOS 5 yet so perhaps things are a little smoother now. But I've been using iOS since day 1 of the original iphone. And for the last few years, the process has required it tkae an image of the entire device, update, etc.. A very slow process which takes the device offline for some period of time. My girlfriend is still on iOS 4 because she's worried the update process might cause her to lose data and just doesn't want to deal with it right now..

As far as the instant-on feel, my desktop wakes up with a move of the mouse or touch of a key. It takes my LCDs longer to warm up than it takes the computer to resume from sleep..

And let's face it, complicated apps (eg games) still have loading screens and such on every platform under the sun. I agree that apps like photoshop and outlook could do better.. but I don't think that they do a bad job now. There's a LOT that needs to happen to get those initialized and running.. Hell, even when I launch my email on a JUST booted phone, it usually takes a while because it hasn't finished loading up all the email services in the background which the app depends on..

>I can think of lots of ways to make bloatware look "lite" (e.g., show a UI right away and let an instance of the program in the cloud operate against my gestures, until the local copy boots fully and can re-sync with me). Put up a "lite" UI until the heavy one finishes loading.

I'm laughing so much right now.Oh my god, that's one of the stupidest things I've ever read.

Replace splash screens with an OS-provided notification system and just load the program in the background. Problem solved.

Providing a half-broken UI during startup is worse than providing none at all.

Splash screens are there to inform the user that the program is actually trying to start. The problem with splash screens is that they do it in an intrusive and obnoxious way. A generic, OS-provided system for providing such feedback would be enough.

Every major piece of software has thousands of bugs and features that developers are working on. Improved startup time is often explicitly listed in the set of goals for a new release. It's never the number one priority, as it doesn't drive sales nearly as much as new features. Short story: they know it sucks and are working on it.

You REALLY don't want an app to pretend it's working when it's not. You would be ranting and begging for a splash screen if PS actually did that.

Right on sir. Displaying a splash screen while the entirety of PS loads slows me down every single time. It's an interruption to my workflow. I know some users who never turn off PS because they don't want to start it up. But there's no reason to display a splash screen. And no need for startup trickery either. The first thing I'm likely to do after opening PS is find a file to open - before I'll select tool, or open a panel. So I do think there's a real opportunity for Adobe (and others) to help their users feel successful immediately and thus improve their experience with their software.

All I want to begin is some chrome to tell me I'm in photoshop, and a file system dialog to pick my starting point. That's the start of my workflow, not the PS splash.

Every desktop program I've ever written has started up quickly. Exactly like any other kind of optimization, it's really not that hard: run your profiler, figure out what's taking so long, and replace it with something faster. You just have to want to do it. That's all.

Your complaint makes no sense: I am already writing quick-to-start programs. This blog post says what we're all thinking: we're doing it, because it's not that hard, so Adobe should do it, too! It's even more important for software like Photoshop or Acrobat because it's installed on so many machines, so saving even a couple seconds is a huge win overall.

There's nothing wrong with saying "I'm doing this, and it's not that hard, and it's important, so you should, too". Do you expect all of us who write fast software to take jobs at Adobe (and Microsoft, and ...) to fix this everywhere? There's no magic required: just make it a priority!

In my application (multi-touch for Windows7 desktop), the splash screen hides the real waiting for loading the app.The wait is mainly for the obfuscation process, but anyway.. the splash is really needed in this case.

It seems a few people have already said this stuff but:-Your phone is 'sleeping' not 'off'... if you hibernate your PC you'll notice a similar effect.-SSD memory is faster but expensive. -When you start an app on your phone it (or parts of it) are already running and the app is often just being brought to the front... your pc does the same thing when you alt-tab away and back to a program, much faster than starting the program from scratch. Have you never started a high end game, CAD or graphics software on your phone... it really can take a while.

Sounds to me more like you've been holing out on updating your PC system/hardware for a bit too long.

I see plenty of people posting the "We shouldn't have to fix their problem" in response to "get an ssd".

So why do we have faster computers? Why didn't we all just ignore Pentium 3's, Dual Cores and i7s? Why didn't we just demand that developers make the program run faster on slower computers? If a call to malloc takes too many clock cycles for you, then that's your problem as the user, not the developer's. Either buy faster ram, disk or cpu or deal with it.

Because most users look for new features and not for having the same program running faster. So developers are paid for adding new features, and aside a very few projects, no one cares about performance as long as it stays within some reasonable boundaries on modern hardware.

Have you heard about premature optimization is the root of all evils? For many commercial and even open-source projects, it often means no optimization at all, because when it comes time where you can do meaningful optimization, the project has already missed some deadline, so everyone tries to get it out as quickly as possible.

Lotus Notes is another one. It's so awful that not only do you get a splash screen but a splash screen with a progress bar!!! Oh and it basically prevents you from getting any other apps going because it will take over the screen once the little ice age passes and it's finally loaded! I hate that app with a passion!

Bloatware? I have heard that complain for ages, but it does not seem that vast majority of users are really concerned about that -- if they do at all, it is probably one of the last thing that they consider when it comes to choosing software. Hence nothing has been done to reverse that bloatware trend. As many have been mentioned before, it has always been cheaper to throw more hardware at the problem, and try to lure users by a richer set of features that your software offers. This does not work with mobile devices however, because an important feature of mobile devices is, well, being mobile. You cannot add a lot cheap hardware to it without making it clumsy and heavy. So, developers have to be mindful of limited resources.

Monolithism? It sounds like a dirty among developers but I doubt that users care much about internal design. Ironically, it is not monolotism but a lot of small components (which needs to be loaded) that makes the loading time so bad when you do not have SSD. In theory, you can load them later on demand when the user click on the corresponding menu or toolbar item. But in practice, this is difficult to implement correctly, and any non-deterministic loading leads to bugs that are difficult to reproduce.

"Trick me into thinking it's running."If loading time is just a couple seconds then it is possible to do that while finishing bootstrapping. But if it is 30 seconds (or even 10 seconds), it may have the opposite effect -- you have clicked on some button once, but nothing has happened, so you click on it again... and maybe again without seeing any changes... But then all those cached UI gestures suddenly come alive and that may produce a completely different outcome than what you intended.

I see how splash screens can be annoying, but perhaps the right answer is: "do not turn it off, and just hibernate"

The main factor is your hard disk speed, which is orders of magnitude slower than the other major components in your system. Either replace it with a SSD, use RAID with the appropriate settings, or buy a much faster hard disk.

I remember when OSes were smaller, computers booted faster, etc... but the software was very limited. Hard disks were proportionately faster (but MUCH smaller). Plus, we always complained that it wasn't fast enough... and wished we had a supercomputer. :)

It's easy to complain without coming with real solutions - as it's the case with any very complex piece of software, the initialization time is very hard to optimize. Those who complain that Photoshop is 'just' a picture editor clearly use the wrong tool for the job (when we have also Lightroom, Gimp and many other smaller software for that)

I'd rather it took less time to load (although I do have an SSD and as much RAM as my system will hold, thanks) and I'd also rather not stare at that screen.

There are lots of ways to handle it, including what Kas suggests, or loading basic functionality immediately (so I can open a file) while PS loads less-used things like calculations, filters, etc. But discussing the possibilities is the first step and in a really big company, like Adobe, starting that conversation can be difficult. Starting the discussion in public and generating lots of discussion is a great way of also starting the conversation within Adobe. If Narayen cans you, he's making a mistake.

The real problem is that there's this bizzarre idea that it's ok for desktop applications to take time to load. Web applications should be fast, android apps should be fast but on the desktop, where we have the fastest hardware, it's ok to have to wait for 3 seconds. It takes my hard disk 300ms to read 20 megs. How many applications need to read 20 megs of data to get going? How many apps launch in 300ms? This is where the bar is at!

Kas Thomas, you're not old. Desktops are old and users expectations are 10 years out of date.

Normally, I won't complain about how stupid an article is but Pulse News served this f*cking article to me, without any warning that this is a piece of sh*t.

If you don't want splashscreens then teleport to the future! For now, just shove your f*cking rant in your butt instead of posting it on the web like you f*cking know what you are talking about, b*tch. Yeah, you just made my f*cking day old man.

I'm on the side of the fence that developers need to slap their management team around, kick the marketing team in the groin, and get some real freak'n coding done that does loading in the background, and not at boot. Being a developer, I know it can be done as my largest application deals with plugins galore, deals with non-concurrent threads, and converses with mediums with web API calls as well as database calls to remote machines. Pretty standard stuff now-a-days, and I'm a one man development team.

The problem with Photoshop specifically is that the applications loads all the plugins to memory, assuming the machine has a TONNE of resources available to begin with. Even if there are a tonne of resources available, you're STILL looking at basic IO bottlenecks at the HDD. If I need to go and rotate an image, why would I need to load every plug-in for 3 seconds of work? I could get it done just as fast in MSPaint. Why put the resources the software may not use into memory, there by chewing out memory for other applications? My theory is that the people controlling the devs have been working under the assumption of get it in memory at the start so it doesn't have to be pulled later. Apparently this yields better user interaction, which I call bullocks on, as if resources are limited (Memory specifically) you're going to be putting crap right back on the drive anyways via swap space.

Get the main UI up with the tool bars, the menus, the icon bar, and anything ESSENTIAL (If I could bold ESSENTIAL, I would) to get the ball rolling with what the user wants. User selects FILE> NEW. Great.. Ask the user for the screen dimensions, perhaps file name background style, etc. Just as it is. Then get the resources for the canvas. User wants to import something from a TWAIN devices? User has to go to FILE> IMPORT, and then wait a whole half second while the sub menu for IMPORT is rendered, then displayed. Then once the user gets the right device, load the resources for that device. User does the import, then realizes the import was upside down for some reason. Rotate canvas. Done. Save, quit. Great! Didn't use fonts, didn't use brushes, didn't use gradiants, didn't really use much for colors grading.

Going a route like this would insta-load any version of Photoshop on any 486DX machine with limited memory. There isn't many resources to be concerned with for a tool box, some navigation windows, menus, and a few extra internally custom icon images for the tool bar. Less than a meg of memory, most of it being those icons in the tool box and tool bar?

As for the whole instant-on phone thing? My blackberry 8900 used to literally take about 20 minutes to power on from a cold boot after about a years worth of use. My Android takes about a minute and a half to get to a useable state after getting connected to the wireless, network, and checking for updates, and rendering the screen icons. During that time, both devices are useless and can't be used until things settle down. Once they're on, they're on. "Instant On" technology, by def'n, is "From off, to on". Not "From warm stand-by state, to full on state".

My Windows 7 work machine, running with a 2nd gen i5 and 4 gig of memory takes about the same amount of time as the Android, after POST. (POST actually takes longer to get through than loading Win7 on a ESATA enclosure). However, running Office 2007 practically insta-loads to a working state. Same with Excel. Less than a second, I'm up and running. I just started Excel now for the first time this session, (Start>Run>Excel>Enter) and there was a splash screen, but I could hardly read it before I was greeted with the spreadsheet. The thing Microsoft has done RIGHT with this app is that if it needs something, it'll pull it into memory when its needed, not pile the dung into memory and "hope" its used. There is no "Building Font List" in Office. Just say'n.