His proposed solution sucks too. Show the UI while it's loading so the user can impotently click around waiting for the program to "turn on". Windows does this when it boots up and it drives me insane -- if the OS or program isn't in a usable state when you show it to me, don't show it to me
Loading speed is just one of a multitude of factors that come into play when making software. According to this Adobe employee it should be the chief most concern, even dominating other things like features, usability, UX, cost, technological debt, etc.
The spashscreen does 1 thing, it tells the user that the app is loading and you don't need to click the exe/icon again.
His solution to a 5-10 second load time is to provide a fake UI, record phantom mouse clicks, and also give the user a game to play, only makes everything worse.
Some apps have to initialize, and without that you are left with an empty shell of a UI that has no functionality. Or even worse, a slugish UI that initializes in-place or during work... Which then causes the typical user to go online and rant about how his app is broken or unresponsive.
Though I like what he has posted on the rest of his blog...
This is the wrong way to notify. Let its dock icon bounce on (or similar), instead of obscuring the center of the working area on the computer.
Anyways he's solving the wrong problem. What he really wants is to have the OS log him in, lock the screen, and load his common apps before he gets to work.
And they're not enormously complicated, paint opens instantly and has the same UI. Word is little more than a glorified textbox. Programmatically all the features make those programs enormously complex, but the actual common use of the programs are simplicity itself.
The Adobe apps still do have more significant load times, more like 5-8ish seconds, but RAM is cheap, just load that app once and keep it open forever. Hibernate your system instead of shutting it down cold so that the apps don't have to reload from initial state when you next use them. This also makes Windows pop up very quickly (but even from cold boot modern Windows only takes like 15-ish seconds on my (again 4 year old) system), which isn't anything to complain about compared to any other desktop OS out there.
All in all, I'm in the group of people very confused about this post. I'm historically someone who absolutely hated long load times, but it isn't something I've worried about for any app or OS I use in years now.
Having a power cut during a Windows update shouldn't result in a completely trashed system.
I'm curious if cutting the power on a Mac while it's moving files into place will break a software update, or if the whole package receipt mechanism prevents that from occurring.
Transactional NTFS is implemented on top of the Kernel Transaction Manager (KTM), which is a Windows kernel component.
Because this is implemented on top of the kernel itself, if you have brought down the kernel in order to update files within said kernel, you likely are not going to be able to leverage the transactional rollback. You might able to do a system restore, if you boot from CD, but breaking your kernel is not an easily recoverable situation. I suspect there are actually safegaurds in the update procedure which protect against this situation, but things can go wrong and it is really not something you want to have to rely on.
Something like this:
1. Download all compressed archives that are required for the update from the update website and unzip somewhere.
2. Check the package manifest and figure out which files need to be changed/added/deleted.
3. Write a flag somewhere on the boot drive that says the update process has begun and which files will be altered.
4. Make copies of all the files which will be changed.
5. Work through the update process by modifying or overwriting the copied files with the contents of the update archives.
6. Temporarily suspend the scheduler so the update process is the only thing running and release locks on all of the files which will be changed.
7. Work through every file that needs to be changed and link the filesystem reference from the old version to the new version whilst keeping a copy of the old version.
8. At every stage in 7 mark in a log which references have been updated.
9. Mark a flag to indicate that the update process has been completed, either resume the scheduler and re-instate locks or force a restart of the OS if necessary.
When the system next starts up as part of the bootup process it can check if both the transaction start and finish flags are set.
If the start flag is set but not the finish flag then it knows that an update failed so it can roll back by re-linking to the old versions of every file (reading the logs to know which files to re-link) and setting the start flag back to 0 so it can try again.
If the update was successful then it can delete the old files if the disk space is needed or keep them around in case there is an issue later which required a restore.
In regards the kernel example, my Linux install actually keeps old versions of the kernel on the system so that if a kernel update breaks something for whatever reason it is still possible to boot the system from the previous kernel. I imagine Windows and OSX do something like this , although possibly more transparently.
Note: This is what I could think of off the top of my head, I'm sure it's not a perfect way of doing it but it demonstrates the idea.
This can be done for directories too - make a new one, write changed files and hard link unchanged ones, then FSExchangeObjects. Obviously this scales linearly with the number of files in the directory, so it's not perfect. I'm not sure if / how any of this is used for system updates, though.
The programs from Office 2010 have a _x on the splash screen which lets you easily minimize/kill the program in question. It's really snappy, works like a charm.
Although I agree with the annoyance of accidentally opening something like Photoshop and having to wait to close it. But a good number of resources that is loading is third-party stuff that demands to be present immediately on startup as opposed to being loaded on demand. But whatever.
Paint has the same UI as what? I hope you're not comparing it to Photoshop or any other professional level software. I believe the modern version of Word is a good bit more than a glorified textbox.
But then you point out exactly why these programs load slowly in your last sentence. Maybe just start using less complex software?
You do not need to initalize all the 3rd party tools, you just have to find out which tiny little icon to add on a task bar or extra menu items to add, and why didn't you cache that when the extension was first detected?
And how silly of me, of course all the corporations these days let you turn off the updates on their computers don't they?
Stop telling your users that 'if they just..', do the opposite with UI than you do with your code, start programming for the best case scenario, not the worst case.
I don't understand what you are saying about third party tools. Could you clarify? Is that whole sentence talking about the same thing because I read it as having four different topics in there.
If a corporation won't allow you to adjust update settings then that's an issue to take up with IT since they are preventing you from doing what you need, not the software itself. What if the default settings were exactly what you wanted and your IT department prevented it, is that also the fault of the software? I think your complaint is misdirected in this case.
Ask ten different people to define best case scenario and I bet you'll get several different answers. Which one do you choose? You can't make everyone happy but I guess since you're not happy then your way is the best choice? What you complain about telling users "if they just..." is what I call choice. When I say an application won't do something I need then I WANT the answer to be "if you just do this..." so I can have that choice.
Out of curiosity, when was it? Wasn't openoffice.org an option?
Seriously? I mean, my Dodge Neon has the same gas, brake, clutch and steering wheel that a Ferrari 599 has, why doesn't it 0-60 as fast? Stop comparing engine size and complexity, it has all the superficial elements of a sports car! God, you're such a mechanic.
Either way it's going to take some time to load because it's a big application. One way lets you know it's working, the other makes you think it has frozen as you're fruitlessly clicking around. The interface is the least important thing in the application until it's fully loaded.
The idea with Photoshop is, sure, loading the entire thing will take much longer, but users tend to use one tool at a time, and loading an individual tool shouldn't take anywhere near as long.
It also makes sense from the point of view of parallelization. One example of an extremely slow operation is waiting for the user to click on something. So instead of sequentially loading things, followed by the user deciding what to do, Photoshop should continue loading while the user decides e.g. what brush size and color he/she wants.
Like any other, this approach has advantages and disadvantages - it would indeed be frustrating if the brush tool hadn't loaded by the time you started using it, and it would probably require a lot of work for Photoshop to load so modularly and on-demand - but all I'm saying is, I understand the value in the alternative he suggests.
It's possible that what the program is doing at initialization is not loading code from the disk but doing something else, like perhaps checking it has a nice big contiguous area of disk to use for temporary storage or for loading some type of cache into.
There are many times in programming where you make a choice between taking a one-off up front cost to optimise something for faster overall performance vs slower overall performance without the setup cost.
For example with a DBMS you can lose some write performance by having an index on a table and rebalancing when you are writing but the advantage is much faster read performance.
Also A Java program can take longer to run the first time by JIT compiling the program for the platform it is run on but this will mean faster performance of the program itself.
Everytime I start Blender (3D content creation suite) I'm blown away by the time it takes to start. Less than 2 seconds! Ready to use!
Do I call Blender a complicates program? Yes I do. The feature list can compete with the one of 3ds Max.
I remember Blender loading fast as well. But are you sure every single feature of the program is available as soon as the GUI is displayed? Because I wouldn't be surprised if there's some lazy loading going on. Maybe some things finish loading in the background so they are not available right away or maybe some things are loaded on demand to spread out the loading time.
So I guess the launch was faster but waiting for the fonts to load was annoying when I was in the middle of working. During the app startup I'm probably spacing out for a few seconds while the app launches.
I see similar things in other apps. One that comes to mind at the moment is Eclipse where there are certain menu items when you drag over them the app freezes for a second. I always curse myself when I accidentally roll over one of those.
Particular parts of the app that require a lot of disk access may have a bit of a performance hit and so it makes sense to lazy load them, but it is a trade-off and sometimes I'd rather just wait a few moments at launch instead of getting killed by a thousand cuts while working.
Which, out of curiosity I timed it, the "long" loading time for Photoshop CS5 on my machine is less than six seconds. It think I can wait that long.
Everybody seems to be missing the third way: load in the background as the user can already work.
Take those fonts, you could spend 5s loading them during the splashscreen making the user wait, you could spend 5s loading them when first requested making the user wait again. Or you could load them after the program has started, in the background.
Will the user go from "empty document" to opening the fonts dropdown in under 5s? Pretty damn unlikely, and if he does he'll wait for the remainder of the load. In either case, he just "won" 5s.
If I don't have an SSD my drive head is going to be spinning around like crazy trying to load resources from different parts of the disk at once which is going to give me slower overall performance. If you do have an SSD then it's likely fast enough either way.
Ever checked an online Photo editor? (http://pixlr.com/editor/ for example after a quick Google).
Open the page and there it is: your interface ready to use.
This is exactly the point made in the article...
I hope not.
Given the tremendous engineering challenges apps of these size pose the last place I'd like to see developers spend their precious time is on this.
In general no - I can't agree they're "really, really way better" than OS replacements. They're better for some people, worse for others.
It also makes purchasing easier, for example you can just buy photoshop/illustrator/whatever and have all the features you need straight up rather than having to choose between programs for different actions (say one program for drawing vectors , another for applying filter effects, another for format conversion etc etc).
And on his proposed solution, he asks developers to empower users, to not make users feel belittled, and at the same time he asks developers to trick users into thinking the full app has loaded. How can you avoid belittling someone and trick them at the same time?
You can kind of achieve this with Windows + Adobe stuff too. Just don't quit Photoshop when you're done using it, and don't turn the computer off, put it to sleep. If you have an SSD (like your iPhone), then swapping Photoshop back into main memory will also be much faster.
Of course the OP is right, Adobe stuff is bloatware and sucks. Fortunately for non-pro designers, there are alternatives like Pixelmator and Paint.NET.
Some apps, like my browser, mail program, the terminal, Emacs, ... I love having start quickly, even if it's because they were just in the background before.
Other stuff, like Preview, I don't use often enough to care about the load time, and I would probably configure it to exit when the last window closed.
Under Lion, that is (sort of) what Preview and TextExit do. When you close all open documents in Preview and then switch away from the app, the app will terminate.
That's the whole paradigm. Windows belong to applications, but applications aren't windows. That's one reason the menu bar is divorced from any window (along with Fitt's law): so that you can interact with an app even when it currently has no windows open.
Basically with command held down the entire time, hit tab until Preview is framed, and instead of releasing command (which would pull Preview to the foreground), hit Q, which will send Preview the command-q event and cause it to quit.
I do not understand what you are saying. Can you elaborate?
Edit: As to my original comment, when I switch to another app, preview stays open, but up to now I don't know how to close it because I can't get the menu to appear without a pdf or something using it, that's why I reopen a document, forcing the menu to show up, then close the app.
As far as the menu disappearing when you close both documents, that's confusing and directly contradicts what you typed earlier. I can open Preview.app, and it'll just show me the menu. I can close it by alt-tabbing to it and hitting Cmd-Q - no windows required.
You could just close it from the dock you know. Or switch to it and command-Q immediately.
In fact, I don't even understand how you'd go around to "reopening a window" of preview, preview will not open any window without a document in it, do you open a document just to close preview or something?
I think the point the author is trying to make is that it shouldn't be up to the consumer to spend more money to make their programs run faster. Software reform is what's needed and "just buy an ssd" is a very strong argument.
Having said that, I agree with the idea of making software less monolithic and making it start up as fast as possible, as long as it is possible. However, when I say that I want a program to start up fast, I mean that I want it to start being useful fast. Quite a few of author's ideas are not about bootstrapping gradually, they're about faking it. It's like going to a place that used to have a "closed for lunch" sign and discovering that it's now open, but populated by robots whose personality is an Eliza-like AI.
And I agreed about the "faking" issue. Just like how Windows will silently keep loading tons of services in the background after a reboot, but shows you a desktop and makes you think you are free to click and launch stuff.
But quite a few of those ideas are useful.
The only ones I thought were a bit out-there were the ones about "just processing it in the cloud" while the local copy is still loading. But other HNers are probably more qualified to judge how realistic this is.
What is a possibility, however, during loading a lot of time is spent on loading all sorts of modules, ones that might not even be used that session, and most definitely not in the first few minutes. Because what is the user going to do first? Most likely it'll be `File > Open ...` and browsing through the filesystem looking for whatever project they intend to open.
You don't need any plugins for that. And it's exactly the type of task that spends relatively a lot of time waiting for user input and not so much time computing or loading things. During this task the app can continue loading modules and plugins and the user doesn't have to wait because they're selecting a file.
You probably need to disable (most of) the instant preview in the file open dialog until it's done loading, but that's a minor trade-off.
Of course you're loading the modules necessary for opening files first (most recently used filetypes first). When that's done the dialog can start showing previews. If the user happens to have found and selected their file before it's done, then, only then they'll have to wait.
Now you're loading the file and it's showing on the screen, the user can browse the layers a bit and ponder where exactly they left off last time. A wonderful time to load the rest of the modules! Of course the features used in this project will be loaded first. If there's no text layers, we can put off loading font-rendering support in favour of other modules.
It's not all load-on-demand, but a lot of user tasks are not as processor- or data-intensive as you'd think, because the user is busy thinking and as long as the UI is responsive enough they're happy.
Facebook, Linkedin, Flickr, IMDB, Dropbox, Angry Birds, Skype, iGo, Quotes, PCalc Lite...
Display a launch image that closely resembles the first screen
of the application. This practice decreases the
perceived launch time of your application.
Avoid displaying an About window or a splash screen.
In general, try to avoid providing any type of
startup experience that prevents people from using
your application immediately.
The idea is to give the user the impression the app has already started instantaneously, and you're just waiting for data to roll in to populate the UI.
The app needs to load something close to 200 fonts (it's a design-oriented app). If they're not all present, the font choice list won't render properly. Lazy-loading isn't really an option -- otherwise the user will be sitting there watching the UI slooowwwlly render each font choice, one by one, while he waits to do something with them. Better to take the hit at startup, IMO, rather than making the user pause while he's in the middle of creating something.
However with (let's say) eclipse or photoshop , when the program loads the first thing it displays is either my code or a graphic I am working on.
How would it allow me to interact with that in any kind of useful way without actually loading the program?
I created a web app recently that had to make an Ajax call but could not allow any user input until this action had completed as various parts of the UI would have to be refreshed with new information.
I had reports from users that they thought the app had crashed since it wasn't responding to their inputs for a few seconds.
It turned out the best solution was to simply whiteout the entire page and show an animated egg timer until the action had completed.
It's only really heavy professional apps that take much time to start anyway.
No, it's just vastly more complicated than most of the cut-down alternatives because it has to meet the needs of pro designers. Maybe there's some accumulated cruft there but I can guarantee you that Pixelmator, for example, would be similarly large if it had to support all the same use cases.
Many people install pirate Photoshop to resize and put a few filters on their photos and complain that is it too slow and complicated when really they could have achieved the same result from either a freeware program or a significantly cheaper commercial one.
I'd rather have a reliable progress bar that says "go make coffee and come back in 5 minutes" instead of being misled to thinking i can use the program in 30 seconds.
But lazy loading for rarely used functions is of course a good solution, as long as you don't use it for everything.
If the author has the splash screen burned into his retina, (s)he's doing it wrong.
I wish I could just get more RAM, but some of us are still somewhat budget limited. Photoshop took enough of my money the first time around.
That's what it ALREADY does, actually.
It takes that much time for just the basic UI code (plus plugin registration etc). It doesn't load the plugins or filters in memory before they are first use.
When I saw this, I was sure you were wrong. However, looking on Newegg, 12GB RAM is about $60. That's just crazy to me.
I used to love Macromedia Fireworks, so that I bought a copy of Fireworks after Adobe acquired Macromedia. I had to jump through some crazy hoops to prove that I did not steal the product, and that was nothing compared to what I had to do after buying a new computer – it turns out that I was supposed to unactivate the product on the old one and then activate on the new one. This is not what you do to your customers. I don’t even want to start on the issue of software quality or customer service (I once did the mistake of trying to report an i13n issue with my copy of Fireworks).
I swore there’s not going to be any software by Adobe on my computer anymore, and I even disabled Flash in my primary browser. I am lucky that I can do with the new wave of Mac graphics editors like Pixelmator. I was so happy paying for that product on the Mac App Store, getting a copy and doing nothing else that would require it to work. I was so happy that it starts immediately, that is has a decent UI. It’s not feature complete, it’s got its own bugs, but it’s a software and experience I am willing to pay for. Unlike Adobe. (Which is a company I once liked, being a typography geek and typesetting our school magazine in an old copy of PageMaker.)
Note the ongoing efforts to get Adobe to free FreeHand, including the recent antitrust lawsuit:
Adobe is just another company where good software goes to die.
I'm like many, however, in grumbling about how crappy Fireworks has gotten (at least on OSX, not sure about Windows) and am to the point that I'm ready to move on.
If your primary use of FW is to mock something up and export it as HTML and image slices, Pixelmator is not for you. You can get a free trial, IIRC, and see for yourself.
So... how much IS your time worth? How much extra would you be willing to pay for instantly-responsive applications? Programmer time isn't free, either.
1. Get a better harddrive setup for his business.
2. Have photoshop start automatically after boot.
A quick timed test on two striped SSD's: Photoshop starts up in 4 seconds from click to ready. Blender takes about 1.5 second.
You're thinking like your existing users will have to "pay more" to get a faster experience, when in reality you are losing money because of the would-be users who give up and go away. A few days spent reducing load times and ironing out delays can make an application feel fast and increase conversion rates. Plus it makes everyone feel good about using the product. Delay==Frustration.
Now if you're lucky, perhaps your startup is in a situation like Adobe where they pretty much have a lock on high-end graphics editing and can say, "You will wait for our splash screen because you have no other choice and we're kinda busy making money here so just wait." That kind of thinking will get your users mad, but since you were lucky. But they'll remember, and have no qualms about bailing out the first chance they get.
The new version of Basecamp (by the guys who invented Rails) focused on speed, because speed = $$$.
The question is, why would you throw away your userbase because your app is so slow to load, it's cutting into their productivity?
There is a very large gap between 'instantly responsive applications' and Photoshop.
I don't disagree that responsiveness and user experience are important, but Basecamp is a webapp. Responsiveness for the most common tasks is a higher priority than the one-time cost at start-up.
I'm not sure anyone is "throwing away their userbase"... How many people stop using Photoshop because it takes too long to start? Now, Acrobat Reader on the other hand...
As you say, responsiveness and user experience are important, and 37 Signals decided it was worth investing a significant amount in. Adobe have decided, over the years, that it is not.
A better comparison are common tasks in Photoshop, like selection, fill, layer operations, filters, etc. - things that are done constantly while using the application. I don't have any point of reference, but they feel pretty responsive to me. If the article was making a case that Adobe has been neglecting optimization for common operations, then bringing up Basecamp or other webapps would be relevant.
I'm not sure how to explain it more clearly than that.
With web applications the key to speed is more about writing efficient JS, having a good caching strategy and ensuring your server can handle many concurrent requests. A lot of these can be solved by the developers simply throwing more money at their server tech, when it comes to client-only applications you can't realistically buy all of your users new computers.
If that's how they operate then quite frankly they deserve to have "lost" that time.
All I do when I switch my computer on in the morning is load up my mail client which opens pretty much instantly and then click the eclipse icon. By the time I've glanced at my mail to see if there's anything urgent that needs my immediate attention eclipse has already loaded.
I would say I lose exponentially more time to interruptions and distractions than I do waiting for my computer to load anything.
The only time my computer takes a really long time to do anything is when I have to copy down a large dataset from production to my workstation to debug some weird issue. This is going to take 10 minutes anyway so I just use the time to make coffee or something.
This service appears to perform a large number of I/O requests (probably reading/writing a large number of small files). It will totally consume the disk seek capacity, massively slowing down every other program that is also doing disk I/O (e.g., freezing Firefox awesomebar searches).
The programmers at the linked blog congratulate themselves on how this mayhem lasts only 10 minutes on a typical computer.
Note: I do not have an SSD. :( This and other idiocies will force me to get one next time.
But the point is that with just a bit more attention to detail, they could have made this process utterly unobtrusive: don't process more than once file per second, if you want want to build in heuristics to infer the disk seek bandwidth.
Btw, Microsoft Security Essentials may be doing things like this. For me, it is totally not noticeable.
And the comparisons to mobile devices are just ridiculous. At least in my use, I'd estimate that on average apps on my desktop launch much more quickly than on my Android phone. And I challenge anyone to find a smartphone that boots up faster than a fresh Windows 7 install on a SSD (or even on a regular HDD).
 I just timed: Photoshop 5 seconds, Word 2 seconds, both from warm caches. And that's with a 4 year old budget laptop.
I think the real problem is that we are all so incredibly spoiled that waiting 10s is a huge inconvenience. I'm not saying it's not annoying. I don't like it either... that squirming feeling you get when you expect something to be fast and it isn't. But, like, get over it.
On a scale of 1 to 10, 10 being the most important issue in the cosmos, waiting 10 seconds for an app to load would be about 0.0000000000000000000000000000000001 (if that). Perhaps there are more important things to write about.
what phone does he use? every phone that I know of takes at least two minutes to come up from a cold start, and has for the last ten years...
Not to mention that HTC has now seen fit in the latest version of Sense to add a mandatory spinning animation that plays for ~2 seconds every time I unlock the phone before I am allowed to use it.
My experience in OS X is that Photoshop has to be restarted very frequently or it just eats up more and more memory until it uses it all. Seems like bad memory management.
If you have photoshop running and using a lot of RAM it is likely that were you to run another application the RAM usage of photoshop would drop to accommodate the other program as the OS will simply drop some of photoshop's pages and let the other program use them.
There is not really any performance hit from doing this since any page that is not "dirty" (i.e has not been written to) which will be basically any pages containing program code does not need to be swapped back to disk.
If you are concerned you should find a way to measure the quantity of IO going on in the swap area since heavy swap IO will be the best indicator that you either need more memory or something is not as it should be.
For example I run a server that is often at 70% or so of RAM usage but has only swapped something like 10MB of data in the last month.
Nevertheless, this kind of rant is interesting in so far as it points to what I think a growing momentum behind the UNIX philosophy. What I mean by that is: small programs that do one thing well and interoperate with others.
I wonder whether the underlying cause of this shift in thinking is the levelling off of CPU cycle speeds. Time was when the performance of something like Photoshop or Office would just prompt you to buy a better computer. People would assume their computer had gotten old or out of date. Now that getting new hardware doesn't magically fix things people are asking why certain things take so long and comparing programs' performance.
Most software can't run for very long. A lot of high-end software can be /very/ unstable (hello, Maya! ;-). The user is not just starting that software once at the beginning of the day for a long productive day of work, they are all to often starting it again after a crash. Or after they shut it down to get enough RAM to run Excel. Or after rebooting Windows for /another/ mandatory update from IT.
I once had to restart a particular high-end compositing package thirty times in an hour. Twenty seconds of the average two minutes were spent staring at the splash screen. But I had to do it, because I needed thirty frames rendered and a particular plugin crashed after running one frame.
The user is not starting your software to admire your credits or the clever graphic design of your logo. They are starting your software to /use/ it get a job done, a job that they have in mind to do and any distraction at all (even a harmless splash screen) is a new stumbling block on their way to resuming their task.
I heard of a study done back in the mainframe days that determined that anything that took less than two seconds felt instantaneous to the user. However, anything longer (even five seconds!) took "forever". In my years of programming, I have found nothing to disprove this (possibly) apocryphal conclusion.
Your user's time is valuable. Your user's mental state and flow are valuable. As programmers on Hacker News, we all know about concentration and flow, right? Extend your users the same courtesy you expect from your tools. Help them keep things going, don't break their rhythm and don't let them lose context.
I very rarely have program crashes these days and when I do it is usually down to either a failing hard disk or that I am using something version 0.x of something.
I do agree to an extent about Windows updates though , these do tend to nark me (especially the nag screens). Unless it's patching something that would allow privileged remote code execution onto my box right now it can wait.
Any company that was genuinely worried about their staff losing productivity due to slow program loads would just install SSDs onto all their computers, afterall this is what we at HN generally advocate.
What I find somewhat annoying though is software that has a lot of "visual effects" such as windows that fade in and out where you can't interact with the program until the effect has completed. This is only annoying though if it would have been instant if the effect was not there.
Frankly, I'll manage my applications myself.
Are you tired of waiting for Photoshop to launch? You might want to try leaving it open...
This rant is not about life, though, it is about what makes for good and bad software. Which happens to be what we do for a living. In the grand scheme of things, we're all dead, and software doesn't matter. While we're here, though, it's not a bad thing to get bent out of shape about the things that bug us about it. It's our job to make this little area of the universe better. I think taking that seriously is a good thing.
But I do think that the original rant was clearly someone who let his rage batter the rational part of his brain into a pulp. He mentions things like that the iPhone experience is now what constitutes "minimally usable". Except that no PC (mac or otherwise) comes close to that level of experience and people are still using/buying them, so clearly he has a different definition of minimally usable than a sane person. He's also so annoyed at having to wait that he proposes worse solutions than the wait itself (a fake UI, that still logs actions; I foresee way more frustration from that than having to look at a splash image).
Yeah, there's a lot of room to improve load times, and a well reasoned blog post on that would have been great. But when someone is ballistic to the point that they can't think straight anymore - I think a little comedic appeal to perspective isn't entirely out of line.
I find it hard to get worked up about a program that you are going to use for the next 8 hours taking 30 seconds to start. Though I do get annoyed waiting for STS (SpringSource's Eclipse) to start up.
One thing that would be very helpful for these plugin based program would be for them to be configured with the minimum to start with. It takes forever for Eclipse to start up because it's initializing a dozen plugins/services that I don't care about. And it's not always easy to turn them off.
It's pretty amazing to fly across the country with only ~8 hours of time spent in transit. However, just because that's amazing doesn't make it wrong to complain about one of those hours being spent on completely unnecessary security theater. It could easily be 7 instead of 8, and that's an hour that everybody's wasting. Yes, 8 is still amazing, but 7 would be better.
Same thing with software. It's amazing that we can do this stuff at all, let alone as quickly as we do. Being able to start something as powerful as Photoshop in an hour would still be fantastic. But when the capability exists to make it start in five seconds instead, it's still reasonable to complain about the gap.
To look at it another way, when you're waiting around because necessary work is being done, that's reasonable. But when you're waiting around for the sole reason that somebody decided his time is more important than your time, that's rightly frustrating.
So, my computers have gotten better and better, while the demands I place on them have remained basically constant, yet boot time stays the same. The only thing I can think to blame is bloat.
You could of course still run an old version of Photoshop on a modern PC if startup time is really that important to you.
I think it would be interesting to compare performance of Photoshop CS5 with Photoshop 6 (the first version I used) on a modern PC.
I would expect of course that PS6 would start up almost instantly whereas CS5 would take a few seconds.
However it would be interesting to also take a relatively large image file of the sort of size that a graphics designer might actually work with (let's say 500MB or so) and apply a bunch of the same filters across the whole image (in such a way as to produce an identical result) on the same computer and time them both.
My guess would be that CS5 would be significantly faster which may be partly due to optimisations made at load time. Not sure if anybody has actually measured something like this though?
Of course Photoshop has plenty of new features each version. Just because you don't use them doesn't mean other people don't. It's a known problem: Everyone only uses 10% of the features in software but everyone has a different 10%.
Adobe InDesign in particular is a huge piece of software with tons of config options and obscure features and what-not, but I've never ever found a feature that made me think "what kind of useless, bloated bullshit is this?" I think Adobe teams fight very hard against bloat, but their business is based around power users and that just leads to a different kind of software.
It was less than six months before he got sick of the "if it takes a long time, don't optimise - stick up a progress bar" attitude and moved out of the country chasing a real programming job again...
I think this is justified though because what matters in a game is the perceived performance while the game is actually in operation.
If when I load a game it spends an extra 10 seconds optimising quadtrees & shaders etc to give me faster game performance and enable 16 millisecond latencies then it is overall worth doing, since trying to load stuff off the disk while I am actually playing would harm the experience.
I imagine photoshop developers do something similar.
So lets see. Supposing I use emacs for 3 hours, 5 seconds is precisely 0.04% of the time I spent using it. I'd prefer if the emacs dev team focuses on new features for me to use during the other 99.96% of the time I spend using it.
Iphone/Android apps are fast because they need to be. Often you use them for 30sec-5 min. On a 30 second use, 5 seconds is 16% of the time you spend using the app.
Developers also have these trade-offs to consider. How much money can a developer justify spending to optimize load-times when there is an easy and relatively inexpensive fix available to all consumers? If they deliver 10 second load times on an average PC that is acceptable enough. If a user wants 2 second load-times they can buy a better computer. It's always been the case with PCs that your results vary depending on the hardware you purchase.
Skyrim for instance, it takes anywhere from 30 seconds to load the initial screen, which is just the logo of Bethesda. You know what is on the initial screen. A button for me to click that says Start. Once I click that button, then I have to hit Continue for it to load the last save point. Then another 30 seconds to 1 minute to load my game/map point.
So basically, two actions and over a minute later, I am finally in the game. A much easier thing would be to just load my last save/map point. I can turn on the console, and know to come back in a minute. Just have it paused until I am ready to play. If I wanted to say restart the entire game, I could go into the menu system from there.
I find this the case on almost all games. FIFA, Madden, Bad Company, Call of Duty. Just start the game I played last. If I regularly play online, go and find me a server automatically. Auto load my game, unless I hold down the start button or some other button that would then default to the menu.
I don't care that Bethesda or EA made my game, I just want to play.
I prefer that a game does automatically load the last save point since it is less effort to simply click "continue" than it is to wait for something to load which I may not even want to do.
I will not be using an Adobe product other than Flash again. I would ditch Flash as well, but last time I checked, gnash was not good enough to replace it yet. That's not an issue though. I'll just wait for HTML5 to kill it.
My android phone (Nexus S) takes longer than my 6 year old Windows laptop do (sure, it's updated with an SSD but even without it would be a close call), my mothers tablet isn't faster either. Solution? I never turn either off. Problem solved.
Hibernate for longer sessions, sleep if battery isn't important and I know I will use it for the next few days.
On my workstation I never turn off heavy applications anyway. On my laptop I'm limited by my 32 bit Win7 OS so that's a burden, but I can work with it. The 8 GB I have in my workstation isn't ideal either, tempted to get a 24 or 32 GB machine but probably can't justify replacing the current machine just yet. I see no reason to get less RAM on a new setup though.
Also I really appreciate having the whole application ready. Having parts of it lazy-load can be way more agonizing than a slow boot. And with an SSD you don't have to wait long anyway, I always tend to fiddle with other windows during the boot so I'm not that annoyed. The splash screen itself can be annoying if it claims window focus or is just in the way but they exist for a reason. There should something telling me that the application is booting (firing up a task manager doesn't count), I agree that there are less obtrusive ways for this than a splash screen though and for that OS developers should be blamed for not realizing this.
Ok, I wait maybe 2-3 minutes for the computer to start (not even that if I just put it to sleep instead of turning it off). I can work for ~8-10 hours so those minutes aren't a big deal.
There are a few programs that are particularly slow to start (eclipse, steam, openoffice) but that's mostly just because there is a lot of code to load and I'm sure a comparable application for a smartphone would be just as slow.
I do run Linux most of the time though so there is probably a bias there towards smaller non-monolithic programs there and not having registry bloat helps.
However I still remember the days of Windows 98 and how horribly slow everything was back then on anything apart from a freshly installed machine and having to wait a full minute for Office 97 to start, we've come a long way since those days. I can't see it taking long before every PC comes with an SSD drive (which is probably part of the reason smartphones seem responsive as well as having a well warmed cache).
As for doing something like running a cloud instance of the program and then somehow syncing back to the desktop app seemlessly, that seems like it would add such an insane level of extra complexity and problems which is exactly what he seems to be against.
Has photoshop gotten faster in our lifetimes? No! It just wants more and more resources with every release. So what is the difference between how apps behave on iOS and how they behave on the desktop? Backgrounding. Very very few apps (ableton live is one that has some "freeze" type features) don't have any way for you to shut down portions of the app or put the app to sleep so that you can start it up quickly. On iOS this is how apps are expected to behave, and it shows.
But, even if Apple did bring backgrounding to the desktop, I imagine Adobe would be one of the last to support it - and I only say this because of my previous personal experience with Adobe products like Flex, LCCS, etc…
I just thank code I'm not a designer...
Of course photoshop is intended for professional designers with reasonably high end computers, it was never intended for the use case of somebody using a netbook to touch up a few photos as there are other programs for that.
As technology has improved people will expect more from designers so they need more powerful tools optimised for working with large file sizes etc so Adobe are going to expend more effort maximising performance on higher end modern workstations then they are making sure it loads quickly on a five year old netbook.
Just because every teenager wants to use pirate CS4 to tack together a logo for their band does not mean that is what adobe should optimise for.
The title starting with "Adobe employee" tries to make it sound like its a significant opinion regarding the matter, the author of the article doesn't seem to be a programmer or holding a position that deals with the process of making a program, what's even worst is the fact that he is completely clueless regarding the matter, he suggest "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", seriously ??? I started wondering if i am being trolled at that point.
It takes 4 seconds to do a cold start of Photoshop on my laptop (which isn't a top notch laptop), on an older computer and with previous versions of Photoshop it would take 10-15seconds which would still be fine, the process doesn't block me from doing something else in the mean time.
If you are using the latest version of Photoshop for web work only, you are wasting time and money for tons of features you don't really need.
I don't understand why people persist in this:
(1) Most hypervisor start-up screens aren't even seen by most users.
(2) Spend that time and effort making the boot faster, not slowing it down with utterly useless stuff!
I'm not saying losing 43 hours of your life per year is insignificant, but a proportional response seems appropriate. You in all likelihood spend more time waiting at red lights.
I hate bloatware. I despise behavior like the sloth and neglect Microsoft inflicted on Windows XP once Vista shipped and I loathe the abandonment of gingerbread phones like my late Droid G1 (unaffectionately nicknamed "the brick" in its final days) by Google once they entered the crunch phase for ICS, but 5 to 10 seconds?!?!?!?
Get a grip... If an app has any mandatory online component whatsoever (not that photoshop does), its boot time is unavoidably non-deterministic. Good luck fixing that (not that there's any excuse for avoiding latency that can be avoided)...
But yes, there is still a long way to go. I don't think we need iOS like hacks such as showing a PNG of the GUI to trick you into thinking loading is done. This solution has its own set of issues (responsiveness, not precisely matching your previous state in case of crash, etc). It's x1000 faster than my phone, we can do better.
Modularizing, as shown above, is hard, but probably the best way to go. As programs grown to the size of a small OS, they should be treated as such.
But in the end, to me it's just one more instance of Everything's Amazing and Nobody's Happy.
I guess I just don't get the tone. Why the righteous indignation? This not Human Rights we're talking about, it's software.
I'm also at Adobe and my team recently performed a ground-up re-write of our application. Minimizing start-up time was a high priority item and we did as much as we could to reduce it, but file importers/exporters, codecs, and some plug-ins need to be validated and loaded at some point - would you rather have these costs as one-time, up-front fees or scattered throughout the application as a thousand tiny cuts every time you open some menu command or function that requires these libraries?
But even so, professional desktop applications are not the same as lightweight mobile apps which tend to perform a limited set of tasks through a specific workflow. To compare the two is unfair and and bit clueless. And he brings up OS startup time, as if it doesn't take a LONG time for my Android or iOS devices to boot up - and they have less excuses as the hardware is pretty standard and fixed unlike my desktop machines.
I think his rant about wasted time is valid, but misguided. There's more time wasted navigating non-intuitive interfaces or poorly laid-out common controls. There a lot more time wasted when an application you rely on to do your job doesn't offer the functionality or freedom of workflow to accomplish what you need.
How is that useful to a user? How many users even know what a "library" is? It might as well have a status bar announcing "Doing TECH thing 1 of 50...."
It seems to me that a splash screen is just a diversion: showing the user just how much Really Important Stuff it's doing hides the fact that they're basically being told to Please Wait. You're trying to make it look exciting, when the truth is it's just getting in the way.
It might as well just splash with "PLEASE WAIT" with no progress bar and no status. It has the same utility.
I see the software splash screen in the same light. It is giving credit to those who have put it together. Now, obviously entertainment is different then a work application, but many of us feel that software is art, just like a movie and that if someone wants to do a credit role then they should.
You may notice if you watch some older movies (pre-1950s, mostly) that they used to run the ENTIRE credits list at the start of the film. The WHOLE THING. Not just the credits you see at the beginning today, but also all the ones that today are listed at the END of the movie, too. The copyright notices for all the songs they used, the logos for their camera and film providers, the names of all the gaffers and best boys and Assistants To Mr. Bigshot... you had to sit through them all before the movie got underway.
They don't do that anymore. Today only a very small number of Very Important People get credited before the start of the movie. Everyone else gets shunted to the end. Why? The answer is TV. When TV came along and movies started getting shown there, they no longer had a captive audience. The audience could now change the channel if they weren't being entertained -- which meant that there was pressure on the filmmakers to GET ON WITH THE DAMN MOVIE. So they moved nearly all the credits to run after the film, rather than before.
That was a bit of a blow to all those other folks, of course, since credits at the end of a movie are credits nobody reads -- they're too busy leaving the theater or changing the channel. But it was necessary to conform to the audience's desire that they GET ON WITH THE DAMN MOVIE.
Which is Thomas' point: users' expectations are changing. Used to be that it didn't matter that much if your app was slow to load, because users didn't expect it to be fast. But the proliferation of mobile devices and lightweight apps is changing those expectations. So if you care about your users and want to hold on to them, it behooves you to GET ON WITH THE DAMN APPLICATION.
I find it fascinating to see the number of different skills that are required to get something like that from a drawing board idea to a shipped product.
Not to mention that sometimes they add some kind of extra "easter egg" content right after the credits as a bonus for watching right through.
You can see the progression even over the last 10-20 years. We used to see the title of the movie, and then a few minutes of scenery with the actor's names on them. These days it's not uncommon for the movie to start almost immediately with the credits integrated into various background elements.
The same evolution has been underway for a couple of decades now with TV shows. Until the early 1990s it was commonplace for TV sitcoms to have a full opening credits reel, complete with a theme song just for that show. Think of the opening of Mary Tyler Moore  from back in the '70s, for instance, or Cheers  from the '80s; they both became iconic representations of those shows.
These intros helped set the tone of the show that followed them. But they generally took a full minute to run, and as the universe of options provided by cable expanded and remote controls became inexpensive, waiting that extra minute for the show to start began to turn off viewers. The push began to GET ON WITH THE DAMN SHOW, and so the traditional musical opening first shrank, then disappeared altogether. Today's openings run much shorter -- 25 seconds max -- and usually include just a couple of title cards and a musical snippet.
Anyway I doubt that all of that stuff is loaded at startup anyway.
Hardware, software, network, total users, i/o, it didn't matter, it was better to say something than let users sit there at a terminal thinking nothing's happening.
Or worse, tell their boss the "system's down again."
No excuse for them today. They just say "big app", it's gonna be awhile.
Linux Mint and Windows 7 take 10 seconds to boot on my laptop with a SSD. That's amazing. Just a few months ago I would go make a sandwich while my PC would boot.
If you have a problem with splash screens alt tab to the browser of your choice. If you think your PC boots to slow take out your smartphone and play with it. This is not to say developers should be wasteful with users time. Especially web developers know how import page speed is. But it's a complex program just give it a few SECONDS.
Also one should mention Steam (the game distribution platform). If you are bored in between rounds you just bring up the steam panel and use the embedded browser to browse the web or chat with friends. But those at times minute long delays. Sure you could embed a email client in the OS the comes up long before the main GUI is loaded but you wont get to read much in 10 seconds.
In other words, use UNIX.
This isn't difficult to understand, guys.
I'd much rather my devs work on useful features instead of trying to fool me into thinking my productivity suite is loaded a few seconds earlier (and also not dealing with all the bugs that that introduces).
If you never "turn off" Photoshop or Office, they too will appear the instant you click on them. Amazing!
IIRC there was something that was basically a "flash intro wizard" however this may well have just been added due to demand from developers for such features.
edit: I forgot to mention my even bigger gripe about the flash intros, and that was because I was basically being forced to sit through a commercial before I could interact with the company. It went (and goes) against the very basics of web use.
But alas, I agree, they were a total waste of time. As I said, the people who pay the bills don't always listen to the people that they should listen to.
Anyone familiar with why you have to have loading screens in games? Would it be possible to pre-load a level while you're playing?
TV Tropes has a list of examples: http://tvtropes.org/pmwiki/pmwiki.php/Main/DynamicLoading
I have always wondered though why when doing an OS install they never provided a game or something interesting to do while you wait rather than show adverts for the product you are currently installing ("Windows 7 has all these great new features!".. "I know , hence why I bought it.."). They could at least give me a browser to use though.
At least for many websites this trend has been stopped, due to mobile requirements.
I don't agree with this faking rubbish though, if it's not usable then I don't care. There's plenty of bloatware to get rid of in these programs, I doubt the splash screen is the biggest of worries!
He adressed nothing beyond his hate for the splash screen, which has seen its time imo, but nonetheless has nothing on many of the other features and tools that Adobe puts out when it comes to bloat.
If Adobe really cared about the user, they don't because they own the brand name synonymous with image manipulation, they would at least make an attempt to tailor the application to the specific user's needs, not the user base as a whole. But they don't have to and will keep doing what they deem good for them until a real challenger appears. And then they'll buy them or sue them into oblivion.
Photoshop (for example) is pretty extensible and has support for plugins as well as scripting capabilities etc, not sure what else you want?
Also part of the reason that adobe is the industry standard is that their applications are consistant and a designer who hops jobs can easily get upto speed in a new environment without having to learn a completely new tool.
are you assuming that every time a developer switches job, he or she has to learn a new IDE. Life isn't like that.
It's not impractical to assume that a user will use a specific subset of all of the tool offerings and doesn't need or use all of what the application has to offer. The app should be able to develop a profile based on what the user actually does with it instead of forcing all of the functionality onto them.
But Adobe makes a lot of money with their product, has no competitors of note and therefore doesn't have to change the way they do business because even if their subsequent releases fail to impress their user base, they're still going to sell licenses.
Besides when you have a program with a long load time, this is not necessarily correlated with the number of features, it's more likely that it's some core part of the program that is taking a good chunk of the initialization time.
The consistency argument is important, especially to anyone who has ever worked on telephone tech support. Being able to give somebody instructions on how to perform an action without having to worry about which of the 1000s of possible configurations their program is in is important.
This is probably one of the big reasons desktop Linux never took off.
Most professional programs like IDEs or photoshop are intended to be used by professional users anyway who will be likely to have a reasonably fast computer and will have invested some time in learning to operate the program properly.
Adobe has actually had quite a few competitors over the years, currently there are programs like PixelMator and in the past they have had JASC , Corel, Macromedia (until they bough them) and of course GIMP to contend with.
Joel Spolsky has a good article on this.
GIMP to contend with? Adobe could give two shits about that app, its user base and the Linux community in general.
This whole blog post reminds me of the "first world problems" meme.
They tried this, everyone got pissed off and asked for a splash screen so they knew it was loading.