I have that kind of thing all the time, all on one monitor, with windows that are side-by-side or partially overlapping (yay for pointer based focus). And if the app I'm working on needs to be full-screen in order to work reasonably, there's something wrong with the app and its UI needs to be redesigned.
That kind of argument might make sense if your screen were the size of a postage stamp. Unfortunately, most monitors are at least 19" today. Plenty enough space for a full-course meal of data.
And maybe the constant cry for 'more monitors', the stupid application design that sort of mentality promotes, and the dumb status seeking annoy me to no end too.
I find using a second monitor for any of these things to be a huge distraction. It works much better if it all lives in the same area is my code windows.
I have browser windows open for this kind of thing, and they share space with code windows. Luckily, most documentation is on sites that don't have web developers that subscribe to the "your window must be n pixels wide to ride this ride" mentality.
I have one monitor on my laptop and at home. I've had two monitors at some jobs, and only one at others. I generally find two to be really annoying unless one has a clear purpose, like a VM or (as someone else mentioned) a remote desktop or VNC session. But those latter cases aren't so common.
I run a VM on my laptop, and I just use the host OS's X server. Then the guest's windows share space with all the other ones and it works just fine.
I have three windows of source code open side by side and I rarely have to horizontally scroll. It's only when people have code that's wide than 80 columns.
I've had two monitors now at two different jobs, and the only way I found it useful was when I was running a VM and let it have one monitor.
I mostly find the concept to be really ridiculous. I have 20-30 windows and several workspaces at any given moment. None of these windows is ever allowed the entire screen unless some idiot web developer doesn't realize that designing for a particular pixel-width display is obnoxious and stupid. And then I just curse the web page and use firebug to edit it into being reasonable.
When I can fit several windows on the screen at once, I have plenty enough context on my screen to keep my mind occupied. I don't need more monitors.
I strongly suspect this is because of stupid IDEs like Eclipse and Visual studio that basically assume they have the entire screen to themselves. I don't know why people design applications to work like that. I mean what's the point in having a multi-tasking GUI anyway if you can't have a whole ton of windows open side-by-side at the same time?
It wasn't obvious in 1988 because a confluence of technologies didn't exist to make it trivial. Coming up with an idea that's not obvious because its completely impractical and then suing people once it does become practical and they unwittingly implement it is ridiculous.
Starting in 1988, Dan Abelow invented, put in significant amounts of his time, and paid hundreds of thousands of dollars in patent filing, prosecution lawyer fees, and maintenance fees to the US Patent Office to create the patent portfolio.
Clearly, someone who spent so much money at the patent office deserves a return on their investment. That's what the patent office is for after all, blatant extortion over things anybody would've thought of given half a brain.
There are some kinds of cleverness that seem simple when you learn the idea, but weren't obvious before the idea was known. And whether or not you think that sort of cleverness should be rewarded with a patent, this isn't that sort of cleverness. This is patenting the bleeding obvious.
The full transaction history of every bitcoin is duplicated to every client. There are ways to handle this issue. If everybody agrees that all transactions before a certain block are really final, you can just start over with a list of all the owners at that block and drop all the previous history.
A client that is more lightweight and less secure can also pull a whole number of tricks to reduce the storage burden for transactions. For example, you can simply store a list of the transactions that made the coins yours and the block hashes that those transactions were included in. Then you can periodically examine the block chain to make sure those blocks are still part of the chain everybody agrees is the correct one. The farther back in time the most recent block that affected one of your coins is, the less likely it is that some other block chain will ever be declared the winner.
Well, I have the knowledge, and I have designed systems that use cryptography in the past. You're right though, until I've actually done it, it's all just hot air.:-)
Though, if I were DropBox, I would've just used Tahoe. Of course, as someone else mentioned, that doesn't really effectively do de-duplication. So perhaps the hypothetical service I designed that way couldn't have worked as well.
First, you are wrong. The data in your account is interesting to a whole host of people, regardless of how insignificant you are. Maybe there's a credit card number in there. Maybe there's clues to your password. Maybe your social graph is interesting to a marketer. In this age, even an insignificant person's data is of interest to someone.
Secondly, DropBox lied. Plain and simple. They made a security claim that wasn't true and sold their service based on it. If you really want to live in a world where it's perfectly acceptable for people to lie about their services in order to get your business, I wish you well.
Keeping people employed who haven't actually done anything useful in the past 10 years is one thing it gets spent on. The whole system is incredibly corrupt and beyond the control of anybody. All these people who've wanted the government to do this or that for them over the years have collectively created a monstrosity that perpetuates itself and has no interest in what's good for the people being governed, only its own survival and growth.
Watching the budget fights as tax revenues have been decreasing due to the disastrous crash of 2008 has sickened me. I don't think I've heard a single argument that takes into account the welfare of everybody has a whole, only defenses of why this or that thing are absolutely critical and important. Unless, of course, the thing in question is highly visible and important to the public. Then it needs to be cut, and cut drastically in order to meet the budget shortfall, unless of course, people are willing to go for increased taxes?
It's ridiculous and disgusting. I can't believe there are people who think that even more of this kind of garbage will somehow help anybody.
The tech industry should be giving us money if they want the program to continue. Lots of money. We purposely started talking about cutting the computer science program because we know the demand for that major is so high, we figure that the easiest extortion opportunities lie there.
We all know that when publicly funded institutions face budget cuts that the first thing they cut is the thing everybody actually wants them to do because then they pony up like good little tax payers and we can continue spending money on all kinds of ridiculous things that don't actually matter to anybody in particular at all. Why are you all so surprised about this?
Seriously, that's exactly what I get out of reading this. "Forging ties with local industry." sounds an awful like to me like "Shake them down for some money.".
That's not actually true. Sometimes bad programmers just have bad habits. And if they get a constant stream of negative feedback about their bad habits, maybe they'll change them.
I, for example, always have extensively tested everything I've ever written. But those tests were usually not done in a way that was repeatable by anybody but me. Recently, the drive for test-driven development has made me rethink design so my programs were easy to put into a test harness with tests anybody could run with repeatable results. This has made me a better programmer. My programs are easier for others to work with, and communicate better to the rest of the world how they work, which makes them easier to modify by people who aren't me.
Though I'm still rather proud that my programs have always had DJB levels of defect freedom.:-)
I agree that some people simply can't improve. But I think those kinds of people are rarer than you think.
I came to the conclusion awhile ago that making money is the wrong goal. The money should be treated as a reward, a signal that people think you're doing a good job, not as the goal. If you're treating it as the goal, you will do all kinds of things to get there that actually make things worse for everybody rather than better.
And none of the processes you outline do anything useful. Aside, possibly, from filling out a time sheet. And if you get away with filling one out with the same hours every day, then something is broken.
On the other hand, test-driven design and code reviews are immensely helpful. And if the process is working you don't get to skip either of those things without the rest of the team knowing you've done it and approving your behavior, in which case the team and environment is the problem, and not the process.
I rated you up, but I notice that most people seem to be missing the most important part of your post.
If someone seriously and repeatedly complains that following the process kills their passion, it is due either to a failure of that analysis or them being in the wrong organization. As an software developer and occasional manager and/or process guy, I have seen both cases. I have also seen cases where having a defined process helps channel creativity. Good process tools help you focus on the right parts of the problem; for example, having a template for a design description that identifies particular subjects to focus on, and may suggest areas that have been rabbit-holes in the past.
I agree that software development can be 'over-processed'. And I think that management frequently decides to 'apply more process!' in lieu of actually carefully thinking through what would help. But usually, when developers complain about process and delivering things on time, I think "Oh, so you just want to slap that code in there without even really knowing if it works. Write code, compile, problem solved!". Good process is what keeps you on-track and disciplined to write quality software. Too much software in our industry is of extremely poor quality, and that's still the case. Developers should feel proud of writing software that works, not how much software they write.
Most of the responses I see to your post seem to be of the "You're darn right, all that process just kills development!" variety. No talking about how to balance things for quality results or anything of that nature. I'm kind of disappointed.
Yes. They came by their monopoly honestly, by being good, not by shutting out competitors.:-) There may be some interesting criticisms of their online advertising business I could agree with, but criticizing them for their monopoly in search is silly. They could be replaced if someone started doing a better and more trustworthy job.
Neither company is very well served by the way the telecommunications monopolies in the US work. If they teamed up with Google and funded alternate companies and bribed regulators and such, I bet they could create a telecommunications infrastructure that was independent of these monopolies and a whole ton better for everybody.
Actually the reference was not to helpless people. Che advocated instigating violence against peasants that were comfortable and safe enough that they were not interested in socialist revolution. He saw a need to increase their misery and insecurity so that they would welcome revolution. Those who died in the process were merely the price to bring about the socialist state. These ideas of Che's were written in the context of spreading socialism to central and south america.
Peasants who are fat and happy do not need rice. I have no interest in destroying their world. And you are switching and shifting the situation to suit yourself if that's how you meant it.
It was your silly analogy, you chose the revolt will make everything better stuff. Sorry if your chosen side didn't quite represent what you expected.
Mysilly analogy is perfectly fine. Your re-interpretation and twisting is not. There is a big difference between witholding help and actively harming.
So you are going the Che Gueverra route, its OK to sacrifice some peasants and increase their suffering in order to manufacture a revolution that will promote one's ideology. Apologies if I shocked anyone. I actually read Che's writing, I didn't just buy the t-shirt.
When it comes to effort I'm contributing, you betcha. I want to make sure my efforts are going to something I can support and not going to help a cycle of continued helplessness and dependence. In fact, I'm quite shocked that you think helping people stay helpless and alive is better.
I rather resent you implying that my choice to not support dependence is the same as a choice to purposely kill people. I'm not the one holding the trigger or refusing food because the conditions require me to allow my people independence.
Do you prefer freedom and having to struggle for your food, or being fat, happy and enslaved? Your choice seems clear, and your choice of license makes it clear what choice you think other's should make. I will not make the choice you do, and I will not support people in making that choice.
A closer feeding-the-hungry analogy would be the BSD camp is the charity that gives to a country that they know will takes the rice out of the bags with the US labels and repackage the rice into government labeled bags before distribution to the hungry. The GPL camp would be ones offering the rice under conditions, and when the conditions are refused, then no rice for you. Hey, don't blame me, I didn't start this feeding-the-hungry analogy. Perhaps we should just skip the analogies?:-)
The conditions being, of course, that the government must allow everybody to use the rice to plant their own rice fields if they so choose as well as distribute a brochure describing the best known ways to grow rice. One encourages dependence, the other demands the government foster independence or refuses to help them. Eventually the latter government's people will revolt and replace it with a better one that doesn't object to such eminently reasonable conditions and the whole country will be richer.
I have that kind of thing all the time, all on one monitor, with windows that are side-by-side or partially overlapping (yay for pointer based focus). And if the app I'm working on needs to be full-screen in order to work reasonably, there's something wrong with the app and its UI needs to be redesigned.
That kind of argument might make sense if your screen were the size of a postage stamp. Unfortunately, most monitors are at least 19" today. Plenty enough space for a full-course meal of data.
And maybe the constant cry for 'more monitors', the stupid application design that sort of mentality promotes, and the dumb status seeking annoy me to no end too.
I find using a second monitor for any of these things to be a huge distraction. It works much better if it all lives in the same area is my code windows.
I have browser windows open for this kind of thing, and they share space with code windows. Luckily, most documentation is on sites that don't have web developers that subscribe to the "your window must be n pixels wide to ride this ride" mentality.
I have one monitor on my laptop and at home. I've had two monitors at some jobs, and only one at others. I generally find two to be really annoying unless one has a clear purpose, like a VM or (as someone else mentioned) a remote desktop or VNC session. But those latter cases aren't so common.
I run a VM on my laptop, and I just use the host OS's X server. Then the guest's windows share space with all the other ones and it works just fine.
I have three windows of source code open side by side and I rarely have to horizontally scroll. It's only when people have code that's wide than 80 columns.
I've had two monitors now at two different jobs, and the only way I found it useful was when I was running a VM and let it have one monitor.
I mostly find the concept to be really ridiculous. I have 20-30 windows and several workspaces at any given moment. None of these windows is ever allowed the entire screen unless some idiot web developer doesn't realize that designing for a particular pixel-width display is obnoxious and stupid. And then I just curse the web page and use firebug to edit it into being reasonable.
When I can fit several windows on the screen at once, I have plenty enough context on my screen to keep my mind occupied. I don't need more monitors.
I strongly suspect this is because of stupid IDEs like Eclipse and Visual studio that basically assume they have the entire screen to themselves. I don't know why people design applications to work like that. I mean what's the point in having a multi-tasking GUI anyway if you can't have a whole ton of windows open side-by-side at the same time?
It wasn't obvious in 1988 because a confluence of technologies didn't exist to make it trivial. Coming up with an idea that's not obvious because its completely impractical and then suing people once it does become practical and they unwittingly implement it is ridiculous.
They did answer that question, rather obliquely.
Starting in 1988, Dan Abelow invented, put in significant amounts of his time, and paid hundreds of thousands of dollars in patent filing, prosecution lawyer fees, and maintenance fees to the US Patent Office to create the patent portfolio.
Clearly, someone who spent so much money at the patent office deserves a return on their investment. That's what the patent office is for after all, blatant extortion over things anybody would've thought of given half a brain.
There are some kinds of cleverness that seem simple when you learn the idea, but weren't obvious before the idea was known. And whether or not you think that sort of cleverness should be rewarded with a patent, this isn't that sort of cleverness. This is patenting the bleeding obvious.
The full transaction history of every bitcoin is duplicated to every client. There are ways to handle this issue. If everybody agrees that all transactions before a certain block are really final, you can just start over with a list of all the owners at that block and drop all the previous history.
A client that is more lightweight and less secure can also pull a whole number of tricks to reduce the storage burden for transactions. For example, you can simply store a list of the transactions that made the coins yours and the block hashes that those transactions were included in. Then you can periodically examine the block chain to make sure those blocks are still part of the chain everybody agrees is the correct one. The farther back in time the most recent block that affected one of your coins is, the less likely it is that some other block chain will ever be declared the winner.
Well, I have the knowledge, and I have designed systems that use cryptography in the past. You're right though, until I've actually done it, it's all just hot air. :-)
Though, if I were DropBox, I would've just used Tahoe. Of course, as someone else mentioned, that doesn't really effectively do de-duplication. So perhaps the hypothetical service I designed that way couldn't have worked as well.
I'm sort of both of those. And I have and would've made a better service than that.
First, you are wrong. The data in your account is interesting to a whole host of people, regardless of how insignificant you are. Maybe there's a credit card number in there. Maybe there's clues to your password. Maybe your social graph is interesting to a marketer. In this age, even an insignificant person's data is of interest to someone.
Secondly, DropBox lied. Plain and simple. They made a security claim that wasn't true and sold their service based on it. If you really want to live in a world where it's perfectly acceptable for people to lie about their services in order to get your business, I wish you well.
Keeping people employed who haven't actually done anything useful in the past 10 years is one thing it gets spent on. The whole system is incredibly corrupt and beyond the control of anybody. All these people who've wanted the government to do this or that for them over the years have collectively created a monstrosity that perpetuates itself and has no interest in what's good for the people being governed, only its own survival and growth.
Watching the budget fights as tax revenues have been decreasing due to the disastrous crash of 2008 has sickened me. I don't think I've heard a single argument that takes into account the welfare of everybody has a whole, only defenses of why this or that thing are absolutely critical and important. Unless, of course, the thing in question is highly visible and important to the public. Then it needs to be cut, and cut drastically in order to meet the budget shortfall, unless of course, people are willing to go for increased taxes?
It's ridiculous and disgusting. I can't believe there are people who think that even more of this kind of garbage will somehow help anybody.
The tech industry should be giving us money if they want the program to continue. Lots of money. We purposely started talking about cutting the computer science program because we know the demand for that major is so high, we figure that the easiest extortion opportunities lie there.
We all know that when publicly funded institutions face budget cuts that the first thing they cut is the thing everybody actually wants them to do because then they pony up like good little tax payers and we can continue spending money on all kinds of ridiculous things that don't actually matter to anybody in particular at all. Why are you all so surprised about this?
Seriously, that's exactly what I get out of reading this. "Forging ties with local industry." sounds an awful like to me like "Shake them down for some money.".
That's not actually true. Sometimes bad programmers just have bad habits. And if they get a constant stream of negative feedback about their bad habits, maybe they'll change them.
I, for example, always have extensively tested everything I've ever written. But those tests were usually not done in a way that was repeatable by anybody but me. Recently, the drive for test-driven development has made me rethink design so my programs were easy to put into a test harness with tests anybody could run with repeatable results. This has made me a better programmer. My programs are easier for others to work with, and communicate better to the rest of the world how they work, which makes them easier to modify by people who aren't me.
Though I'm still rather proud that my programs have always had DJB levels of defect freedom. :-)
I agree that some people simply can't improve. But I think those kinds of people are rarer than you think.
I came to the conclusion awhile ago that making money is the wrong goal. The money should be treated as a reward, a signal that people think you're doing a good job, not as the goal. If you're treating it as the goal, you will do all kinds of things to get there that actually make things worse for everybody rather than better.
And none of the processes you outline do anything useful. Aside, possibly, from filling out a time sheet. And if you get away with filling one out with the same hours every day, then something is broken.
On the other hand, test-driven design and code reviews are immensely helpful. And if the process is working you don't get to skip either of those things without the rest of the team knowing you've done it and approving your behavior, in which case the team and environment is the problem, and not the process.
I rated you up, but I notice that most people seem to be missing the most important part of your post.
If someone seriously and repeatedly complains that following the process kills their passion, it is due either to a failure of that analysis or them being in the wrong organization. As an software developer and occasional manager and/or process guy, I have seen both cases. I have also seen cases where having a defined process helps channel creativity. Good process tools help you focus on the right parts of the problem; for example, having a template for a design description that identifies particular subjects to focus on, and may suggest areas that have been rabbit-holes in the past.
I agree that software development can be 'over-processed'. And I think that management frequently decides to 'apply more process!' in lieu of actually carefully thinking through what would help. But usually, when developers complain about process and delivering things on time, I think "Oh, so you just want to slap that code in there without even really knowing if it works. Write code, compile, problem solved!". Good process is what keeps you on-track and disciplined to write quality software. Too much software in our industry is of extremely poor quality, and that's still the case. Developers should feel proud of writing software that works, not how much software they write.
Most of the responses I see to your post seem to be of the "You're darn right, all that process just kills development!" variety. No talking about how to balance things for quality results or anything of that nature. I'm kind of disappointed.
Yes. They came by their monopoly honestly, by being good, not by shutting out competitors. :-) There may be some interesting criticisms of their online advertising business I could agree with, but criticizing them for their monopoly in search is silly. They could be replaced if someone started doing a better and more trustworthy job.
Neither company is very well served by the way the telecommunications monopolies in the US work. If they teamed up with Google and funded alternate companies and bribed regulators and such, I bet they could create a telecommunications infrastructure that was independent of these monopolies and a whole ton better for everybody.
Actually the reference was not to helpless people. Che advocated instigating violence against peasants that were comfortable and safe enough that they were not interested in socialist revolution. He saw a need to increase their misery and insecurity so that they would welcome revolution. Those who died in the process were merely the price to bring about the socialist state. These ideas of Che's were written in the context of spreading socialism to central and south america.
Peasants who are fat and happy do not need rice. I have no interest in destroying their world. And you are switching and shifting the situation to suit yourself if that's how you meant it.
It was your silly analogy, you chose the revolt will make everything better stuff. Sorry if your chosen side didn't quite represent what you expected.
My silly analogy is perfectly fine. Your re-interpretation and twisting is not. There is a big difference between witholding help and actively harming.
So you are going the Che Gueverra route, its OK to sacrifice some peasants and increase their suffering in order to manufacture a revolution that will promote one's ideology. Apologies if I shocked anyone. I actually read Che's writing, I didn't just buy the t-shirt.
When it comes to effort I'm contributing, you betcha. I want to make sure my efforts are going to something I can support and not going to help a cycle of continued helplessness and dependence. In fact, I'm quite shocked that you think helping people stay helpless and alive is better.
I rather resent you implying that my choice to not support dependence is the same as a choice to purposely kill people. I'm not the one holding the trigger or refusing food because the conditions require me to allow my people independence.
Do you prefer freedom and having to struggle for your food, or being fat, happy and enslaved? Your choice seems clear, and your choice of license makes it clear what choice you think other's should make. I will not make the choice you do, and I will not support people in making that choice.
A closer feeding-the-hungry analogy would be the BSD camp is the charity that gives to a country that they know will takes the rice out of the bags with the US labels and repackage the rice into government labeled bags before distribution to the hungry. The GPL camp would be ones offering the rice under conditions, and when the conditions are refused, then no rice for you. Hey, don't blame me, I didn't start this feeding-the-hungry analogy. Perhaps we should just skip the analogies? :-)
The conditions being, of course, that the government must allow everybody to use the rice to plant their own rice fields if they so choose as well as distribute a brochure describing the best known ways to grow rice. One encourages dependence, the other demands the government foster independence or refuses to help them. Eventually the latter government's people will revolt and replace it with a better one that doesn't object to such eminently reasonable conditions and the whole country will be richer.
I like these analogies just fine.