It depends on the environment and problem domain, but I can say from personal experience that C# and Visual Studio are significantly more productive than C and vim.
Moving further up the "higher level language" ladder to something like Python keeps increasing productivity.
I've worked with the veteran C programmer who couldn't be bothered to learn C# (even though, theoretically, that was the language we were using). Yes, he chugged steadily along, getting stuff done. Going about 1/3 the speed he should have been, creating code that absolutely no one except him could maintain.
I'm not positive he was in the "obfuscation for the sake of job security" camp, but I definitely got that impression.
(For the record, I'm doing C++ these days, working on a code base that was written by another old-school C programmer. Mostly in Portuguese. It's much easier to deal with).
"How" you program in C or VB is vastly different than the experience in something like Haskell or smalltalk. It's vaguely similar to the "how" in python, that's still really a completely different way of thinking.
Different languages are different tools for different jobs. Trying to program in clojure the same way you program in C would be like trying to hammer a nail with a printing press.
I applaud your willingness to dive in and learn new stuff. But Objective-C makes a lot more sense once you realize that it's just a preprocessor that adds smalltalk features to C. For some reason, none of the introductions mention that.
Sure, every once in a while they'll send someone off for training, if they're having trouble finding someone who already has a desired someone with the desired skill set.
For the most part, companies want programmers they can treat like workers on an assembly line.
This is just a generalization. I don't know anything whatsoever about somersault, and there are always exceptions to every stereotype. But...
That's the kind of red-flag attitude that, to me, screams "bad programmer."
All the good programmers I know wound up in the field because they love learning new things and are constantly experimenting with different technologies. At the very least, they're trying to follow the "learn a new programming language every year" rule.
I think it's more complicated than this. People keep re-inventing the wheel because they refuse to look back and learn old tech.
Older programmers are probably more guilty about this, because, sooner or later, the pace of learning new tech will burn them out, even though they should know better. Newbies fresh out of school are worse, because they think they know everything.
The example that keeps coming to my mind is a curmudgeon with whom I used to work who insisted on doing everything in K&R C, because it was simple. Even though (theoretically) we were using C#. When I tried to pitch MVC for a new project, he had great fun laughing at the new-fangled concepts and stupid terminology...we wound up going with his tried & true methodology, and I moved along to a different job.
OTOH, experience does matter. After enough time working with a given technology, you get a feel for what will and won't work, how long something will take, what the corner cases are, etc.
The sad fact of the industry today is that the only way to tell how good another programmer is is to work with him. Which managers do not do.
Which, frankly, I think is right. As one of those people that does job-hop every couple of years,
Translation: you aren't staying at a job long enough to actually learn the job. Just get a minimal overview and get competent enough to start earning your salary.
I write that from the perspective of someone who's been guilty of exactly the same thing, and has watched several friends continue to do so over the years.
I often find I'm leaving behind perfectly competent, but comfortable, programmers. You pay in your non-increasing salary to stay somewhere where you don't *really* need to try anymore because you've proved yourself.
Or: they've stuck around long enough to actually learn the systems and domains they're working on, whereas people like you skipped out, leaving them to deal with your screwups.
Those that move on and take the risks, get the benefits.
What risks? At worst, your resume looks a little suspect, because whoever looks at it has a good chance of recognizing the signs of someone who games the system. Or maybe you'll bounce into company that's doomed to go out of business in two months. Other than that, there aren't many downsides for the players.
Actually, those seem to almost always eventually become true.
Sooner or later, programmers get burned out from trying to keep up with the latest technology trends. They wind up moving on to sales or management, they accept an ever-more-backseat role, or they switch careers.
And new hires have a huge advantage in the payroll lottery. Most companies have some sort of official policy about how big a raise they're allowed to offer at any given time. Someone who's just in it for the money is better off hopping from one job to the next every year or two.
It misses a lot of the point and the nuances, and it's ultimately detrimental to everyone involved (except for the people who've figured out the best way to play the system), but that's the reality.
A huge part of the blame for that lies squarely on Hamilton's shoulders. He wanted a monarchy. He used his influence to pack the courts with judges who agreed with him that they should weasel around what the Constitution actually says.
To make all Laws which shall be necessary and proper for carrying into Execution the foregoing Powers, and all other Powers vested by this Constitution in the Government of the United States, or in any Department or Officer thereof.
That's at the bottom of Article I, Section 8, titled "Powers of Congress." It's a very specific list of the things they're allowed to do.
Common sense interpretation: if they have to write a law to implement one of the extremely specific and limited set of powers we have explicitly delegated to them, and that law actually does that, then they can do that. If they couldn't, then what would be the point?
Treasonous lawyer interpretation: if they think it will advance the general welfare, then they can pass any law they want. Never mind that the entire point behind the Constitution was to keep the federal government from growing into an uncontrollable behemoth with limitless powers.
We the People of the United States, in Order to form a more perfect Union, establish Justice, insure domestic Tranquility, provide for the common defence, promote the general Welfare, and secure the Blessings of Liberty to ourselves and our Posterity, do ordain and establish this Constitution for the United States of America.
That's the preamble. It's explaining what the Constitution is about, and why they need to give the federal government the jaw-dropping powers they actually did give it. Even given the belief that people would actually be vigilant, pay attention, and overthrow any government that tried to usurp any more power, there was a strong movement against giving it as much as they did.
It doesn't authorize anything or give any powers to anyone. It's nothing more than a flowery introduction.
Treasonous government interpretation: we'll do exactly what you did. Put these three phrases in conjunction, take them out of context, and run rampant over the serfs who are too stupid to read it for themselves or pay attention to the original intent.
To regulate Commerce with foreign Nations, and among the several States, and with the Indian Tribes;
Toward the top of Article I, Section 8. "Regulate" and "Commerce" both have very specific meanings at the time. Hamilton's cronies (specifically John Marshall) started sweeping that that under the rug almost immediately. Power to Regulate Commerce is an interesting look at the history of how this clause got corrupted from meaning "Keeping transfers of commercial goods among the States regular" to "Whatever Congress says it means today.
I repeat: either the Constitution means exactly the same thing it originally did (plus the Amendments), or it means absolutely nothing at all. If it's the latter, then there is absolutely no rational basis for the federal government's existence.
Of course, judges and politicians won't agree with me. They have a vested interest in maintaining the status quo, shearing us sheep for the benefit of their owners, the megacorps. To paraphrase Ben Franklin: "You have a Republic, as long as you can keep it."
We did a horrible job of that throughout the 20th century. So far, this one just seems to be heading downhill faster.
It was written in extremely simple, 5th-grade level English. The Federalist Papers expounded on what it meant in great detail. They were too trusting that the common man wouldn't allow lawyers to shred it into meaninglessness.
It either means exactly what it says (very explicitly laying out what the government is allowed to do), or it means absolutely nothing. Which would make it completely null and void.
If times change, and flaws are discovered...amend it. They knew they weren't perfect.
Company A gets to steal tax dollars, no matter how well it does whatever it's trying to do. If it fails, it just gets more funding next year, because that was obviously the problem. Company B actually has to create a good-enough product that people actually want to use, and are willing to pay for.
The discrepancy in attendance between public and private schools is probably the canonical example of how this fails.
The military-industrial complex has to justify its existence. And the NSA has to have an excuse to keep monitoring every tiny little detail of our lives.
Re:Scientists will win, lose, lose, and lose
on
Bastardi's Wager
·
· Score: 1
There's big money on both sides.
I think your question is extremely valid, and I don't pretend to have a clue one way or the other. I just think that there are equally valid questions coming from the "other" camp.
Chicken Little screaming that "The sky is falling!!" just isn't very convincing to me.
Then again, on this issue, I'm pretty much a tree-hugging liberal. Building a civilization on burning a non-renewable resource seems really stupid to me. And I firmly believe in the premise that it's really dumb to poop where you sleep.
But then I also don't believe in forcing anyone else to change their lives to march in step with the way I've chosen to live mine. And the carbon footprint of people like Al Gore dwarf mine. How seriously can I take them when they've chosen to make themselves rich and live a life of luxury by forcing others to live according to their agenda?
I also have to take issue with the "scientists" who insist they know all the answers. This is an extremely complex field. I don't know much about this particular branch, but I do know a little about computer modelling.
And I remember that, at the turn of the 20th century, physics had answered all their questions, except for some minor little detail (I'm not a physicist, either, so I don't recall what that was, off the top of my head).
Re:Scientists will win, lose, lose, and lose
on
Bastardi's Wager
·
· Score: 2
That's probably pretty close.
And "arguing" is exactly what's going on.
AGW proponents will still be insisting that the science is all solved. They have the all the answers, and it's as settled as evolution. The debate is over, and we have to force these laws down everybody's throat because, by golly, people aren't smart enough to realize that ethanol will save the planet.
Skeptics will still be insisting that there still hasn't been any real debate. The only people who go into climate science are already True Believers.
Politicians and corporate interests will still be interfering and meddling in areas where they don't really have any business getting involved. There will still be shills on both sides keeping the argument going so that no meaningful debate can happen.
That happened in the 70's. And the debate was pretty much exactly the same.
Skeptic: "Wait, could we please stop to discuss this?"
Environmentalist: "There's no time! We have to roll back the industrial revolution to save us from another ice age!"
Skeptic: "How do you know that? We're talking about something incredibly complex, and a 'science' that's only 10 or 20 years old."
Environmentalist: "We're experts! The debate over the science is over. We must take drastic changes immediately, or we are all Doomed.
I don't really know enough about the science to have an opinion here. But I do know enough about people to realize that, when someone's trying to pass laws in the interest of "society," and they're trying to rush people into it with scare tactics...they pretty much always have ulterior motives.
He's talking about pushing the envelope at an entirely different level of bandwidth and interactivity.
In the opening article of the series, he went through a series of tests, trying to figure out why his internet connection sucked (he's looking at doing full-scale interactive video conferencing, and complains about latencies that he notices that are longer than 20 ms). Most of these tests involved pinging some source, using different settings and configurations.
The simplest test basically went "Ping some server. Start a big file upload. Wait a few seconds, in case your ISP gives you extra bandwidth for an initial burst. Try pinging that server again. What happened to your ping times?"
He mentions ECN a lot. Usually mentioning that it will probably never see wide-scale deployment, because of all the hardware that can't deal with it. I can't remember now whether he considered it part of a "solution" or just something else that would help with "mitigation."
The thing is, he had the connections to swing face-time with Comcast's engineers. And the know-how to get his "last-mile" connection cleaned up to almost lab quality conditions. Not many people could have figured this out.
That's part of why this is such a complex problem (assuming he's right). In one article in the series, he mentioned that this was leading to regular packet loss as high as 3%, which is completely unacceptable. But the basic premise is that dropped packets are the mechanism peers use to warn each other that they're experiencing a bottleneck. Meaning that they actually expect that to happen frequently.
Part of the problem might be that finding the right "sweet-spot" for buffer size is really difficult. And we've gone way past the point of diminishing returns, in most cases.
The giant buffers are in place to hide the infrastructure problems. They're making it impossible for TCP to correctly throttle your bandwidth based on current network conditions (because, for example, the conditions it currently knows about are over a second old).
They're also there because people haven't really thought about the implications of their settings. There's a good chance that the transmission buffer on your computer is set to some completely ridiculous size. Something that would make sense for a gateway at a data center that's plugged into some super-fat pipe.
I think the main point is that they switched to TCP after a nation-wide network crash that lasted for a few days, because whatever protocol back then couldn't adjust for congestion. These huge buffers have put us smack dab back in that same leaky boat.
I'll be at your side sniping and snarking all day long about ISPs and backbone providers. But
he does have some pretty respectable experience and credentials. If you read enough articles in the series, he's enlisted some very impressive help (like, say, Vincent Cerf) to try to diagnose the problem.
I guess the thing to do here is peer review. Try to replicate his experiments. See if you can come up with a better explanation. Rather than just dismissing him out of hand. He deserves at least that much respect.
That generality isn't fair...but it's a pretty safe bet.
It depends on the environment and problem domain, but I can say from personal experience that C# and Visual Studio are significantly more productive than C and vim.
Moving further up the "higher level language" ladder to something like Python keeps increasing productivity.
I've worked with the veteran C programmer who couldn't be bothered to learn C# (even though, theoretically, that was the language we were using). Yes, he chugged steadily along, getting stuff done. Going about 1/3 the speed he should have been, creating code that absolutely no one except him could maintain.
I'm not positive he was in the "obfuscation for the sake of job security" camp, but I definitely got that impression.
(For the record, I'm doing C++ these days, working on a code base that was written by another old-school C programmer. Mostly in Portuguese. It's much easier to deal with).
"How" you program in C or VB is vastly different than the experience in something like Haskell or smalltalk. It's vaguely similar to the "how" in python, that's still really a completely different way of thinking.
Different languages are different tools for different jobs. Trying to program in clojure the same way you program in C would be like trying to hammer a nail with a printing press.
I applaud your willingness to dive in and learn new stuff. But Objective-C makes a lot more sense once you realize that it's just a preprocessor that adds smalltalk features to C. For some reason, none of the introductions mention that.
Because they aren't forced to.
Sure, every once in a while they'll send someone off for training, if they're having trouble finding someone who already has a desired someone with the desired skill set.
For the most part, companies want programmers they can treat like workers on an assembly line.
This is just a generalization. I don't know anything whatsoever about somersault, and there are always exceptions to every stereotype. But...
That's the kind of red-flag attitude that, to me, screams "bad programmer."
All the good programmers I know wound up in the field because they love learning new things and are constantly experimenting with different technologies. At the very least, they're trying to follow the "learn a new programming language every year" rule.
I think it's more complicated than this. People keep re-inventing the wheel because they refuse to look back and learn old tech.
Older programmers are probably more guilty about this, because, sooner or later, the pace of learning new tech will burn them out, even though they should know better. Newbies fresh out of school are worse, because they think they know everything.
The example that keeps coming to my mind is a curmudgeon with whom I used to work who insisted on doing everything in K&R C, because it was simple. Even though (theoretically) we were using C#. When I tried to pitch MVC for a new project, he had great fun laughing at the new-fangled concepts and stupid terminology...we wound up going with his tried & true methodology, and I moved along to a different job.
OTOH, experience does matter. After enough time working with a given technology, you get a feel for what will and won't work, how long something will take, what the corner cases are, etc.
The sad fact of the industry today is that the only way to tell how good another programmer is is to work with him. Which managers do not do.
Which, frankly, I think is right. As one of those people that does job-hop every couple of years,
Translation: you aren't staying at a job long enough to actually learn the job. Just get a minimal overview and get competent enough to start earning your salary.
I write that from the perspective of someone who's been guilty of exactly the same thing, and has watched several friends continue to do so over the years.
I often find I'm leaving behind perfectly competent, but comfortable, programmers. You pay in your non-increasing salary to stay somewhere where you don't *really* need to try anymore because you've proved yourself.
Or: they've stuck around long enough to actually learn the systems and domains they're working on, whereas people like you skipped out, leaving them to deal with your screwups.
Those that move on and take the risks, get the benefits.
What risks? At worst, your resume looks a little suspect, because whoever looks at it has a good chance of recognizing the signs of someone who games the system. Or maybe you'll bounce into company that's doomed to go out of business in two months. Other than that, there aren't many downsides for the players.
Actually, those seem to almost always eventually become true.
Sooner or later, programmers get burned out from trying to keep up with the latest technology trends. They wind up moving on to sales or management, they accept an ever-more-backseat role, or they switch careers.
And new hires have a huge advantage in the payroll lottery. Most companies have some sort of official policy about how big a raise they're allowed to offer at any given time. Someone who's just in it for the money is better off hopping from one job to the next every year or two.
It misses a lot of the point and the nuances, and it's ultimately detrimental to everyone involved (except for the people who've figured out the best way to play the system), but that's the reality.
A huge part of the blame for that lies squarely on Hamilton's shoulders. He wanted a monarchy. He used his influence to pack the courts with judges who agreed with him that they should weasel around what the Constitution actually says.
To make all Laws which shall be necessary and proper for carrying into Execution the foregoing Powers, and all other Powers vested by this Constitution in the Government of the United States, or in any Department or Officer thereof.
That's at the bottom of Article I, Section 8, titled "Powers of Congress." It's a very specific list of the things they're allowed to do.
Common sense interpretation: if they have to write a law to implement one of the extremely specific and limited set of powers we have explicitly delegated to them, and that law actually does that, then they can do that. If they couldn't, then what would be the point?
Treasonous lawyer interpretation: if they think it will advance the general welfare, then they can pass any law they want. Never mind that the entire point behind the Constitution was to keep the federal government from growing into an uncontrollable behemoth with limitless powers.
We the People of the United States, in Order to form a more perfect Union, establish Justice, insure domestic Tranquility, provide for the common defence, promote the general Welfare, and secure the Blessings of Liberty to ourselves and our Posterity, do ordain and establish this Constitution for the United States of America.
That's the preamble. It's explaining what the Constitution is about, and why they need to give the federal government the jaw-dropping powers they actually did give it. Even given the belief that people would actually be vigilant, pay attention, and overthrow any government that tried to usurp any more power, there was a strong movement against giving it as much as they did.
It doesn't authorize anything or give any powers to anyone. It's nothing more than a flowery introduction.
Treasonous government interpretation: we'll do exactly what you did. Put these three phrases in conjunction, take them out of context, and run rampant over the serfs who are too stupid to read it for themselves or pay attention to the original intent.
To regulate Commerce with foreign Nations, and among the several States, and with the Indian Tribes;
Toward the top of Article I, Section 8. "Regulate" and "Commerce" both have very specific meanings at the time. Hamilton's cronies (specifically John Marshall) started sweeping that that under the rug almost immediately. Power to Regulate Commerce is an interesting look at the history of how this clause got corrupted from meaning "Keeping transfers of commercial goods among the States regular" to "Whatever Congress says it means today.
I repeat: either the Constitution means exactly the same thing it originally did (plus the Amendments), or it means absolutely nothing at all. If it's the latter, then there is absolutely no rational basis for the federal government's existence.
Of course, judges and politicians won't agree with me. They have a vested interest in maintaining the status quo, shearing us sheep for the benefit of their owners, the megacorps. To paraphrase Ben Franklin: "You have a Republic, as long as you can keep it."
We did a horrible job of that throughout the 20th century. So far, this one just seems to be heading downhill faster.
I grew up listening to that particular Chicken Little. It was one of the bugbears in my childhood.
Did they take an oath to protect government secrets?
I know that I didn't, when I was in their position. I swore an oath to defend the Constitution, against all enemies, foreign and domestic.
When the fox has taken over the chicken house...
It was written in extremely simple, 5th-grade level English. The Federalist Papers expounded on what it meant in great detail. They were too trusting that the common man wouldn't allow lawyers to shred it into meaninglessness.
It either means exactly what it says (very explicitly laying out what the government is allowed to do), or it means absolutely nothing. Which would make it completely null and void.
If times change, and flaws are discovered...amend it. They knew they weren't perfect.
Apparently so.
Wish I had mod points (and hadn't gotten involved earlier) for a +1.
Whoosh.
Company A gets to steal tax dollars, no matter how well it does whatever it's trying to do. If it fails, it just gets more funding next year, because that was obviously the problem. Company B actually has to create a good-enough product that people actually want to use, and are willing to pay for.
The discrepancy in attendance between public and private schools is probably the canonical example of how this fails.
The military-industrial complex has to justify its existence. And the NSA has to have an excuse to keep monitoring every tiny little detail of our lives.
There's big money on both sides.
I think your question is extremely valid, and I don't pretend to have a clue one way or the other. I just think that there are equally valid questions coming from the "other" camp.
Chicken Little screaming that "The sky is falling!!" just isn't very convincing to me.
Then again, on this issue, I'm pretty much a tree-hugging liberal. Building a civilization on burning a non-renewable resource seems really stupid to me. And I firmly believe in the premise that it's really dumb to poop where you sleep.
But then I also don't believe in forcing anyone else to change their lives to march in step with the way I've chosen to live mine. And the carbon footprint of people like Al Gore dwarf mine. How seriously can I take them when they've chosen to make themselves rich and live a life of luxury by forcing others to live according to their agenda?
I also have to take issue with the "scientists" who insist they know all the answers. This is an extremely complex field. I don't know much about this particular branch, but I do know a little about computer modelling.
And I remember that, at the turn of the 20th century, physics had answered all their questions, except for some minor little detail (I'm not a physicist, either, so I don't recall what that was, off the top of my head).
That's probably pretty close.
And "arguing" is exactly what's going on.
AGW proponents will still be insisting that the science is all solved. They have the all the answers, and it's as settled as evolution. The debate is over, and we have to force these laws down everybody's throat because, by golly, people aren't smart enough to realize that ethanol will save the planet.
Skeptics will still be insisting that there still hasn't been any real debate. The only people who go into climate science are already True Believers.
Politicians and corporate interests will still be interfering and meddling in areas where they don't really have any business getting involved. There will still be shills on both sides keeping the argument going so that no meaningful debate can happen.
It's been going on for at least 40 years now.
That happened in the 70's. And the debate was pretty much exactly the same.
Skeptic: "Wait, could we please stop to discuss this?"
Environmentalist: "There's no time! We have to roll back the industrial revolution to save us from another ice age!"
Skeptic: "How do you know that? We're talking about something incredibly complex, and a 'science' that's only 10 or 20 years old."
Environmentalist: "We're experts! The debate over the science is over. We must take drastic changes immediately, or we are all Doomed.
I don't really know enough about the science to have an opinion here. But I do know enough about people to realize that, when someone's trying to pass laws in the interest of "society," and they're trying to rush people into it with scare tactics...they pretty much always have ulterior motives.
Unfortunately, it turns out that our elected representatives are just as fickle and clueless.
He's talking about pushing the envelope at an entirely different level of bandwidth and interactivity.
In the opening article of the series, he went through a series of tests, trying to figure out why his internet connection sucked (he's looking at doing full-scale interactive video conferencing, and complains about latencies that he notices that are longer than 20 ms). Most of these tests involved pinging some source, using different settings and configurations.
The simplest test basically went "Ping some server. Start a big file upload. Wait a few seconds, in case your ISP gives you extra bandwidth for an initial burst. Try pinging that server again. What happened to your ping times?"
He mentions ECN a lot. Usually mentioning that it will probably never see wide-scale deployment, because of all the hardware that can't deal with it. I can't remember now whether he considered it part of a "solution" or just something else that would help with "mitigation."
The thing is, he had the connections to swing face-time with Comcast's engineers. And the know-how to get his "last-mile" connection cleaned up to almost lab quality conditions. Not many people could have figured this out.
That's part of why this is such a complex problem (assuming he's right). In one article in the series, he mentioned that this was leading to regular packet loss as high as 3%, which is completely unacceptable. But the basic premise is that dropped packets are the mechanism peers use to warn each other that they're experiencing a bottleneck. Meaning that they actually expect that to happen frequently.
Part of the problem might be that finding the right "sweet-spot" for buffer size is really difficult. And we've gone way past the point of diminishing returns, in most cases.
The giant buffers are in place to hide the infrastructure problems. They're making it impossible for TCP to correctly throttle your bandwidth based on current network conditions (because, for example, the conditions it currently knows about are over a second old).
They're also there because people haven't really thought about the implications of their settings. There's a good chance that the transmission buffer on your computer is set to some completely ridiculous size. Something that would make sense for a gateway at a data center that's plugged into some super-fat pipe.
I think the main point is that they switched to TCP after a nation-wide network crash that lasted for a few days, because whatever protocol back then couldn't adjust for congestion. These huge buffers have put us smack dab back in that same leaky boat.
I'll be at your side sniping and snarking all day long about ISPs and backbone providers. But he does have some pretty respectable experience and credentials. If you read enough articles in the series, he's enlisted some very impressive help (like, say, Vincent Cerf) to try to diagnose the problem.
I guess the thing to do here is peer review. Try to replicate his experiments. See if you can come up with a better explanation. Rather than just dismissing him out of hand. He deserves at least that much respect.