At least for me, the key is to feel like I have time. Not even to have time, but to feel as though I do. Then you go the extra mile to make each piece easier to use, easier to understand, and simpler.
You actually get done earlier, too, so you usually don't have to actually have time to do this. But I still haven't managed to convince my brain to ignore time pressure when I'm in a hurry, so I still churn out less elegant, buggy stuff that takes longer to write when I'm under time pressure.
If you tax petroleum, then biodiesel, ethanol, wind/pv plug-in HEVs, and transit all compete via market forces.
And before the libertarians get their panties in a bunch, we don't have anything close to a free market currently. The market is, and has been, slanted toward petroleum via foreign, domestic and tax policy for the the last 50-75 years. I'm just suggesting we use a petroleum tax to level the field a little.
IANA libertarian, but I believe the argument we'd want to use with them is that petroleum has externalities (harms not borne by producers, e.g., pollution) that cause market imperfections and that the tax therefore is to compensate for that market imperfection.
"In Soviet Russia, pirated software erases..." - er, uh
"In Soviet Russia, 'something' erases pirated software..." - um
"In Soviet Russia, before you 'erase something', software pirates YOU!"
But as I read slashdot, and other tech sites / articles, and realize for some of the software being written nowadays, I would have absolutely NO IDEA how to even begin writing it.
Well, of course you wouldn't. One of the tough things about reading/. or anywhere else like this (and moderation makes this worse) is it makes you think everyone engaging in the discussion understands this stuff except you. (This extends beyond tech, as we get the meteorologists and the theoretical physicists poking around in articles about their expertise as well.) I know a few things well enough to make you feel out of your league (and in fact am old enough to have written applications that would run on some of these ancient emulators of which you speak), but I learn new stuff all the time. You're not as far behind as you might feel.
As for how to move beyond the academic stuff in your training -- I have an obvious answer and a non-obvious (hopefully not too vague) answer. The obvious answer is, learn stuff everywhere -- work, home, wherever you're poking around code. And learn every which way -- writing, reading, listening.
But I must say the way I think you'll learn the most is to look at every piece of software you encounter and wonder, "Is this the easiest way to do this?" In my experience, 90% of the time, the answer is no. Or maybe it's 100% but I'm only smart enough to see it 90% of the time.:) I guess what I'm saying is you'll learn more by attacking what you see and trying to improve it rather than by trying to imitate it. Because most stuff sucks (at least in the environments I've seen; maybe there are exceptions).
The poster is right in pointing out that there is a segment of the environmental movement, and the far left in general, that is essentially anti-progress. They are afraid of anything that is not "natural." This means they go after pesticides (and sometimes they're right). It means they go after nuclear power (probably wrong) and GM foods (probably wrong). They glorify the pre-technological era.
The GM foods part particularly annoys me since virtually all of the "natural" foods we eat were genetically modified by early humans when we started agriculture. (These folks who idealize our previous "sustainable" existence before the rise of technology would also be disappointed to know that we overhunted many of the world's large animals to extinction before we developed technology.) They favor organic farming, etc. They oppose population growth. Astrology is very popular amongst this group, as is alternative medicine (particularly "natural" cures, like herbal medicine).
The poster is wrong to say that these are the real anti-science people. Fundamentalist Christians and "naturalism" advocates (I am coining this term here; there may be a better one) are both anti-science. Basically this comes down to attitudes toward the unknown and belief in the value of the scientific method. The naturalists fear that there's always a hidden "catch" (looming disaster scenario) to things that are not natural. The creationists ascribe everything that they don't understand (including everyday occurrences, like bad luck) to a hidden omnipotent actor.
I spoke with the guy from the intelligent design trial (the biology professor, Miller) about why this is so and he argued that one of the big problems is that science discourages the popularizers (Carl Sagan etc.) by jealously regarding high-profile scientists as not doing real science.
In any case, we all need to do our jobs helping science along by critically evaluating science we read but also explaining science to the masses who have never seen it in action.
I was a staffer for an environmental group (mid-1990s) and was frustrated with the reflexive anti-nuclear instincts, when it seemed to clearly be the solution to the problems.
I left disgusted after a while, at least in part because of the rigid orthodoxy. Another orthodoxy was an opposition to any sort of emissions trading scheme.
But it seems as though the movement as a whole has been coming around. I was doing some reading a couple of years back and it seems like cap-and-trade is now a mainstream position within the movement and there are even some thinkers advocating more nuclear power (see, e.g., The Whole Earth Catalog guy, who also lists others such as Lovelock).
Your profile says that you're in the United States.
<obligatory-slashdot-snark>You really need to get out more...</obligatory-slashdot-snark>
Non-snark version:
The truth is, it's not what people want. In 2002 (sorry, I don't have more recent data for the moment), ABC News/Washington Post polled the U.S. and asked whether people thought "providing needed services" or "holding down the size of government" were more important to them, and small government lost 63%-33%. Phrased differently, there does seem to be some support for smaller government -- in 2004, a "smaller government with fewer services" is preferred to a "larger government with many services", but narrowly (50%-46%), and without specifying the services that would be lost -- note that "needed services" slaughtered government-size in 2002, and everyone thinks their services are needed. People often prefer lower taxes and the idea of smaller government, but their pet program must continue -- hence budget deficits, among other consequences.
And the truly depressing part (for you, as a libertarian) is that probably most of the people who answered they desired smaller government were Republicans, and nowadays many Republicans are hardly batting an eye at the gargantuan expansion of government that the current Administration (and Congress) have shepherded through. So I'm not even sure that support for smaller government hasn't declined since 2002 and 2004.
Politicians wouldn't be able to "keep votes" (as you say) using these programs if they weren't popular.
I don't know whether to characterize my response as "no," "yes, but," or "yes, and,"...
Absolutely name-recognition amongst the PHBs of the world is gold for selling to the people who sign the POs. But one way to get that name recognition is to win the mindshare of the geeks who work for them. This is how Google dislodged Yahoo! in search; let's not forget that at one point only Slashdotters had heard of Google, and then suddenly (it seemed instantaneous) everyone used Google.
Has it worked for Firefox? To some extent, but not dramatically, in my view. Whether it will is an open question. But Google and Firefox are both consumer-facing applications (though Firefox is seeing some enterprise uptake).
Would it work for Ubuntu in the enterprise? Maybe. Ultimately PHBs do listen to us. They might say "no," but they listen. And listening (even while saying "no") starts the "name recognition" process. And then once enough profiles of Shuttleworth appear in CIO Magazine and its ilk, don't bet against it.
So you're right for now, but I'm not completely certain you're right for the future -- and I am not "on" anything.:)
(Disclaimer: My experience with certifications has to do only with the Sun Java-related exams. I have no idea whether those certification exams/programs are typical.)
1. Even managers who have a clue might enjoy telling their clueless bosses "the candidate I hired has xxx certifications" as a way of establishing the new person's credibility or of justifying a hiring decision (perhaps a decision that violates the clueless uber-boss's prejudices, for example).
2. It goes without saying that there's no substitute for trying to figure out whether someone can actually do a job or not. But we have to use imperfect evidence. And remember, it's not as easy as being able to tell whether someone can code (which is hard enough). It's knowing their levels of dedication, responsibility, ability to work as part of team, etc. Hiring great people is a hard job; I disagree with those on/. who think it's easy (particularly when you're constrained by upper management on how rigorous an interview process you can use, and multiple people have input on a given hire).
3. In the absence of perfect knowledge about candidates, we use all sorts of criteria to estimate quality. Given the alternatives (where did the person go to college? what was the person's GPA? where has the person worked? what are the opinions of the person's references (who I probably don't know and thus can't evaluate)? or, worst of all, how many years of experience does the person have?) I think whether the person can study for and pass a certification exam starts to look pretty good; not necessarily better than all of the previous examples, but on a par with them, in my view.
4. I have certifications. I would rather have people judge me on some sort of objective criteria, rather than how well I can talk my way through an interview. I've seen the average interview process. I'm more glib than most, and I know I could probably get myself hired for jobs for which I'm not qualified, given the processes used (whether I'd want to is another matter, but this comment is long enough).
You may want to check out RARS, a simulator framework in which you can write programs to run in a simulated auto race against other programs. I haven't messed with RARS in a while, but at the time I was using it, (IIRC) your driver was a C++ class that received a huge struct as a parameter and returned a small struct indicating the direction you wanted to steer and a number indicating gas/brake magnitude.
But what do I know -- my car could barely make it around the track without running into the wall.
I agree and disagree with some of the conventional wisdom commenters have had -- perhaps because it depends who you are what will work.
Many have made very good suggestions about finding a way to leave the house and get your work done. I enthusiastically second these -- go to a coffee shop, or to a park (weather-appropriate), or a bookstore, or a library, or wherever you go. Go to a place for a while -- like others have said, you'll get to know people. When you get tired of it, stop going there and go elsewhere.
Vary your schedule; take a 1-hour break during the day to do something (others have suggested good stuff like this, too). Programmers sometimes can get lots of work done from 6-10 PM; do this once in a while. Get a huge amount done in the morning once in a while. Let the rhythms of your life control your schedule -- work 55 hours one week and 25 the next (one of the great advantages of managing your own schedule is you aren't forced to work those extra 15 hours in the 25-hour week when you're going to get little done anyway, and just tire yourself out trying to force yourself. Don't miss this advantage -- spending the right 160 hours working a month can make you get more done than you would on a fixed schedule).
The only thing I haven't seen mentioned that worked for me was to vary where in my living space I worked. This is completely irrational and I don't know why it works, but it did...
Well, we've narrowed the discussion to one point, then: refactoring. It sounds like we probably agree on that, too.
Me (derisively): "You don't touch working code" You: "Hmm. [That statement s]till does make sense to an extent."
I definitely agree that refactoring is an investment which has a cost and a benefit. If a piece of code isn't going to be touched again, it shouldn't be refactored.
There are two phenomena I was thinking of when I made my complaint:
(a) You have produced demo-quality code which appears to work, and a PM believes that any time spent improving it is wasted. The development staff wants to refactor for two reasons. First, they're going to be doing the next version and recognize that a little up-front effort goes a long way. Second, they know that bugs probably exist because the code is crufty and want to make them easy to fix when they're uncovered. PMs have such overwhelming short-term incentives that they make the wrong decision for the organization and insist development is "done."
(b) The code already doesn't "work," and a developer is asked to go in and fix a bug or make an enhancement. Overwhelming political pressure is applied to make a purely local fix rather than disturbing the overarching structure. ("Now that you've developed the fix, you should be able to do a search to find the 176 places where it is needed, and copy-and-paste it in. Should only take about a day, right?") I think this results from three influences: (1) The short-term incentive problem, (2) the old procedural programmer's fear of touching existing code, (3) whoever wrote the code is still around and that person's reputation is being protected.
I still think that in professional development shops (although I've rarely worked with software companies; mostly banks etc. like you mention) refactoring is done too little, rather than too much. Fear of refactoring has caused enormous problems in my client organizations. And it's funny I would say this -- I'm a consultant, so I'm not even around to see the long-term damage! If the client is already suffering damage while I'm still there, I can only imagine how bad it must get a couple of years out.
I can see why you might have taken my comment the way that you did, and your point is well-taken.
Yes, I certainly have seen the sort of projects you mention; I assume that by calling them "CV-driven" projects you mean that they are driven by the desire of the participants to enhance their own CVs.
I also should have mentioned another sort of project manager (though I've never seen them holding that exact title) which reflects your point. "Our project must be n-tiered and XML-based; it must use components with well-defined interfaces. We should make sure the components are loosely coupled. Make sure that it's web-services-ready."
Presuming you don't want to engage in a flame war about object-oriented programming or any of the "new techniques," I'll just point out that project managers with outdated skills tend to believe that object-oriented programming (for example) increases the complexity of a system, rather than decreasing it -- because they don't understand it. Another example -- they tend to believe that refactoring is bad. With the massive, monolithic, interdependent systems of the past, "you don't touch working code" made sense.
Obviously these stands put them in a minority in the serious development community nowadays, and prevent staff from taking advantage of advances in the field. The improvements in development techniques over the last decade don't apply because of the PM's own slothfulness in keeping his/her knowledge current.
The flaw you point out is real. Trying to make procedural developers write object-oriented code because you read an article in CIO magazine telling you OO was the future is silly, like you say, and leads to the failed projects you cite. But I've seen PMs make OO developers write procedural code because their skills are 1980s-vintage. Bad idea also; a PM shouldn't prevent developers from exceeding the PM's own development skills. Agree?
Most of the clients I've worked with have had project managers of two types:
(a) No technical experience, (b) Outdated technical experience.
The best project manager I've worked with was probably one from category (a). Category (b) project managers tend to be dangerous because they have a superficial understanding of what you're doing and (1) can't understand why it could be hard, or (2) can't understand why you need to use all these new-fangled techniques like object-oriented programming and refactoring. I've only worked with one person who had up-to-date technical experience but he had little power for other reasons, so hard to generalize.
The fact that you recognize that your PMs may be making inappropriate commitments, etc., may mark you as someone who wouldn't fit in well at some organizations. The basic cycle seems to be that the PM gets pigeonholed at a meeting with muckety-mucks and is asked leading questions like "can this be done in a month?" Not knowing, and afraid to tell the important muckety-muck "I don't know, I'll need to get back to you," the commitment gets made. Then they come back to you, intending to force you to get it done. Or they already know it can't get done but intend to show a tremendous amount of effort toward the goal to "prove" to the muckety-muck that it was impossible. ("Everybody worked 70-hour weeks for a month and it still wasn't done on time.")
All of this is not really to criticize PMs -- it takes a brave soul to stand up to that sort of onslaught. The question is, will you be as good at dealing with higher-ups (who do not like to hear the word "no") as it sounds like you will be at dealing with programmers? The first audience is probably more important than the second to your professional success... the "overcommitting" project managers I've known seem to be doing quite well.
I had the same problem with Adelphia, and it wasn't because my net block was blocked, it was because Adelphia's servers were set up to refuse mail from SMTP servers whose addresses didn't resolve to the e-mail addresses' domain names.
When I switched my reverse DNS configuration, Adelphia started accepting my mail again, but Sendmail got all confused and started re-writing e-mail headers, replacing everyone's domain name with the domain name of the machine on which Sendmail was running. So I never got it to work completely.
REM "It's the End of the World as We Know It" - Why does everyone always pick on this song without listening to what they are really saying. Everyopne always stops after reading the first six words of the title.
Because no one can understand what they're saying.:)
All of the congresspeople in Western Washington, particularly Jay Inslee -- are pretty tech-savvy, for obvious reasons. (And of course, there's Senator Maria Cantwell, also of Washington state, who worked for RealNetworks and got rich before running for the Senate (though she was a congressperson before that). Though I don't know much about the Bay Area, I'd imagine the same is true there.
Senator Orrin Hatch (see a statement about Napster) has always seemed to have a clue (and an anti-Microsoft one) about these matters. This seems to be because of geography as well -- he's served in the Senate with Novell located in his state.
I'd say the best hardware would be one of those Java chips running Java OS. Then we could explain to the aliens the benefit of porting the Java virtual machine to their hardware...
We had Communist Party USA members on the street corners during college. I made up my mind about Communism before college, so I ignored ("filtered") them. Did the fact that I heard them say a few words before merrily walking past them somehow enhance my civic experience?
We always had the choice to filter. The Internet gives us the choice not to filter.
In other words, if nowadays I want to hear raw, unfiltered viewpoints, I can. Balkanization? I can look up stuff written by the various sides in the original Balkans and think about the issues of the region myself! Or, I can decide it's all just propaganda, and not look it up. But the choice not to hear some group's ideas was always there, even in the town-crier-style democracy much cited by the nostalgists. The ability to hear those ideas anytime, anywhere is new, and I have a hard time seeing how it's a negative.
(1) Are you willing and able to pay for established professionals? It sounds as though by mentioning "graduates," you are looking to hire entry-level-type folks. Depending how you are funded, this may well make sense -- but if you have the money, I'd suggest getting some folks (at least a minority) with some experience in the field. The habits developed by these folks (if they're good) -- for working on large team-based projects -- are almost impossible to develop in academia (emphasis on almost).
You might be able to attract some of those folks (at a lower price) simply by the science-y aspect. As a scientist, imagine how numbing it must be for folks with minds like yours to be asked to write the same application over and over ("read this out of our database and put it on a screen, or a web page").
(2) I think the way to evaluate candidates is whether, during a one-hour interview, they can pick up some basic understanding of the research that you are doing. This helps you on a few important points:
(a) Do they have any background in the sort of science you are doing,
(b) Do they care enough to try to understand what you're doing, or are they looking to be directed every step of the way? (This is an important separator of good programmers from merely adequate ones -- in any problem domain.) Odds are, they had a class in college at least peripherally related to your field... does it start coming back to them when you talk to them?
(c) Are they (to put it bluntly) smart enough to understand the application domain?
I used to work in the political milieu and I can tell you that BillyGoatThree is right on there.
My lobbying organization would generate blizzards of pre-printed postcards to representatives with absurd stuff like "I believe [the following seven paragraphs of hypertechnical blather about some bill number and its amendments]" and get people to sign them. Big deal. Occasionally, people would take the time to write out the letter and it would be taken -much- more seriously.
Much of the mail/e-mail received by a legislator essentially -is- spam -- even "handwritten" letters people (before the days of E-mail) would essentially copy-and-paste from a "sample" letter we gave them. Legislators are not impressed by hundreds of copies of word-for-word plagiarism.:)
However, if letters don't appear to be coordinated by lobby groups, they are paid much more attention -- they show that awareness is getting outside the rabblerousing groups out into the general public.
I testified at a government hearing once about a pending regulation -- I can tell you that there the comments were paid some heed. Still not a heck of a lot, but this time you had to drive to the location, go into the auditorium, and wait an hour for your turn to talk. And the vast majority of people who took the time to do that knew what they were talking about (myself not included:) ).
The other pressure point is the kind of lobby group I worked for. People listened to us because we "represented" our membership. So if you care about an issue, you can bring it to a group's attention and might get it paid some attention, while your mail/e-mail/whatever might get lost in the shuffle.
At least for me, the key is to feel like I have time. Not even to have time, but to feel as though I do. Then you go the extra mile to make each piece easier to use, easier to understand, and simpler.
You actually get done earlier, too, so you usually don't have to actually have time to do this. But I still haven't managed to convince my brain to ignore time pressure when I'm in a hurry, so I still churn out less elegant, buggy stuff that takes longer to write when I'm under time pressure.
For goodness' sake, this is filed under "Science." Does anyone have a figure on the estimated "mass" of this cave?
If you tax petroleum, then biodiesel, ethanol, wind/pv plug-in HEVs, and transit all compete via market forces.
And before the libertarians get their panties in a bunch, we don't have anything close to a free market currently. The market is, and has been, slanted toward petroleum via foreign, domestic and tax policy for the the last 50-75 years. I'm just suggesting we use a petroleum tax to level the field a little.
IANA libertarian, but I believe the argument we'd want to use with them is that petroleum has externalities (harms not borne by producers, e.g., pollution) that cause market imperfections and that the tax therefore is to compensate for that market imperfection."In Soviet Russia, pirated software erases ..." - er, uh
..." - um
...
"In Soviet Russia, 'something' erases pirated software
"In Soviet Russia, before you 'erase something', software pirates YOU!"
I guess it doesn't work well here
But as I read slashdot, and other tech sites / articles, and realize for some of the software being written nowadays, I would have absolutely NO IDEA how to even begin writing it.
Well, of course you wouldn't. One of the tough things about reading /. or anywhere else like this (and moderation makes this worse) is it makes you think everyone engaging in the discussion understands this stuff except you. (This extends beyond tech, as we get the meteorologists and the theoretical physicists poking around in articles about their expertise as well.) I know a few things well enough to make you feel out of your league (and in fact am old enough to have written applications that would run on some of these ancient emulators of which you speak), but I learn new stuff all the time. You're not as far behind as you might feel.
As for how to move beyond the academic stuff in your training -- I have an obvious answer and a non-obvious (hopefully not too vague) answer. The obvious answer is, learn stuff everywhere -- work, home, wherever you're poking around code. And learn every which way -- writing, reading, listening.
But I must say the way I think you'll learn the most is to look at every piece of software you encounter and wonder, "Is this the easiest way to do this?" In my experience, 90% of the time, the answer is no. Or maybe it's 100% but I'm only smart enough to see it 90% of the time. :) I guess what I'm saying is you'll learn more by attacking what you see and trying to improve it rather than by trying to imitate it. Because most stuff sucks (at least in the environments I've seen; maybe there are exceptions).
Good luck.
My view:
The poster is right in pointing out that there is a segment of the environmental movement, and the far left in general, that is essentially anti-progress. They are afraid of anything that is not "natural." This means they go after pesticides (and sometimes they're right). It means they go after nuclear power (probably wrong) and GM foods (probably wrong). They glorify the pre-technological era.
The GM foods part particularly annoys me since virtually all of the "natural" foods we eat were genetically modified by early humans when we started agriculture. (These folks who idealize our previous "sustainable" existence before the rise of technology would also be disappointed to know that we overhunted many of the world's large animals to extinction before we developed technology.) They favor organic farming, etc. They oppose population growth. Astrology is very popular amongst this group, as is alternative medicine (particularly "natural" cures, like herbal medicine).
The poster is wrong to say that these are the real anti-science people. Fundamentalist Christians and "naturalism" advocates (I am coining this term here; there may be a better one) are both anti-science. Basically this comes down to attitudes toward the unknown and belief in the value of the scientific method. The naturalists fear that there's always a hidden "catch" (looming disaster scenario) to things that are not natural. The creationists ascribe everything that they don't understand (including everyday occurrences, like bad luck) to a hidden omnipotent actor.
I spoke with the guy from the intelligent design trial (the biology professor, Miller) about why this is so and he argued that one of the big problems is that science discourages the popularizers (Carl Sagan etc.) by jealously regarding high-profile scientists as not doing real science.
In any case, we all need to do our jobs helping science along by critically evaluating science we read but also explaining science to the masses who have never seen it in action.I was a staffer for an environmental group (mid-1990s) and was frustrated with the reflexive anti-nuclear instincts, when it seemed to clearly be the solution to the problems.
I left disgusted after a while, at least in part because of the rigid orthodoxy. Another orthodoxy was an opposition to any sort of emissions trading scheme.
But it seems as though the movement as a whole has been coming around. I was doing some reading a couple of years back and it seems like cap-and-trade is now a mainstream position within the movement and there are even some thinkers advocating more nuclear power (see, e.g., The Whole Earth Catalog guy, who also lists others such as Lovelock).
So there may be hope.even though it seems to be what most people want
...</obligatory-slashdot-snark>
Your profile says that you're in the United States.
<obligatory-slashdot-snark>You really need to get out more
Non-snark version:
The truth is, it's not what people want. In 2002 (sorry, I don't have more recent data for the moment), ABC News/Washington Post polled the U.S. and asked whether people thought "providing needed services" or "holding down the size of government" were more important to them, and small government lost 63%-33%. Phrased differently, there does seem to be some support for smaller government -- in 2004, a "smaller government with fewer services" is preferred to a "larger government with many services", but narrowly (50%-46%), and without specifying the services that would be lost -- note that "needed services" slaughtered government-size in 2002, and everyone thinks their services are needed. People often prefer lower taxes and the idea of smaller government, but their pet program must continue -- hence budget deficits, among other consequences.
And the truly depressing part (for you, as a libertarian) is that probably most of the people who answered they desired smaller government were Republicans, and nowadays many Republicans are hardly batting an eye at the gargantuan expansion of government that the current Administration (and Congress) have shepherded through. So I'm not even sure that support for smaller government hasn't declined since 2002 and 2004.
Politicians wouldn't be able to "keep votes" (as you say) using these programs if they weren't popular.
I don't know whether to characterize my response as "no," "yes, but," or "yes, and," ...
Absolutely name-recognition amongst the PHBs of the world is gold for selling to the people who sign the POs. But one way to get that name recognition is to win the mindshare of the geeks who work for them. This is how Google dislodged Yahoo! in search; let's not forget that at one point only Slashdotters had heard of Google, and then suddenly (it seemed instantaneous) everyone used Google.
Has it worked for Firefox? To some extent, but not dramatically, in my view. Whether it will is an open question. But Google and Firefox are both consumer-facing applications (though Firefox is seeing some enterprise uptake).
Would it work for Ubuntu in the enterprise? Maybe. Ultimately PHBs do listen to us. They might say "no," but they listen. And listening (even while saying "no") starts the "name recognition" process. And then once enough profiles of Shuttleworth appear in CIO Magazine and its ilk, don't bet against it.
So you're right for now, but I'm not completely certain you're right for the future -- and I am not "on" anything. :)
(Disclaimer: My experience with certifications has to do only with the Sun Java-related exams. I have no idea whether those certification exams/programs are typical.)
/. who think it's easy (particularly when you're constrained by upper management on how rigorous an interview process you can use, and multiple people have input on a given hire).
1. Even managers who have a clue might enjoy telling their clueless bosses "the candidate I hired has xxx certifications" as a way of establishing the new person's credibility or of justifying a hiring decision (perhaps a decision that violates the clueless uber-boss's prejudices, for example).
2. It goes without saying that there's no substitute for trying to figure out whether someone can actually do a job or not. But we have to use imperfect evidence. And remember, it's not as easy as being able to tell whether someone can code (which is hard enough). It's knowing their levels of dedication, responsibility, ability to work as part of team, etc. Hiring great people is a hard job; I disagree with those on
3. In the absence of perfect knowledge about candidates, we use all sorts of criteria to estimate quality. Given the alternatives (where did the person go to college? what was the person's GPA? where has the person worked? what are the opinions of the person's references (who I probably don't know and thus can't evaluate)? or, worst of all, how many years of experience does the person have?) I think whether the person can study for and pass a certification exam starts to look pretty good; not necessarily better than all of the previous examples, but on a par with them, in my view.
4. I have certifications. I would rather have people judge me on some sort of objective criteria, rather than how well I can talk my way through an interview. I've seen the average interview process. I'm more glib than most, and I know I could probably get myself hired for jobs for which I'm not qualified, given the processes used (whether I'd want to is another matter, but this comment is long enough).
You may want to check out RARS, a simulator framework in which you can write programs to run in a simulated auto race against other programs. I haven't messed with RARS in a while, but at the time I was using it, (IIRC) your driver was a C++ class that received a huge struct as a parameter and returned a small struct indicating the direction you wanted to steer and a number indicating gas/brake magnitude.
But what do I know -- my car could barely make it around the track without running into the wall.
I agree and disagree with some of the conventional wisdom commenters have had -- perhaps because it depends who you are what will work.
...
Many have made very good suggestions about finding a way to leave the house and get your work done. I enthusiastically second these -- go to a coffee shop, or to a park (weather-appropriate), or a bookstore, or a library, or wherever you go. Go to a place for a while -- like others have said, you'll get to know people. When you get tired of it, stop going there and go elsewhere.
Vary your schedule; take a 1-hour break during the day to do something (others have suggested good stuff like this, too). Programmers sometimes can get lots of work done from 6-10 PM; do this once in a while. Get a huge amount done in the morning once in a while. Let the rhythms of your life control your schedule -- work 55 hours one week and 25 the next (one of the great advantages of managing your own schedule is you aren't forced to work those extra 15 hours in the 25-hour week when you're going to get little done anyway, and just tire yourself out trying to force yourself. Don't miss this advantage -- spending the right 160 hours working a month can make you get more done than you would on a fixed schedule).
The only thing I haven't seen mentioned that worked for me was to vary where in my living space I worked. This is completely irrational and I don't know why it works, but it did
Well, we've narrowed the discussion to one point, then: refactoring. It sounds like we probably agree on that, too.
Me (derisively): "You don't touch working code"
You: "Hmm. [That statement s]till does make sense to an extent."
I definitely agree that refactoring is an investment which has a cost and a benefit. If a piece of code isn't going to be touched again, it shouldn't be refactored.
There are two phenomena I was thinking of when I made my complaint:
(a) You have produced demo-quality code which appears to work, and a PM believes that any time spent improving it is wasted. The development staff wants to refactor for two reasons. First, they're going to be doing the next version and recognize that a little up-front effort goes a long way. Second, they know that bugs probably exist because the code is crufty and want to make them easy to fix when they're uncovered. PMs have such overwhelming short-term incentives that they make the wrong decision for the organization and insist development is "done."
(b) The code already doesn't "work," and a developer is asked to go in and fix a bug or make an enhancement. Overwhelming political pressure is applied to make a purely local fix rather than disturbing the overarching structure. ("Now that you've developed the fix, you should be able to do a search to find the 176 places where it is needed, and copy-and-paste it in. Should only take about a day, right?") I think this results from three influences: (1) The short-term incentive problem, (2) the old procedural programmer's fear of touching existing code, (3) whoever wrote the code is still around and that person's reputation is being protected.
I still think that in professional development shops (although I've rarely worked with software companies; mostly banks etc. like you mention) refactoring is done too little, rather than too much. Fear of refactoring has caused enormous problems in my client organizations. And it's funny I would say this -- I'm a consultant, so I'm not even around to see the long-term damage! If the client is already suffering damage while I'm still there, I can only imagine how bad it must get a couple of years out.
I can see why you might have taken my comment the way that you did, and your point is well-taken.
Yes, I certainly have seen the sort of projects you mention; I assume that by calling them "CV-driven" projects you mean that they are driven by the desire of the participants to enhance their own CVs.
I also should have mentioned another sort of project manager (though I've never seen them holding that exact title) which reflects your point. "Our project must be n-tiered and XML-based; it must use components with well-defined interfaces. We should make sure the components are loosely coupled. Make sure that it's web-services-ready."
Presuming you don't want to engage in a flame war about object-oriented programming or any of the "new techniques," I'll just point out that project managers with outdated skills tend to believe that object-oriented programming (for example) increases the complexity of a system, rather than decreasing it -- because they don't understand it. Another example -- they tend to believe that refactoring is bad. With the massive, monolithic, interdependent systems of the past, "you don't touch working code" made sense.
Obviously these stands put them in a minority in the serious development community nowadays, and prevent staff from taking advantage of advances in the field. The improvements in development techniques over the last decade don't apply because of the PM's own slothfulness in keeping his/her knowledge current.
The flaw you point out is real. Trying to make procedural developers write object-oriented code because you read an article in CIO magazine telling you OO was the future is silly, like you say, and leads to the failed projects you cite. But I've seen PMs make OO developers write procedural code because their skills are 1980s-vintage. Bad idea also; a PM shouldn't prevent developers from exceeding the PM's own development skills. Agree?
Most of the clients I've worked with have had project managers of two types:
... the "overcommitting" project managers I've known seem to be doing quite well.
(a) No technical experience,
(b) Outdated technical experience.
The best project manager I've worked with was probably one from category (a). Category (b) project managers tend to be dangerous because they have a superficial understanding of what you're doing and (1) can't understand why it could be hard, or (2) can't understand why you need to use all these new-fangled techniques like object-oriented programming and refactoring. I've only worked with one person who had up-to-date technical experience but he had little power for other reasons, so hard to generalize.
The fact that you recognize that your PMs may be making inappropriate commitments, etc., may mark you as someone who wouldn't fit in well at some organizations. The basic cycle seems to be that the PM gets pigeonholed at a meeting with muckety-mucks and is asked leading questions like "can this be done in a month?" Not knowing, and afraid to tell the important muckety-muck "I don't know, I'll need to get back to you," the commitment gets made. Then they come back to you, intending to force you to get it done. Or they already know it can't get done but intend to show a tremendous amount of effort toward the goal to "prove" to the muckety-muck that it was impossible. ("Everybody worked 70-hour weeks for a month and it still wasn't done on time.")
All of this is not really to criticize PMs -- it takes a brave soul to stand up to that sort of onslaught. The question is, will you be as good at dealing with higher-ups (who do not like to hear the word "no") as it sounds like you will be at dealing with programmers? The first audience is probably more important than the second to your professional success
I had the same problem with Adelphia, and it wasn't because my net block was blocked, it was because Adelphia's servers were set up to refuse mail from SMTP servers whose addresses didn't resolve to the e-mail addresses' domain names.
When I switched my reverse DNS configuration, Adelphia started accepting my mail again, but Sendmail got all confused and started re-writing e-mail headers, replacing everyone's domain name with the domain name of the machine on which Sendmail was running. So I never got it to work completely.
Because no one can understand what they're saying. :)
Under "services," they list "firewalls."
Awesome.
Senator Orrin Hatch (see a statement about Napster) has always seemed to have a clue (and an anti-Microsoft one) about these matters. This seems to be because of geography as well -- he's served in the Senate with Novell located in his state.
I'd say the best hardware would be one of those Java chips running Java OS. Then we could explain to the aliens the benefit of porting the Java virtual machine to their hardware ...
We always had the choice to filter. The Internet gives us the choice not to filter.
In other words, if nowadays I want to hear raw, unfiltered viewpoints, I can. Balkanization? I can look up stuff written by the various sides in the original Balkans and think about the issues of the region myself! Or, I can decide it's all just propaganda, and not look it up. But the choice not to hear some group's ideas was always there, even in the town-crier-style democracy much cited by the nostalgists. The ability to hear those ideas anytime, anywhere is new, and I have a hard time seeing how it's a negative.
(1) Are you willing and able to pay for established professionals? It sounds as though by mentioning "graduates," you are looking to hire entry-level-type folks. Depending how you are funded, this may well make sense -- but if you have the money, I'd suggest getting some folks (at least a minority) with some experience in the field. The habits developed by these folks (if they're good) -- for working on large team-based projects -- are almost impossible to develop in academia (emphasis on almost).
You might be able to attract some of those folks (at a lower price) simply by the science-y aspect. As a scientist, imagine how numbing it must be for folks with minds like yours to be asked to write the same application over and over ("read this out of our database and put it on a screen, or a web page").
(2) I think the way to evaluate candidates is whether, during a one-hour interview, they can pick up some basic understanding of the research that you are doing. This helps you on a few important points:
(a) Do they have any background in the sort of science you are doing, ... does it start coming back to them when you talk to them?
(b) Do they care enough to try to understand what you're doing, or are they looking to be directed every step of the way? (This is an important separator of good programmers from merely adequate ones -- in any problem domain.) Odds are, they had a class in college at least peripherally related to your field
(c) Are they (to put it bluntly) smart enough to understand the application domain?
I used to work in the political milieu and I can tell you that BillyGoatThree is right on there. My lobbying organization would generate blizzards of pre-printed postcards to representatives with absurd stuff like "I believe [the following seven paragraphs of hypertechnical blather about some bill number and its amendments]" and get people to sign them. Big deal. Occasionally, people would take the time to write out the letter and it would be taken -much- more seriously. Much of the mail/e-mail received by a legislator essentially -is- spam -- even "handwritten" letters people (before the days of E-mail) would essentially copy-and-paste from a "sample" letter we gave them. Legislators are not impressed by hundreds of copies of word-for-word plagiarism. :)
However, if letters don't appear to be coordinated by lobby groups, they are paid much more attention -- they show that awareness is getting outside the rabblerousing groups out into the general public.
I testified at a government hearing once about a pending regulation -- I can tell you that there the comments were paid some heed. Still not a heck of a lot, but this time you had to drive to the location, go into the auditorium, and wait an hour for your turn to talk. And the vast majority of people who took the time to do that knew what they were talking about (myself not included :) ).
The other pressure point is the kind of lobby group I worked for. People listened to us because we "represented" our membership. So if you care about an issue, you can bring it to a group's attention and might get it paid some attention, while your mail/e-mail/whatever might get lost in the shuffle.