Absolutely! The best example I can think of is Simulated Annealing, an artificial-neural-network approach.
First, consider that neurocomputing itself comes from biological origins. But in Simulated Annealing, a problem is "coded" into a neural network by structuring it analogously to a physical arrangement of atoms, where the a "lowest energy state" arrangement of the atoms corresponds to an optimum solution of the problem. Problem solving is then done in the same manner a growing crystals out of a molten substance: you raise the temperature high, and then gradually lower it to give your atoms a chance to wander into lowest-energy configurations and stay there.
(If you're familiar with probabilistic algorithms, this is like hill climbing to find a global maximum, but where the "temperature" parameter gives you a certain amount of freedom to go downhill instead of uphill so you don't get caught in a local maximum that isn't a global maximum.)
My point is that a biologist or physicist can make contributions that would have eluded virtually any other computer scientist.
Math might have been the original basis of software development, but you can have a solid career as a developer and not have to perform much more than basic college-level (or even high-school-level) mathematics. If you can deal with binary and hex, you're mostly there. There's no requirement for advanced math skills in Object-Oriented Design, or writing database ETL scripts, or doing Perl text-processing, or Bourne shell scripting, or slamming together a LAMP site.
As for logical, procedural thinking: architects and structural engineers need that, or buildings would never get put together.:-) I agree that a STEM background does put the odds in your favor, but STEM graduates don't have a monopoly on logic, and some of them seem to be able to get CompSci degrees and go on to become positively awful developers.
I also agree that in some settings a STEM background will help a lot (especially in logic programming languages, where formalism still rules the roost), but nowadays you're probably better off having an educational background in the exact problem domain you're developing for. Working in the financial sector? A business degree can help you understand the purpose behind the software you're writing, which can help you spot problems and avoid incorrect simplifying assumptions.
IMO where the Computer Science skills still really come into play is in high-efficiency or cutting-edge systems. Many developers might not have heard of quadtrees or k-d trees, but find someone who's implementing a DBMS or a spatial browser (a la Google Maps) and those skills become paramount again. Likewise, if you're building a Siri clone, you damned well better know Natural Language Processing, Expert Systems, and a few other things.
True, but in these cases the software had nothing to do with Geology, Physics, or Architecture. My point was that if you've got a brain and the willingness to apply it, you can be a damned good software developer.
I hold two CompSci degrees (BA, MA) from two reputable universities, and I can tell you this: some of best developers I've ever met have come from non-CompSci fields: geology, physics, and (building) architecture.
The keys to being a good developer are much the same as in any other field: being able to learn, and being able to apply what you've learned, and giving a crap about what you do.
In the US, IT workers in startups will sometimes take very low compensation in exchange for stock options. We do have minimum wage laws, but above and beyond those, you can offer many types of "compensation" to attract workers -- retirement plan, corporate car, etc.
So imagine that in 2020, tech companies start cutting back cash compensation in exchange for alternatives which, on the face of it, have greater value: e.g., I can either give you $1000, or $3000 equivalent of company dollars which you can use to pay rent on a company-run apartment which is walking distance to work, buy groceries in the company store which is right in that apartment complex, etc. Which would you take? It depends on your circumstances. But you can guarantee that a smart company would rig the circumstances so that it ultimately works in their favor at your expense. This actually happened in the US in the 19th century: an awful time to be a worker here.
It seems completely within the realm of possibility to have the workers paid in FaceBucks, GoogleBooty, MicroCents, etc. within a few decades. These would probably start as in-world currency for the various gaming platforms hosted by these companies, but spread outward from there to purchase food and shelter at company-owned places.
Only Fixed-Price contracts work the way you describe. IT developers on Cost-Plus contracts are paid by the hour, and such contracts are very common for long-term O&M (Operations and Maintenance) work and ongoing development of key public-facing systems. I can introduce you a lot of developers, testers, and requirements analysts who are out 88 hours of time due to the shutdown. The good news is that they will have until January 2014 to make up the hours through overtime.
Government employees will be paid, but government subcontractors for many contracts will not (it depends on how the contract is funded).
So in those cases, either the subcontractor pays its employees and takes an 11-day loss, or else they mandate that their employees choose to take either accrued (paid) vacation or unpaid leave.
The net effect is that a lot of people in the DC area are out 11 days of income.
This. The Middle East has no monopoly on ridiculous ideas about female physiology. Some American politicians, pundits, and religious leaders are downright scary in this regard.
This. It seems like no one can post anything about Burning Man without both sorts of haters crawling out of the woodwork.
There seems to be a growing backlash against the haters, so soon I expect that those same haters will join the backlash and say, "I was hating the people who hate the people who go to Burning Man before hating the people who hate the people who go to Burning Man was cool."
Unfortunately, our media-rich environment is so saturated with distractions that most of us (including me) are turning into low-information people. We form opinions and then gradually entrench ourselves in online communities which support them, because it's comforting. Even when reading threads where two sides of an issue are colliding, I suspect that many of us will not be swayed by voices from the other side.
No, taking the time to (1) evaluate the problem, (2) determine the best approach for a fix, (3) weight the time commitment against any other critical activities going on, (4) assign the best person to code it, (5) review the code, (6) rebuild and deploy it up through various testing environments, (7) test the hell out of it in each environment, and (8) deploy it into production in a mere 10 work days is excellent, given the importance of the system. That's what Enterprise System timelines are often like.
If a major financial system like NASDAQ had managers run into the developer area and shouting "ZOMG someone fix this and slam it into Production now now now!", then I'd be more concerned.
William George's post should not have been modded "Troll". I also disagree with his point (and I said as much in my own reply), but it's a plausible position to take if you're a Creationist. Posting unpopular or even unscientific opinions is not necessarily trolling.
Very informative, thanks... but what's "bing"?
(And yes, biology and physics are STEM fields as well... but I think any unique perspective on a problem can be a good thing.)
Absolutely! The best example I can think of is Simulated Annealing, an artificial-neural-network approach.
First, consider that neurocomputing itself comes from biological origins. But in Simulated Annealing, a problem is "coded" into a neural network by structuring it analogously to a physical arrangement of atoms, where the a "lowest energy state" arrangement of the atoms corresponds to an optimum solution of the problem. Problem solving is then done in the same manner a growing crystals out of a molten substance: you raise the temperature high, and then gradually lower it to give your atoms a chance to wander into lowest-energy configurations and stay there.
(If you're familiar with probabilistic algorithms, this is like hill climbing to find a global maximum, but where the "temperature" parameter gives you a certain amount of freedom to go downhill instead of uphill so you don't get caught in a local maximum that isn't a global maximum.)
My point is that a biologist or physicist can make contributions that would have eluded virtually any other computer scientist.
Math might have been the original basis of software development, but you can have a solid career as a developer and not have to perform much more than basic college-level (or even high-school-level) mathematics. If you can deal with binary and hex, you're mostly there. There's no requirement for advanced math skills in Object-Oriented Design, or writing database ETL scripts, or doing Perl text-processing, or Bourne shell scripting, or slamming together a LAMP site.
As for logical, procedural thinking: architects and structural engineers need that, or buildings would never get put together. :-) I agree that a STEM background does put the odds in your favor, but STEM graduates don't have a monopoly on logic, and some of them seem to be able to get CompSci degrees and go on to become positively awful developers.
I also agree that in some settings a STEM background will help a lot (especially in logic programming languages, where formalism still rules the roost), but nowadays you're probably better off having an educational background in the exact problem domain you're developing for. Working in the financial sector? A business degree can help you understand the purpose behind the software you're writing, which can help you spot problems and avoid incorrect simplifying assumptions.
IMO where the Computer Science skills still really come into play is in high-efficiency or cutting-edge systems. Many developers might not have heard of quadtrees or k-d trees, but find someone who's implementing a DBMS or a spatial browser (a la Google Maps) and those skills become paramount again. Likewise, if you're building a Siri clone, you damned well better know Natural Language Processing, Expert Systems, and a few other things.
True, but in these cases the software had nothing to do with Geology, Physics, or Architecture. My point was that if you've got a brain and the willingness to apply it, you can be a damned good software developer.
It was actually my own typo I was pointing out, so I think I'm allowed to be a jerk about it. :-)
I suspect that Uncle Sam just wants his cut. :-)
I see what you did there. :-)
And, of course, part of "giving a crap about what you do" involves reading the Preview carefully before you post. That should say:
Sigh... Tell me again why /. doesn't have an "Edit" button?
I hold two CompSci degrees (BA, MA) from two reputable universities, and I can tell you this: some of best developers I've ever met have come from non-CompSci fields: geology, physics, and (building) architecture.
The keys to being a good developer are much the same as in any other field: being able to learn, and being able to apply what you've learned, and giving a crap about what you do.
In the US, IT workers in startups will sometimes take very low compensation in exchange for stock options. We do have minimum wage laws, but above and beyond those, you can offer many types of "compensation" to attract workers -- retirement plan, corporate car, etc.
So imagine that in 2020, tech companies start cutting back cash compensation in exchange for alternatives which, on the face of it, have greater value: e.g., I can either give you $1000, or $3000 equivalent of company dollars which you can use to pay rent on a company-run apartment which is walking distance to work, buy groceries in the company store which is right in that apartment complex, etc. Which would you take? It depends on your circumstances. But you can guarantee that a smart company would rig the circumstances so that it ultimately works in their favor at your expense. This actually happened in the US in the 19th century: an awful time to be a worker here.
It seems completely within the realm of possibility to have the workers paid in FaceBucks, GoogleBooty, MicroCents, etc. within a few decades. These would probably start as in-world currency for the various gaming platforms hosted by these companies, but spread outward from there to purchase food and shelter at company-owned places.
...it's Monday.
Only Fixed-Price contracts work the way you describe. IT developers on Cost-Plus contracts are paid by the hour, and such contracts are very common for long-term O&M (Operations and Maintenance) work and ongoing development of key public-facing systems. I can introduce you a lot of developers, testers, and requirements analysts who are out 88 hours of time due to the shutdown. The good news is that they will have until January 2014 to make up the hours through overtime.
http://en.wikipedia.org/wiki/Cost-plus_contract
http://en.wikipedia.org/wiki/Fixed-price_contract
Government employees will be paid, but government subcontractors for many contracts will not (it depends on how the contract is funded).
So in those cases, either the subcontractor pays its employees and takes an 11-day loss, or else they mandate that their employees choose to take either accrued (paid) vacation or unpaid leave.
The net effect is that a lot of people in the DC area are out 11 days of income.
This. The Middle East has no monopoly on ridiculous ideas about female physiology. Some American politicians, pundits, and religious leaders are downright scary in this regard.
The frequency and amplitude of the phone conversation, sampled at 1-millisecond intervals.
Just metadata.
We think we may have created the largest Minecraft world ever built based on real-world data.
Cue the "Google Earth" version in 3...2...
Maybe he meant that Microsoft dominates the market of XBOX consumers. :-)
This. It seems like no one can post anything about Burning Man without both sorts of haters crawling out of the woodwork.
There seems to be a growing backlash against the haters, so soon I expect that those same haters will join the backlash and say, "I was hating the people who hate the people who go to Burning Man before hating the people who hate the people who go to Burning Man was cool."
They had a lot of money to throw at the Zune, too. They never caught up.
Accusing someone of being an NSA shill means you must be the NSA shill. We are SO onto you.
Unfortunately, our media-rich environment is so saturated with distractions that most of us (including me) are turning into low-information people. We form opinions and then gradually entrench ourselves in online communities which support them, because it's comforting. Even when reading threads where two sides of an issue are colliding, I suspect that many of us will not be swayed by voices from the other side.
No, taking the time to
(1) evaluate the problem,
(2) determine the best approach for a fix,
(3) weight the time commitment against any other critical activities going on,
(4) assign the best person to code it,
(5) review the code,
(6) rebuild and deploy it up through various testing environments,
(7) test the hell out of it in each environment, and
(8) deploy it into production
in a mere 10 work days is excellent, given the importance of the system. That's what Enterprise System timelines are often like.
If a major financial system like NASDAQ had managers run into the developer area and shouting "ZOMG someone fix this and slam it into Production now now now!", then I'd be more concerned.
William George's post should not have been modded "Troll". I also disagree with his point (and I said as much in my own reply), but it's a plausible position to take if you're a Creationist. Posting unpopular or even unscientific opinions is not necessarily trolling.