That's a really stupid question, since the best way to answer it is to quote Santayana: "Those who cannot remember the past are condemned to repeat it."
See, that's a perfect answer to the question, and writing any more is superfluous. But I doubt a one-sentence essay consisting of a single quote would get a very good grade.
Most of us who program for a living are not writing shrink-wrapped software. We're automating things in-house, or writing code that uses knowledge of our organizations.
Doing this kind of work well involves lots of communication between the developers and the users of their code. This simply cannot be done with people who are 8 time zones away. It requires lots of face time and one-on-one interaction between the developer and the user, who typically doesn't really know what he wants until he sees it. Or, rather, until he sees what he doesn't want.
The only kind of development work that can be outsourced is waterfall-style work, wherein somebody writes a detailed specification of exactly what the program is supposed to do, and then sends it to a coder. Forty years of experience should have taught everyone by now that this just doesn't work. For one thing, detailed specifications are usually wrong, obsolete before they're finished, and vague on the important details. Consider: if you could really describe exactly what a program is supposed to do in clear and concise language, you might as well just write it down in a good programming language, especially since that's usually the only way you'll be able to say precisely what you mean.
If you want to program for a living, you have to learn how to be more productive than someone offsite could ever hope to be. That means, for the most part, adopting the practices of eXtreme Programming, using lots of communication, very short release cycles, rapid development environments (like Smalltalk) and a great deal of interaction with the users of your work. If you're wasting time and money fighting syntax to translate someone else's ideas into C++ code, you can and will lose your job to cheaper outside competitors.
Your $350K/year could fully cover the cost of two really good Linux guys with money left over. You can set up their schedules so at least one of them is always available on call. They will, of course, have high speed connections to your network from home, and they will each have at home a Linux box continuously connected to your network.
The big advantage of hiring over outsourcing is that, most of the time, when things are working well, your sharp Linux guys can be usefully employed improving your network generally, or even helping out on business programming.
Except for very small shops, outsourcing is almost always a bad idea. Just ask the managers why, if outsourcing is so great, they don't outsource their own jobs. The serious answer is that effective management requires lots of in-person communication. But the same is also true of business software development and responsive network administration.
I work in DC. 15 years ago when I started here I used the combination of Metro and a folding bike to commute. The combination of pedalling and DC humidity meant that I often arrived sweaty, and had to take a shower and change clothes upon arrival. This was a major pain, since it meant I had to carry business attire back and forth to work, and I wasted at least a half hour per day showering and changing twice a day instead of once a day. Not only that, the Metro/bike commute itself took much longer than driving. Cold and/or rain made things even worse.
Private automobiles really do have a lot of advantages.
I'd bet there's a lot of people here that's happened to.
E-postage and priority stamps
on
ORBS Forks
·
· Score: 1
Spam happens because sending mail costs the sender almost nothing. In the snail mail world, the amount of junk mail sent is limited by the fact that the mailer has to pay postage. But even if the email sender paid the full cost of sending email, that cost is likely to be so low that it wouldn't provide much of a deterrent. And this still doesn't take account of the cost to the receiver of having to look at the email to decide whether or not to read it.
So in addition to emailers paying the actual costs of sending the mail, we need a way for receivers to set a price they will charge to notice the mail. Here's one way this might work:
I set a price for my personal priority stamp. Anyone who wants to send me an email can do so, but their message will only be marked as a priority mail if they pay my priority price. The proceeds from sales of my stamp go to me, since it's my attention that is being purchased.
The priority stamp is purely a signalling device which I am free to ignore, i.e., I can read or not read priority or nonpriority mail as I see fit. But when I see a message bearing the stamp, I know the sender thought it was important enough to pay my price, and that may be reason enough for me to look at it. If I think I'm getting too much or too litte email, I can always adjust the price of my priority stamp. My ISP can be instructed to discard messages without the stamp.
The sender has no guarantee, of course, that I will look at his email even if he pays for my priority stamp. So we could expect that email advertisers would collect not only demographic data associated with email addresses, but response rates as well. They would use this data in deciding on a case by case basis whether or not to buy the priority stamp.
So here's the next big thing. Some organization (AOL maybe?) sets up a clearinghouse where priority stamps can be bought or sold at posted prices, and distributes email clients that can show the presence or absence of a priority stamp. This same organization would certify the stamp as genuine, and perhaps take a cut of the selling price. There could be more than one such entity, just as there are for security certificates. Ultimately, marketplace competition would determine the sales commissions charged by various clearinghouses.
Jeff Hallman
Federal Reserve Board
Re:balancing capitalism and (pure) communism
on
Thus Spake Stallman
·
· Score: 1
The vast majority of people who program for a living are not involved in the production of commercial software for sale. Rather, they write programs used in-house to run the business, agency, or whatever. You don't have to give up programming just because you don't want to write commercial software.
That's a really stupid question, since the best way to answer it is to quote Santayana: "Those who cannot remember the past are condemned to repeat it."
See, that's a perfect answer to the question, and writing any more is superfluous. But I doubt a one-sentence essay consisting of a single quote would get a very good grade.
Most of us who program for a living are not writing shrink-wrapped software. We're automating things in-house, or writing code that uses knowledge of our organizations.
Doing this kind of work well involves lots of communication between the developers and the users of their code. This simply cannot be done with people who are 8 time zones away. It requires lots of face time and one-on-one interaction between the developer and the user, who typically doesn't really know what he wants until he sees it. Or, rather, until he sees what he doesn't want.
The only kind of development work that can be outsourced is waterfall-style work, wherein somebody writes a detailed specification of exactly what the program is supposed to do, and then sends it to a coder. Forty years of experience should have taught everyone by now that this just doesn't work. For one thing, detailed specifications are usually wrong, obsolete before they're finished, and vague on the important details. Consider: if you could really describe exactly what a program is supposed to do in clear and concise language, you might as well just write it down in a good programming language, especially since that's usually the only way you'll be able to say precisely what you mean.
If you want to program for a living, you have to learn how to be more productive than someone offsite could ever hope to be. That means, for the most part, adopting the practices of eXtreme Programming, using lots of communication, very short release cycles, rapid development environments (like Smalltalk) and a great deal of interaction with the users of your work. If you're wasting time and money fighting syntax to translate someone else's ideas into C++ code, you can and will lose your job to cheaper outside competitors.
You're 23? Why, with your vast experience you must know everything by now! Why, you even have balls and stuff!
Your $350K/year could fully cover the cost of two really good Linux guys with money left over. You can set up their schedules so at least one of them is always available on call. They will, of course, have high speed connections to your network from home, and they will each have at home a Linux box continuously connected to your network.
The big advantage of hiring over outsourcing is that, most of the time, when things are working well, your sharp Linux guys can be usefully employed improving your network generally, or even helping out on business programming.
Except for very small shops, outsourcing is almost always a bad idea. Just ask the managers why, if outsourcing is so great, they don't outsource their own jobs. The serious answer is that effective management requires lots of in-person communication. But the same is also true of business software development and responsive network administration.
I work in DC. 15 years ago when I started here I used the combination of Metro and a folding bike to commute. The combination of pedalling and DC humidity meant that I often arrived sweaty, and had to take a shower and change clothes upon arrival. This was a major pain, since it meant I had to carry business attire back and forth to work, and I wasted at least a half hour per day showering and changing twice a day instead of once a day. Not only that, the Metro/bike commute itself took much longer than driving. Cold and/or rain made things even worse.
Private automobiles really do have a lot of advantages.
I'd bet there's a lot of people here that's happened to.
Spam happens because sending mail costs the sender almost nothing. In the snail mail world, the amount of junk mail sent is limited by the fact that the mailer has to pay postage. But even if the email sender paid the full cost of sending email, that cost is likely to be so low that it wouldn't provide much of a deterrent. And this still doesn't take account of the cost to the receiver of having to look at the email to decide whether or not to read it.
So in addition to emailers paying the actual costs of sending the mail, we need a way for receivers to set a price they will charge to notice the mail. Here's one way this might work:
I set a price for my personal priority stamp. Anyone who wants to send me an email can do so, but their message will only be marked as a priority mail if they pay my priority price. The proceeds from sales of my stamp go to me, since it's my attention that is being purchased.
The priority stamp is purely a signalling device which I am free to ignore, i.e., I can read or not read priority or nonpriority mail as I see fit. But when I see a message bearing the stamp, I know the sender thought it was important enough to pay my price, and that may be reason enough for me to look at it. If I think I'm getting too much or too litte email, I can always adjust the price of my priority stamp. My ISP can be instructed to discard messages without the stamp.
The sender has no guarantee, of course, that I will look at his email even if he pays for my priority stamp. So we could expect that email advertisers would collect not only demographic data associated with email addresses, but response rates as well. They would use this data in deciding on a case by case basis whether or not to buy the priority stamp.
So here's the next big thing. Some organization (AOL maybe?) sets up a clearinghouse where priority stamps can be bought or sold at posted prices, and distributes email clients that can show the presence or absence of a priority stamp. This same organization would certify the stamp as genuine, and perhaps take a cut of the selling price. There could be more than one such entity, just as there are for security certificates. Ultimately, marketplace competition would determine the sales commissions charged by various clearinghouses.
Jeff Hallman
Federal Reserve Board
The vast majority of people who program for a living are not involved in the production of commercial software for sale. Rather, they write programs used in-house to run the business, agency, or whatever. You don't have to give up programming just because you don't want to write commercial software.