Developers in the US, in addition to not working for 4K/year, do not generally get the benefit of a methodology. While nobody in their right mind would send work offshore without a very clear statement of what they expected, careful management of requirements and deliverables, and a detailed plan for implementation, the same people will expect their local team to produce a product with none of those benefits.
A quick study of the decades old literature of Software Engineering would reveal that if US developers worked to the conditions of foreign development groups huge amounts of money (50-75%) could be saved. That would reduce the difference between off and on shore projects by so much it would make little sense to send most work offshore. With both wage and efficiency differences against them, US developers will watch their marketshare decline.
What do I think US developers should do? Well, first of all, start or at least support efforts to get project management, methodologies, and other efficiency improvements implemented. Learn architecture, requirements management, design skills, and other elements of Software Engineering. Get your employer to pursue CMM or other standards-driven objectives. Then, continue to work like H*ll (but smarter this time) and the erosion may well reverse.
I disagree with Dave Thomas in that I think the trend can be reversed if only we can adopt processes that improve efficiency and quality. I am not ready to concede our livelihood to others when I know that it needn't be that way.
Remember that the US car makers lost huge amounts of market share until they improved their quality and adopted the originally US-invented (AT&T) quality processes that the Japanese had implemented so very well. Now, the Japanese are building cars here, using their processes and our people to compete with the US manufacturers. That, alone, should show that it is not the pay difference but the process difference that matters.
Software Engineering started in the 60s and 70s and has been ignored by too many for two long. What is Software Engineering, you say? look at computer.org and swebok.org for the Software Engineering Body of Knowlege (SWEBOK) for a not so quick overview.
Set up a stripped down Knoppix distro that writes Windoze files (like the full one does) and has a plethora of languages from which to choose. Set it up so it deals only with its own directory and keeps kids mostly away from the Windoze files for their own protection. If they figure out how to get out of the padded room they will probably be capable of not hurting anything.
It would appeal to kids because.... 1. It's not your father's OS (Oldsmobile) 2. It's passed around freely among the "geeks to be" 3. Programs could be passed around since they would run on anybody's machine with the Knoppix CD 4. Cliques would develop because they would know something others don't.
I think it would be a wonderful idea. Even though he is using the common PC, the kid has his own environment with his own tools and complete power!!!!!! It could be a big boost to the development of real programmers.
Mineral rights expire if not renewed regularly. If the rights are not worth renewing they don't persist forever. Systems that automatically clean themselves up are a Good Thing (TM)
IANAL but I bought some land and found out that nugget along the way
"our sources claim Microsoft support is telling users to set PC clocks back two years. "
This sounds like an excellent idea - the fix is to set the system clock back two years. I hope people try it carefully -- it can be really entertaining when backups and other processes run.
Now, exactly how do you set your clock back two years if it syncronizes with a network clock? How do typical users version files when the date is really off? Gee, why didn't we think of this in Y2K?
the app will use the.dlls from its local directory and unless it is running in a 3.1 environment it will not encounter any possible conflicts. Amazing how what is old is new again.
Caution -- printing is no longer well supported from the sixteen bit compatibility so a workaround is needed but the rest continues to work well. Not sure about sockets, haven't tested.
I would like to remind everyone that two years ago a president was determined by exceedingly narrow margins in several states. Resistance may be FUTILE but VOTING IS NOT!!!
Please, everyone, inform yourselves and show up at the polls and VOTE. Encourage your friends to do the same. Even if we don't win big this time we very well may in two years. At this point, it is our only hope and we had better get used to pushing our agenda and making our voices heard.
Why are cable companies giving away service to compete with dial-up? Why aren't cable providers overloaded with customers?
The answer is two-fold -- first of all, a dialup delivers more than my desired quantity of spam and the content-rich sites I desire to see at very low cost.
I think the broadband market is saturated because there is no compelling and inexpensive content to be had via broadband.
Finally, competition is only healthy when there are competitors. If we lose the telecom services then broadband providers can get all the revenue and deliver shoddy service at high prices. I say let's keep telecom companies healthy until they are redundant.
When there aren't commercials then the stations and networks will simply have to sell their air time to the highest bidder. I am sure that at the right price there is plenty of air time available and without commercials competing the price should be right. Oil companies can produce shows that illustrate how they can drill their way to a better world, politicians can dramatize their idiologies, and, in short, the American television mindshare can be bought by whomever has the cash. One could argue that the sponsors already exert considerable control but at least there is some isolation.
No technology that I have seen has been free of side effects.
I would suggest the following as the normal way you should work with your team --- You will be amazed how much things improve.
1. When you assign some work ask them to plan and estimate their piece of the work. When they think about what they need to do, they will naturally ask questions -- and give you an opportunity to help. Stress the importance of their understanding what they are trying to do and thank them for clarifying the spec even if you think they should already have known what they asked.
2. REQUIRE absolutely that they break the job up into small (40 hours and better yet 20 hours) pieces that they can unit test (what a concept!)
3. Gently hold them to their estimates and when they exceed them, point out that developers typically underestimate by 30% until they get experience doing it. If they beat them let them know they did something neat!
4. Follow up with them on a daily basis and ask how they're doing -- encourage them to alert you to problems early and then help them through the problems.
5. Adopt coding standards. Just pick one -- the use of any standard is better than no standard at all.
6. Plan code reviews for various modules -- start with really good ones and identify and praise the good parts, then go on to weaker ones. Avoid direct criticism and don't do code reviews until you have read and practiced the methods of doing code reviews (being considerate, gentle, and framing criticism in non-negative packages are a good start)
7. AND MOST IMPORTANT - look in a mirror and tell yourself to do the same things! Look at your work and your estimates and start improving them.
If nobody gives in to their frivolous lawsuits then the patent is likely to be less defensible than if somebody does give in. Similar things happened for windowing in Y2K as well as many algorithms of wrapping around the century and finding dates in code. The bad news is that if a bunch of people pay these folks to go away then it helps validate their position and everybody could have to pay. Just my.02 worth...
Back when I was in college I ran across a Russian kerosene lamp with a highly sophisticated thermoelectric generator for powering a vacuum tube radio. I was praising its virtues and cleverness until one of my professors pointed out that the reason they had such a gadget was that they had no electricity anywhere near the Siberian house it was intended for. The US was definitely behind Russia in implementing thermoelectric power but I think most farmers in the US since the 1930's appreciated rural electrification. In fact, I think the US may still be behind the Russians in the technology and lots of thermoelectric products come from there.
By the way, in the 30 years since I was in college the application of really neat technologies like that is now called appropriate technology and is helping lots of people around the world improve their living standards. (I was right 30 years ago -- just ahead of my time:-)
I think the primary cause for the full and rapid adoption of cell phones is driven by the lack of infrastructure for land lines. If we compare the cost per hour for our teenagers to talk to each other we would doubtless find it lower. If we compared the costs of internet connectivity (wide or narrow bandwidth) I'll bet we would similarly find it cheaper. Somehow viewing the Internet through a cell phone screen (color or not) doesn't impress me when I can get online with my Linux box and have the world at my fingertips.
A few years ago I worked for Keane, a company that REQUIRES that programmers learn basic project management and then encourages them to play a role in managing the projects they are working on.
A student in my robotics lab mistakenly inserted a mirror-the-z-axis instruction in a robot program - oops - The robot dutifully attempted to follow and lifted itself on its gripper, almost tipping itself over. It made me glad that I hadn't bolted it down since either the table or the robot would have had to suffer.
Almost any external will work fine. I use Creative Labs Modem Blaster and it works with everything and actually gets real close to 56K too, unlike winmodems that won't do better than 40K on my line...
Ed Yourdon has written two books and as he was writing/editing them he posted the chapters on his web site. Then, when the book was done he took the contents down.
As for novel individual marketing strategies, I would have to agree that more people should individually create and market materials thereby disintermediate the big greedy corporations who will ultimately deprive us of our fair use rights.
As a member of the club, I joined because the money would go to help support programmers who are writing open source code that everybody (even the people who whine) shares. Since I am not a Linux expert, I figured contributing to somebody who could help was a good idea. I think the majority of the Mandrake Club members share my opinion. When I joined (early) they said they were going to figure out what club benefits were, other than the warm hearted feeling that the members had done something for the world of Linux.
Further, I have installed Mandrake 8.1 on lots of my machines and have been able to abandon windoze to one underpowered box that I use when I absolutely need some app. That, in my mind, is the value I received from the club membership and from Mandrake. I am free of windoze and free to have a well designed good performing machine.
Lots of Slashdotters say they want an open software environment with sharing of assets but when somebody makes a reasonable business decision they cry and whine.
I joined the Mandrake Club a couple of weeks ago after realizing that they had saved me from buying yet another version of Windoze and putting up with Redmond's hegemony. The fact that Mandrake installed and ran flawlessly also figured into the decision.
I figured that I would be spending lots of money not only for the windoze OS but for the antivirus products and other crap required to keep it running. At that point, joining and, for that matter, buying some stock is enlightened self interest. Someday I hope to contribute to open source but for now, I will contribute money for true value received and feel good about my investment and what it will give me in the future.
I am taking my Win98 CD to a friend's house to restore her OS after a worm attacked it. She never got media with her pc and when I looked on her drive there was nothing to restore from... It's particularly unforgivable when the OS is so susceptible to worms and other attacks.
All of this news comes just in time to make me even happier that I now use Mandrake as my primary machine and an old windoze box for a couple of special apps that I use once in a while.
By the way, since it doesn't seem all that safe to put a windoze box on the Internet anyway, what's all the fuss about M$ installing updates whenever they want? If you just keep it where it belongs, driving cheap printers, scanners, and displaying CD maps, then you don't need to worry about M$ doing anything to it.
Given temp and humidity control the program stored on punch cards will withstand almost any assault including thermonuclear EMP. That's why paper tape is still the program storage method for some really critical systems. It is very hard to erase a punched hole.
Suspending an entire computer system at any given point is, in principle, possible given that you have thought through how to preserve the entire system state through a reboot and then restore it. Of course, you may also have to suspend and preserve data on other systems too, if you are depending on them. Laptops and Windows can do it fairly reliably for some applications. I think laptops work by getting the applications and OS into a safe and simpler state and then saving that state. I suspect they cannot save any arbitrary application you could write - just the applications they routinely run.
Easier, however, would be to design your application such that it records its state maybe every hour or so. It could write pointers to incoming data, output data, and other important values to a log file. Given that smaller set of information you can resume the application at the last saved state and continue.
Doing that can present a challenge to the design in many cases but I think it would often return your effort when you can stop the machine, debug your code, and continue from the last saved state. You don't have to restart from the beginning all the time...
Above statements are IMHO and your mileage may vary.
Developers in the US, in addition to not working for 4K/year, do not generally get the benefit of a methodology. While nobody in their right mind would send work offshore without a very clear statement of what they expected, careful management of requirements and deliverables, and a detailed plan for implementation, the same people will expect their local team to produce a product with none of those benefits.
A quick study of the decades old literature of Software Engineering would reveal that if US developers worked to the conditions of foreign development groups huge amounts of money (50-75%) could be saved. That would reduce the difference between off and on shore projects by so much it would make little sense to send most work offshore. With both wage and efficiency differences against them, US developers will watch their marketshare decline.
What do I think US developers should do? Well, first of all, start or at least support efforts to get project management, methodologies, and other efficiency improvements implemented. Learn architecture, requirements management, design skills, and other elements of Software Engineering. Get your employer to pursue CMM or other standards-driven objectives. Then, continue to work like H*ll (but smarter this time) and the erosion may well reverse.
I disagree with Dave Thomas in that I think the trend can be reversed if only we can adopt processes that improve efficiency and quality. I am not ready to concede our livelihood to others when I know that it needn't be that way.
Remember that the US car makers lost huge amounts of market share until they improved their quality and adopted the originally US-invented (AT&T) quality processes that the Japanese had implemented so very well. Now, the Japanese are building cars here, using their processes and our people to compete with the US manufacturers. That, alone, should show that it is not the pay difference but the process difference that matters.
Software Engineering started in the 60s and 70s and has been ignored by too many for two long. What is Software Engineering, you say? look at computer.org and swebok.org for the Software Engineering Body of Knowlege (SWEBOK) for a not so quick overview.
According to radio news the site this morning (before Slashdot) was registering 108 people per second, not a bad rate.
Set up a stripped down Knoppix distro that writes Windoze files (like the full one does) and has a plethora of languages from which to choose. Set it up so it deals only with its own directory and keeps kids mostly away from the Windoze files for their own protection. If they figure out how to get out of the padded room they will probably be capable of not hurting anything.
....
It would appeal to kids because
1. It's not your father's OS (Oldsmobile)
2. It's passed around freely among the "geeks to be"
3. Programs could be passed around since they would run on anybody's machine with the Knoppix CD
4. Cliques would develop because they would know something others don't.
I think it would be a wonderful idea. Even though he is using the common PC, the kid has his own environment with his own tools and complete power!!!!!! It could be a big boost to the development of real programmers.
Mineral rights expire if not renewed regularly. If the rights are not worth renewing they don't persist forever. Systems that automatically clean themselves up are a Good Thing (TM)
IANAL but I bought some land and found out that nugget along the way
"our sources claim Microsoft support is telling users to set PC clocks back two years. "
This sounds like an excellent idea - the fix is to set the system clock back two years. I hope people try it carefully -- it can be really entertaining when backups and other processes run.
Now, exactly how do you set your clock back two years if it syncronizes with a network clock? How do typical users version files when the date is really off? Gee, why didn't we think of this in Y2K?
I hope the Register's source is mistaken!
Purchased and assembled in 1971 and used as my only stereo amplifier since. Never has needed any repairs and still sounds good.
the app will use the .dlls from its local directory and unless it is running in a 3.1 environment it will not encounter any possible conflicts. Amazing how what is old is new again.
Caution -- printing is no longer well supported from the sixteen bit compatibility so a workaround is needed but the rest continues to work well. Not sure about sockets, haven't tested.
I would like to remind everyone that two years ago a president was determined by exceedingly narrow margins in several states. Resistance may be FUTILE but VOTING IS NOT!!!
Please, everyone, inform yourselves and show up at the polls and VOTE. Encourage your friends to do the same. Even if we don't win big this time we very well may in two years. At this point, it is our only hope and we had better get used to pushing our agenda and making our voices heard.
Why are cable companies giving away service to compete with dial-up? Why aren't cable providers overloaded with customers?
The answer is two-fold -- first of all, a dialup delivers more than my desired quantity of spam and the content-rich sites I desire to see at very low cost.
I think the broadband market is saturated because there is no compelling and inexpensive content to be had via broadband.
Finally, competition is only healthy when there are competitors. If we lose the telecom services then broadband providers can get all the revenue and deliver shoddy service at high prices. I say let's keep telecom companies healthy until they are redundant.
When there aren't commercials then the stations and networks will simply have to sell their air time to the highest bidder. I am sure that at the right price there is plenty of air time available and without commercials competing the price should be right. Oil companies can produce shows that illustrate how they can drill their way to a better world, politicians can dramatize their idiologies, and, in short, the American television mindshare can be bought by whomever has the cash. One could argue that the sponsors already exert considerable control but at least there is some isolation.
No technology that I have seen has been free of side effects.
I would suggest the following as the normal way you should work with your team --- You will be amazed how much things improve.
1. When you assign some work ask them to plan and estimate their piece of the work. When they think about what they need to do, they will naturally ask questions -- and give you an opportunity to help. Stress the importance of their understanding what they are trying to do and thank them for clarifying the spec even if you think they should already have known what they asked.
2. REQUIRE absolutely that they break the job up into small (40 hours and better yet 20 hours) pieces that they can unit test (what a concept!)
3. Gently hold them to their estimates and when they exceed them, point out that developers typically underestimate by 30% until they get experience doing it. If they beat them let them know they did something neat!
4. Follow up with them on a daily basis and ask how they're doing -- encourage them to alert you to problems early and then help them through the problems.
5. Adopt coding standards. Just pick one -- the use of any standard is better than no standard at all.
6. Plan code reviews for various modules -- start with really good ones and identify and praise the good parts, then go on to weaker ones. Avoid direct criticism and don't do code reviews until you have read and practiced the methods of doing code reviews (being considerate, gentle, and framing criticism in non-negative packages are a good start)
7. AND MOST IMPORTANT - look in a mirror and tell yourself to do the same things! Look at your work and your estimates and start improving them.
If nobody gives in to their frivolous lawsuits then the patent is likely to be less defensible than if somebody does give in. Similar things happened for windowing in Y2K as well as many algorithms of wrapping around the century and finding dates in code. The bad news is that if a bunch of people pay these folks to go away then it helps validate their position and everybody could have to pay. Just my .02 worth...
Back when I was in college I ran across a Russian kerosene lamp with a highly sophisticated thermoelectric generator for powering a vacuum tube radio. I was praising its virtues and cleverness until one of my professors pointed out that the reason they had such a gadget was that they had no electricity anywhere near the Siberian house it was intended for. The US was definitely behind Russia in implementing thermoelectric power but I think most farmers in the US since the 1930's appreciated rural electrification. In fact, I think the US may still be behind the Russians in the technology and lots of thermoelectric products come from there.
:-)
By the way, in the 30 years since I was in college the application of really neat technologies like that is now called appropriate technology and is helping lots of people around the world improve their living standards. (I was right 30 years ago -- just ahead of my time
I think the primary cause for the full and rapid adoption of cell phones is driven by the lack of infrastructure for land lines. If we compare the cost per hour for our teenagers to talk to each other we would doubtless find it lower. If we compared the costs of internet connectivity (wide or narrow bandwidth) I'll bet we would similarly find it cheaper. Somehow viewing the Internet through a cell phone screen (color or not) doesn't impress me when I can get online with my Linux box and have the world at my fingertips.
A few years ago I worked for Keane, a company that REQUIRES that programmers learn basic project management and then encourages them to play a role in managing the projects they are working on.
and I can determine which broadband provider has reasonable service and will into the future I will give up my 56K modem. Til Then I will be patient.
A student in my robotics lab mistakenly inserted a mirror-the-z-axis instruction in a robot program - oops - The robot dutifully attempted to follow and lifted itself on its gripper, almost tipping itself over. It made me glad that I hadn't bolted it down since either the table or the robot would have had to suffer.
But, do you have OEM licenses on those Gateways? I think the OEM license dies with the machine it is on, not some other machine it is moved to ...
Almost any external will work fine. I use Creative Labs Modem Blaster and it works with everything and actually gets real close to 56K too, unlike winmodems that won't do better than 40K on my line ...
Ed Yourdon has written two books and as he was writing/editing them he posted the chapters on his web site. Then, when the book was done he took the contents down.
As for novel individual marketing strategies, I would have to agree that more people should individually create and market materials thereby disintermediate the big greedy corporations who will ultimately deprive us of our fair use rights.
Getting the CPU down to freezing might allow you to overclock a bit more - at the cost of a bag of ice a day.
As a member of the club, I joined because the money would go to help support programmers who are writing open source code that everybody (even the people who whine) shares. Since I am not a Linux expert, I figured contributing to somebody who could help was a good idea. I think the majority of the Mandrake Club members share my opinion. When I joined (early) they said they were going to figure out what club benefits were, other than the warm hearted feeling that the members had done something for the world of Linux.
Further, I have installed Mandrake 8.1 on lots of my machines and have been able to abandon windoze to one underpowered box that I use when I absolutely need some app. That, in my mind, is the value I received from the club membership and from Mandrake. I am free of windoze and free to have a well designed good performing machine.
Lots of Slashdotters say they want an open software environment with sharing of assets but when somebody makes a reasonable business decision they cry and whine.
I joined the Mandrake Club a couple of weeks ago after realizing that they had saved me from buying yet another version of Windoze and putting up with Redmond's hegemony. The fact that Mandrake installed and ran flawlessly also figured into the decision.
I figured that I would be spending lots of money not only for the windoze OS but for the antivirus products and other crap required to keep it running. At that point, joining and, for that matter, buying some stock is enlightened self interest. Someday I hope to contribute to open source but for now, I will contribute money for true value received and feel good about my investment and what it will give me in the future.
I am taking my Win98 CD to a friend's house to restore her OS after a worm attacked it. She never got media with her pc and when I looked on her drive there was nothing to restore from ... It's particularly unforgivable when the OS is so susceptible to worms and other attacks.
All of this news comes just in time to make me even happier that I now use Mandrake as my primary machine and an old windoze box for a couple of special apps that I use once in a while.
By the way, since it doesn't seem all that safe to put a windoze box on the Internet anyway, what's all the fuss about M$ installing updates whenever they want? If you just keep it where it belongs, driving cheap printers, scanners, and displaying CD maps, then you don't need to worry about M$ doing anything to it.
Given temp and humidity control the program stored on punch cards will withstand almost any assault including thermonuclear EMP. That's why paper tape is still the program storage method for some really critical systems. It is very hard to erase a punched hole.
Suspending an entire computer system at any given point is, in principle, possible given that you have thought through how to preserve the entire system state through a reboot and then restore it. Of course, you may also have to suspend and preserve data on other systems too, if you are depending on them. Laptops and Windows can do it fairly reliably for some applications. I think laptops work by getting the applications and OS into a safe and simpler state and then saving that state. I suspect they cannot save any arbitrary application you could write - just the applications they routinely run.
Easier, however, would be to design your application such that it records its state maybe every hour or so. It could write pointers to incoming data, output data, and other important values to a log file. Given that smaller set of information you can resume the application at the last saved state and continue.
Doing that can present a challenge to the design in many cases but I think it would often return your effort when you can stop the machine, debug your code, and continue from the last saved state. You don't have to restart from the beginning all the time...
Above statements are IMHO and your mileage may vary.