I think that the advice, if taken literally, is a bad advice.
But it does point to the fact that the system is not just the technology, but also the people around it
I think that a better way to go about it was to comment first with the proper people that you MIGHT be able to make it run faster before doing anything (all though you know that you already did it). And drop the case if they don't want it.
I can see that somebody might want to move the drawing calculation process to a more powerful box serving more clients, and distribute the client with a different license... in other words, there could be a business case for the original configuration, and knowing it might help you to discover the negative stakeholders (the people interested in the status quo)
Should you always stay out of others people code? I think not, I think that there is a place for it. But from there to modify and publicize the modifications there is a big distance. Some people treat their code as their baby, and no parent like their kid criticized.
People who get upset if you touch their code.
I think in your other comment you missed the fact that there was already an ongoing debate about this particular part of the code, and it wasn't going anywhere. In such a case a demonstration that the other method is faster is more compelling than more fruitless debate. Speculations on other reasons why the code should've used 2 processes is useless, as it is clear from the article that this change made it possible to get things done faster, no need to argue with that.
"People who get upset if you touch their code" which is what i mean when i said that some people treat their code as their baby.
I wrote it before the debate began, it just got posted after it, that is not in my control.
The speculation was to point out that he didn't managed the situation properly, he just dismissed the current implementation as idiotic and proceed to change it. But you missed my point too. Which is why in some scenarios run faster might not be the first priority.
With "the debate" I referred to what is mentioned in the article of the two departments who disagreed about the best strategy.
I don't quite follow you. In the article it's made quite clear that people wanted the code to run faster because then they could get more work done. Yes there are conceivable scenarios in which faster code is not better, but the article made clear that it wasn't the case, so I think the speculation didn't add anything.
> But it does point to the fact that the system is not just the technology, but also the people around it
People come and go. They don't die when they are sacked. They are absorbed by other companies to do other possibly more awesome stuff. There is no point of delaying progress of software because that might mildly inconvenience some people.
If half of the Adobe got sacked over a shitstorm caused by some rogue programmer making Photoshop suck 20% less I'd say it was worth it.
The superpowers of companies is that they can die (or get severely crippled) without utterly destroying of what they consist of.
(In the following, we will stipulate that your "rogue programmer disrupts Photoshop, resulting in a better product and getting half of Adobe fired" situation is plausible, for the sake of illustration.)
The half of Adobe you posit getting sacked wouldn't say it was worth it, though, and from a certain perspective -- namely, their own -- they'd be right.
After all, Photoshop is already the unquestioned leader in its field, and the closest competitor isn't even within shouting distance, so what good does it really do Adobe's business if Creative Cloud's Photoshop component sucks 20% less?
(Yes, no one is happy with the change from Creative Suite to Creative Cloud; this I concede. But those who are unhappy with it aren't decamping to the GIMP or some other laughable knockoff; instead, they are buying CS6 licenses, and they aren't going to be convinced to replace those with Creative Cloud subscriptions by a mere 20% improvement in Photoshop.)
Meanwhile, there are a whole lot of people earning livings as part of Adobe Inc., who, in your "rogue programmer disrupts everything" scenario, suddenly won't be.
This, for good and necessary reasons, makes every one of those people a political enemy of your rogue programmer; after all, whether he means to do so or not, the effect of his actions is to critically imperil those people's ability to maintain themselves, their families, and the position in life to which all of same have grown accustomed.
(This might seem to you like a mild inconvenience. If so, I can only assume either that you're not getting paid well, or that you're only so recently getting paid well that you've yet to accustom yourself to it, and in either case that you're also not carrying a meaningful amount of debt. Hell, I'm not paid all that well, and I carry less debt than anyone I know, and I can assure you that my recent layoff was nonetheless far more than a "mild inconvenience".)
Getting back to our illustration: Of course, I'm sure our lovable rogue doesn't intend to get all those people laid off; indeed, given his laserlike focus on the quality of the product for which he considers himself responsible and his evident and total innocence of matters political, it probably never even occurred to him that such a thing could happen. This doesn't matter at all. Whether he intended it or not, he's put a huge chunk of the corporation which employs him in danger of being laid off.
Expecting those people to react in any other way than by attempting to squash him, by whatever means prove necessary and lie within their grasp, would be foolish; when you threaten a man's life, or something which a man regards as vital, i.e., essential to life, it is only basic sense to expect that he will react as strongly as is within his power. Speculate all you like on why this should be the case; regardless, it is a fact of human existence, and to regard it in any other frame of mind save acceptance is to waste your time and mental effort on utopian fantasy.
And half of a company the size of Adobe is a group of people with a very great deal of power, indeed. Even if we scale down from Adobe as a whole to just the Photoshop project team, at least some of those people are perforce going to be in the higher ranks of management. In fact, since our rogue is a Photoshop developer, at least some of those people are going to be in his direct line of command.
No points for guessing what happens to our lovable rogue when, through his innocence of the political realities of any large human organization, he places at risk the jobs of one or more of his direct superiors. Even if, by some impossible miracle, he manages not to lose his own job, then he's certainly not long for the company, because among the people he's managed to alienate are many of his peers. This means he's got more people looking to put knives in his back than he could keep up with, even if he realized he needed to be looking over his shoulder.
Of course, our lovable rogue being not entirely without some sort of rudimentary sense of interpersonal relationships, even if he isn't shuffled aside immediately and laid off as soon as practicable, he'll realize that his only sensible option is to resign, because there is no longer any chance that he'll be able to work productively with his erstwhile colleagues, who now consider him about as safe to be around as old dynamite that's sweating nitroglycerin.
So our rogue will quit his job, lick his wounds, and find somewhere else to work, and odds are the lesson he'll take from his error is, from the perspective of his future prospects and his ability to advance his career, the single worst one he could possibly choose: specifically, that office politics are incomprehensible, deadly, and evil, that anyone who engages in them is therefore necessarily an awful person and best avoided, as are office politics in general, because an honest hacker can't understand the game well enough to play it, and it'll only end in tears.
None of which, of course, is true. But all of it accords perfectly with the default attitude among software engineers toward office politics, and I'm starting to think that might have a lot to do with the way that the default position of software engineers, when it comes to dealing with management, is "screwed".
I disagree that it is morally wrong to threaten people's livelihoods, or that anything is morally permissible to defend one's own livelihood.
If, by some crazy chance, someone managed to make my job unnecessary, I would just suck it up and get a different job.
I would suggest reading some General Equilibrium theory, which explains why making someone's job unnecessary is actually a good thing overall, even though it might harm that person.
You miss the point in a fashion utterly typical of engineers. I couldn't have paid for a better illustration, and I greatly appreciate your having provided such a fine one free of charge, hence the upvote by way of recompense.
If you re-read my comment, you may notice that I never mentioned morality. That's because morality has no place in tactical analysis. Clutter your consideration with irrelevant philosophizing if you so please; the only effect it can have is to cloud your appreciation of the matter, which at the very least will certainly redound to your detriment. (At most, it will also redound to the detriment of others.)
The point of the exercise, after all, is to illustrate how everyone acts in defense of his own interests, insofar as he's able to identify and further them. There are subtleties; for example, engineers often identify so strongly with an employer as to mistake its interests for their own. But whether someone accurately recognizes his interests or not, he'll still act, as best he's able, to further whatever he believes his interests to be.
It will thus never help you, in understanding how a given person is likely to behave in a given situation, to waste time on whether you think a given action right or wrong. That won't affect his behavior, so there's no reason it should affect your prediction of same. (Whether he thinks a given action right or wrong, as for example if he believes it in his interest to behave in accord with a concept of morality favoring altruism, does matter, of course. But that's something which you can predict, given sufficient observation and analysis.)
For the same reason, considering how you expect you would act in a given situation, or even how you actually would act in that situation, won't reliably help you appreciate how anyone else is likely to behave. You're you. No one else is. Factoring yourself into your analysis of someone else, then, only adds useless noise.
Economics, too, is a branch of philosophy. It will not help you here. Perhaps you propose to explain to someone that your actions, placing a vital part of his life in danger of upheaval, is actually a good thing, or that it's "...a good thing overall, even though it might harm that person." Having so amazingly presumed, no doubt you'll be astonished when it does nothing to placate your interlocutor. Engineers, after all, are often embarrassingly incompetent when it comes to interacting sensibly with other people.
But all of this overlooks the fundamental handicap you evince, which is the inability to differentiate between a philosophical exercise and a tactical one. The former can be a diverting pastime, perhaps even on occasion a valuable one. The latter, effectively pursued, will show you ways to preserve your position and achieve your goals -- and also enable you, should you so desire, to help others preserve and achieve theirs. Ineffectively pursued, or worse not pursued at all, it will have the opposite effect.
Perhaps this seems cold to you. Reality's like that. But consider: technology is applied science, and science is systematized knowledge. What I describe to you here, admittedly in very general and ill-formalized terms, is simply a means by which to develop, systematize, and apply knowledge in the realm of interpersonal relationships. As with any technology, whether it's "right" or "wrong", "good" or "evil", depends entirely on how you constitute those categories and how you employ the technology at hand; no morality inheres.
Perhaps, too, you prefer a diet of pablum to one of red meat. It's your lookout either way; I freely concede that, were it not to my benefit in helping me refine my (as yet still rather inchoate) understanding of the subject, I wouldn't be engaging in this discussion at all. If it's to your benefit as well, good for you! If not, well, that's your problem, isn't it? I may be named for a priest, but I've long since abandoned any pretensions to being a redeemer.
> The half of Adobe you posit getting sacked wouldn't say it was worth it, though, and from a certain perspective -- namely, their own -- they'd be right.
Maybe I wasn't clear enough that I'm expressing my own perspective by which expanding of scientific, technological and creative capacity of humankind is priority over almost everything apart from preventable loss of life.
> effect of his actions is to critically imperil those people's ability to maintain themselves, their families, and the position in life to which all of same have grown accustomed.
(This might seem to you like a mild inconvenience. If so, I can only assume either that you're not getting paid well, or that you're only so recently getting paid well that you've yet to accustom yourself to it, and in either case that you're also not carrying a meaningful amount of debt. Hell, I'm not paid all that well, and I carry less debt than anyone I know, and I can assure you that my recent layoff was nonetheless far more than a "mild inconvenience".)
If you are interested from where I come from I'm getting paid well only recently. If by "accustoming myself to it" you mean borrowing shitload of money on account of my future anticipated income, then yes I haven't accustomed to my high pay, neither I'm intending to.
It helps that I'm not a fan of cars, houses and social status.
I know that for some people it is a life struggle to find and keep jobs. But most of people involved in software development are not that people and if they make it a struggle it is by their own choice. Even though they are paid more than few times than the amount other people can live comfortably off of, they manage to pile up debt so high that earning a living becomes their life struggle as well. Some even draw perverse sense of nobility and meaning from it. They can now see themselves hardworking breadwinners even though staying afloat would not be any concern if they just hadn't put themselves in such a financial conditions by living above their means.
Why am I calling software development employee being sacked a "mild inconvenience"? If you wan't me to explain from personal angle I'd say that decade of freelancing and bootstraping companies without much success but also without dire failures that would have left me indebted ensure me that my sense of financial safety as a software developer is in no way associated with having a job. I know for a fact that I can live off of 20% of what I'm earning now for many years. To keep himself afloat software developer needs a computer and ability to communicate with it and with people who want to make a computer do things they themselves don't know how to force it to do. Job is a nice thing but optional.
I'll give you that not being American helps massively with financial safety. No one required from me to put myself deep in debt to educate myself. No one required from me to put myself in debt when I or a person close to me experiences medical emergency. No one requires me to pay rent to landlords of San Francisco or to greedy US financial sector in form of mortgage. What astonishes me is that so little people exercise their ability to stop being Americans. I know it's hard and they'll try to rip you off one last time on exit but still...
> After all, Photoshop is already the unquestioned leader in its field, and the closest competitor isn't even within shouting distance
IMHO closest competitor to Adobe Photoshop is Adobe Fireworks, but since it's no longer Macromedia Fireworks it will stay out of even shouting distance forever. Same goes for every other contenders since we allow leaders to just buy contenders. And as for opensource alternatives there won't be any until better tooling will draw more competent ux and visually talented people to opensource software development.
> so what good does it really do Adobe's business if Creative Cloud's Photoshop component sucks 20% less?
I'm even less concerned about Adobe's shareholders mild inconveniences than about Adobe's workers mild inconveniences. Making Photoshop users jobs they do suck 20% less would be huge and for me would outweigh even total collapse of Adobe.
I wasn't. I'm expressing. My own. I come. I'm getting. I haven't. I'm intending. I'm not. I know. I'm calling. I'd say. Would have left me. Ensure me. My sense. I know. I can. I'm earning. I'll give. Required from me. Put myself. Educate myself. Required from me. Put myself. Close to me. Requires me. Astonishes me. I know. In my humble opinion. I'm even.
The point I'm making is that you are doing everything but looking at the question from a perspective other than your own, and that's the sine qua non of competence at office politics -- the correct analysis of the social and political pressures currently affecting any given other person, and how a prospective action on your part might influence them.
To refer briefly back to my example: If our lovable rogue doesn't care whether, by attempting to improve the product, he risks both getting himself fired and damaging the political situation around that change to the point where it has no reasonable prospect of being made in the definite future, then he should go right ahead and do what he wants to do.
If either of those concerns matters to him at all, though, he'll be much better served by instead laying off a ways and making sure he's got a solid grasp of the situation, and only then commencing to consider how to make the change he wants to make in a way that'll favor its survival, or whether there is no such way and he'll be better off just adding it to his "when I find a way" list.
But it does point to the fact that the system is not just the technology, but also the people around it
I think that a better way to go about it was to comment first with the proper people that you MIGHT be able to make it run faster before doing anything (all though you know that you already did it). And drop the case if they don't want it.
I can see that somebody might want to move the drawing calculation process to a more powerful box serving more clients, and distribute the client with a different license... in other words, there could be a business case for the original configuration, and knowing it might help you to discover the negative stakeholders (the people interested in the status quo)
Should you always stay out of others people code? I think not, I think that there is a place for it. But from there to modify and publicize the modifications there is a big distance. Some people treat their code as their baby, and no parent like their kid criticized.