As long as code is readable, and there are not conflicts in differing methods, trying to make every code code the same ignores the fact the every coder is different.
Nobody is ignoring that. That's why we talk to come up with a common standard. But it is a fact of life that coders move on, and in many contexts a team approach delivers much more value than a bunch of single-coder silos.
Letting every single developer impose their personal stylistic preferences on every bit of code they touch is a waste of time over the long haul. You end up with a) endless rewrites as people move around, or b) a hopeless mishmash of styles, making code harder to read and understand.
The brace and indent style I favor is obviously the one intended by God and used by all His angels. But if the team I'm working with favors another one, that's fine with me. I want to make stuff, not bicker endlessly about cuddled elses.
The IDE does nothing except provide them an editor.
Depends on what you're doing for a living, but this is patently untrue with Java or C#. An IDE with good code browsing tools is much better than a mere text editor. It's like the jump from using more on a bunch of text files to using a web browser on hypertext. And a good refactoring tool makes a world of difference to productivity.
Have you actually done pair programming? Maybe you did it with a dolt, or maybe you did something that I wouldn't call pair programming, like "coding with a jerk" or "having a guy looking over your shoulder while you code". But my experience is pretty different.
When coding with a junior guy, I tend to talk more about what I'm doing, so they're included. And with somebody new to pair programming, I'll explain to them that they should only interrupt for things I won't catch, and that counting to 5 or 10 is a good way to see. It can be a bit of work, but it's a great way to share knowledge, and it's much better than letting some newbie code for hours, leaving me messes to clean up.
Pairing with another expert, though, is fantastic. I learn vastly more, and produce much better stuff when I'm coding with somebody who can work at my level.
As to your feelings of a constant pressure to code, that's all about you. If you need to stop and think, stop and think. Better, stop and discuss, as your pair can be a great help getting past whatever has slowed you down.
And yes, when pairing, take breaks. There's no rule against it!
I've heard of people working in that type on environment, but personally I think that would drive me crazy. I use to have people (project manager) constantly look over my shoulder and it just made me nervous and fidgety.
Pair programming is different. You should be changing who's in control every 5-15 minutes. At first it feels weird, but it pretty quickly gets where it's just two people collaborating, and doesn't feel nervewracking at all.
The same can be said of creationism, but that doesn't mean it isn't totally bullshit.
Yeah, I remember being Christmas-morning-level excited about the Fleischmann-Pons experiments -- 20 goddamn years ago. Maybe they're something there, but 20 years is an awful long time to have, as far as I can tell, gotten nothing more substantial.
I know fuck-all about the field, but one of my physics professor pals was pretty cutting about the field when I asked him about it a few years back. He said, "Some second-rank labs reproduced the results, but the best ones couldn't find anything."
[...] that sounds like something I would tell someone to get out of doing any actual work.
It's actually incredibly productive. As one pal of mine put it, "You get third-draft code in first-draft time." Pairing is really just a special case of "two heads are better than one."
Although I've done a lot of pair programming, right now I'm working solo, and I really miss having a pair. I know there are problems with my code right now, but I won't be able to spot them myself until I come back a month later with a fresh perspective. Having a pair also saves me a lot of time in avoiding ratholes and yak shaving. And a pair is great at finding things to test that I miss because I'm too close to the code I'm writing.
Maybe it's not for everybody, but I love it like candy.
Oops. That should be "unit tests", not "nit tests". I definitely don't recommend checking your fellow programmer for louse eggs. Unless you're both chimpanzees. Then it would be fine.
Work together - Sit near one another, within easy conversational distance.
Integrate frequently - Update and check in every few hours.
Write tests - Good nit and acceptance tests are documentation that a computer can verify. Make the computer do the work of making sure the other guy hasn't broken anything.
Use a continuous integration server - A CI server will wake up on every checkin and run all the tests. That way you discover problems early, when they're easiest to fix.
Work out common standards - Every time you notice a difference in style, have a nice chat about it. Eventually you shouldn't be able to tell who wrote what.
Release early and often - The best way to do something well is to do it often. Even if it's an internal or beta release, the more often you guys ship, the smoother working together will be.
So I immediately switched to VOIP. I have to say that these phone companies suck, and I cannot believe that they can't give you an all-in number.
A few years back I changed my business line to Speakeasy VOIP. It was actually more expensive than dealing with PacBell/SBC/AT&T, but I was glad to pay the difference just to NEVER DEAL WITH THEIR PHONE COMPANY BULLSHIT AGAIN. Not that I'm bitter or anything.
There are dozens of warehouses around the country that have partial or full retail stores within them. The fact that Apple Retail did the same is not a sign of Job's insanity or insight.
Probably not on its own, but it fits a pattern.
Although I think he's an asshole, I do respect his willingness to demand excellence by making himself stand in for the consumer and trying out real products until he likes them. They went through dozens of iPod prototypes. Building a fake store is not unheard of either, but somebody less insistent on quality could have easily flinched at the expense and tried to go from designs. I'm sure many do.
Re:"what Leander thinks are the takeaways..."
on
Inside Steve's Brain
·
· Score: 1
It takes even more to assume that you can explain the success of a man like Steve Jobs...
How much more?
You think maybe being a professional writer who tries to explain things for a living? Being a respected reporter for Wired? Or maybe having written two other books on Apple and spent four years running a blog called "Cult of Mac"?
That'd do it for me.
The takeaways at the end of chapters are standard business-book practice, so that hard-of-reading executives can skim the book and feel like they know something. You can likely blame the publisher for their inclusion.
On one hand you have Jobs who is raking millions, and on the other hand you have Woznaik who is standing in a line to get iPhone.
Wozniak stands in line because he wants to stand in line.
Unlike Jobs, he isn't into the me-big-monkey game of primate dominance, where your sense of self-worth is tied to the number of people you can push around. I've met Wozniak at couple of conferences, and he's a nice guy: friendly, engaging, and charmingly geeky about his enthusiasms.
Wozniak could certainly afford all manner of personal assistants and minions to go buy stuff for him. But he doesn't. Instead, he chose to stand in line with everybody else. And for that, I give him mad respect.
The reason everyone focuses on quarterly earnings is because the government requires quarterly reporting.
That's ridiculous. Any sane investor requires regular updates on the money they've invested. Even privately held companies report regularly to their owners. Any sensible company will already be producing at least quarterly numbers.
Then why do colleges produce innovations? How do colleges get teaching done (my university certainly manages)? Taking longer to do a task isn't necessarily a sign of laziness - it can be a sign of thoroughness.
Having worked for a university, I'd say it's a little from column A, and a little from column B. Innovation definitely does take plenty of time, but so does fucking around. University standards are legitimately looser; faculty need room to explore, and students need room to learn. But those looser standards definitely have a cost.
Successful marketplaces thrive on certain sorts of regulation. The US stock exchanges are very carefully regulated by the SEC and other agencies, and that regulation is key to investor confidence. Another example is US food markets; strong health and safety regulation create trust that vastly increases market volume, which makes markets more effective.
Antitrust regulation is also immensely valuable. A market is only effective when you have a bunch of people competing; if somebody manages to corner a market, the lack of choice destroys the market.
The existence of regulation like that actively helps free markets. Other sorts, like the kinds needed to reduce negative externalities, to provide infrastructure, or to manage shared resources do increase barriers to entry, but despite that can be economically net positive.
Despite all of that useful regulation, market forces still can work, and work well. Your free-market fundamentalism is a religious faith, unsupported by fact.
Blind faith in the market producing magical efficiency gains is contrary to everything I have seen during my professional life, both in the public and private sector. From my perspective, I have never seen one bit of evidence to show there is any truth to it
I agree that free-market fundamentalists are annoying idiots. However, after more than a decade of technology consulting, my view is that governments are modestly less effective than large companies, and both are way less effective than small companies.
What a well-run free market gets you is competition. When I see one of my competitors doing more or charging less, it makes me sharpen my game. Small companies have the same experience. The people in sufficiently large companies are too isolated from that feedback, both because of insufficient competition and too many layers between people the real world and the people making decisions. This lets politicking play a much bigger role.
Governments have the same downsides as a large company, and two more besides. First, there often is no competition. Second, there's a much bigger disincentive to take risks. The best people I worked with during my work with government were heedless of that, either because they were young enough not to have learned to play the game, or close enough to retirement that they could safely indulge their desire to make the world better.
Of course, most of my work has been in the US. As Bill Murray said, we've been kicked out of every nation on earth. Looking at the relative rates of things like Attention Deficit Disorder, we may by and large be constitutionally incapable of spending 40 years doing the same job well without competition to push us forward. Lord knows that's true for me.
You probably shouldn't take technology advice from a person who uses BBCode on Slashdot.
Wow, you aren't kidding. I went and looked at the "Owner-Free Filesystem" project he mentioned, and it's idiocy. It's a theory for getting around copyright law that any IP lawyer could expose as ridiculously wrong in under 10 seconds.
Why do my fellow geeks so often think that brilliance in coding translates into brilliance in other people's domains? If a lawyer writing his first program claimed that he had solved the halting problem in Excel macros, we would laugh at him. But when it's reversed, it's somehow much harder to see.
So is the problem our farm subsidies, or the failure of the third world to enact their own tariffs and subsidies to protect their own agricultural base?
Tariffs raise the price of food. Higher food prices mean more people go hungry, and less money to spend on fixing other problems. Trade barriers generally hurt everybody, even the nations that create them.
There are countries with plenty of farms, but starving populations, because the farmers are growing fancy stuff for us rather than staples for their neighbors.
People would never argue about space flight without knowing something about the math behind gravitation or friction, but you are talking about economics with a similar level of education in economics. Spend some time with the principle of comparative advantage, which is as central to economics as gravity is to space travel. When you've done the math enough so that you can numerically test your theories about trade, you'll find they don't hold up so well.
Please explain what TED is supposed to do about US import/export policy. Please explain why you think there isn't room for evolutionary technological advances that can improve the lives of billions of people until we get our own governmental policies 'fixed.'
TED gets the kind of people who can afford to pay $6k for a conference, and who on top of that have enough pull to get on the list. The total net worth of the attendees is in the tens of billions, possibly the hundreds of billions. These are people who get listened to.
You talk as if farm policies will get fixed by themselves. That's ridiculous; they have gotten worse lately, not better. The person you reply to is right; no bit of technological gimcrackery could improve the lives of the poor as much as just buying what they're selling at a fair price. Instead we spend tens of billions every year distorting the marketplace, keeping them in poverty. Then we give a fraction of that back as aid and pat ourselves on the back.
Diverting the attention of those who could make a difference may be fun, and it may be profitable, but nobody should think it particularly effective.
or a 10% increase in tax there is around a 4% reduction in smoking.
Well, that's not quite correct; it would be based on the whole cigarette price, not just the amount of tax. Still, those numbers seem to be in line with the ones I linked to. Note that governments have been doing 100-600% increases in cigarette taxes, so the declines in smoking seem to be in line with the substantial cost increases. Thus, the tactic of taxes is, as I said, effective.
And that's with something that is physically addictive, notoriously hard to quit. Carbon taxes should be much more effective, because nobody actually cares about emitting CO2 for its own sake; it's always a byproduct of what people actually want to do.
If you watch what the big players are doing - they appear to be positioning exactly that way (dispersed data centres)
They are doing dispersed data centers, but often not around SQL servers. See Google's BigTable and Amazon's Dynamo as examples of this. An SQL database is inherently strongly centralized, no matter how much magic you do with your network and hardware. BigTable and Dynamo have a different philosophy, ones that puts a little more explicit burden on programmers, but scales much better because their philosophy matches the realities of distributed computation.
As long as code is readable, and there are not conflicts in differing methods, trying to make every code code the same ignores the fact the every coder is different.
Nobody is ignoring that. That's why we talk to come up with a common standard. But it is a fact of life that coders move on, and in many contexts a team approach delivers much more value than a bunch of single-coder silos.
Letting every single developer impose their personal stylistic preferences on every bit of code they touch is a waste of time over the long haul. You end up with a) endless rewrites as people move around, or b) a hopeless mishmash of styles, making code harder to read and understand.
The brace and indent style I favor is obviously the one intended by God and used by all His angels. But if the team I'm working with favors another one, that's fine with me. I want to make stuff, not bicker endlessly about cuddled elses.
The IDE does nothing except provide them an editor.
Depends on what you're doing for a living, but this is patently untrue with Java or C#. An IDE with good code browsing tools is much better than a mere text editor. It's like the jump from using more on a bunch of text files to using a web browser on hypertext. And a good refactoring tool makes a world of difference to productivity.
Have you actually done pair programming? Maybe you did it with a dolt, or maybe you did something that I wouldn't call pair programming, like "coding with a jerk" or "having a guy looking over your shoulder while you code". But my experience is pretty different.
When coding with a junior guy, I tend to talk more about what I'm doing, so they're included. And with somebody new to pair programming, I'll explain to them that they should only interrupt for things I won't catch, and that counting to 5 or 10 is a good way to see. It can be a bit of work, but it's a great way to share knowledge, and it's much better than letting some newbie code for hours, leaving me messes to clean up.
Pairing with another expert, though, is fantastic. I learn vastly more, and produce much better stuff when I'm coding with somebody who can work at my level.
As to your feelings of a constant pressure to code, that's all about you. If you need to stop and think, stop and think. Better, stop and discuss, as your pair can be a great help getting past whatever has slowed you down.
And yes, when pairing, take breaks. There's no rule against it!
I've heard of people working in that type on environment, but personally I think that would drive me crazy. I use to have people (project manager) constantly look over my shoulder and it just made me nervous and fidgety.
Pair programming is different. You should be changing who's in control every 5-15 minutes. At first it feels weird, but it pretty quickly gets where it's just two people collaborating, and doesn't feel nervewracking at all.
The same can be said of creationism, but that doesn't mean it isn't totally bullshit.
Yeah, I remember being Christmas-morning-level excited about the Fleischmann-Pons experiments -- 20 goddamn years ago. Maybe they're something there, but 20 years is an awful long time to have, as far as I can tell, gotten nothing more substantial.
I know fuck-all about the field, but one of my physics professor pals was pretty cutting about the field when I asked him about it a few years back. He said, "Some second-rank labs reproduced the results, but the best ones couldn't find anything."
[...] that sounds like something I would tell someone to get out of doing any actual work.
It's actually incredibly productive. As one pal of mine put it, "You get third-draft code in first-draft time." Pairing is really just a special case of "two heads are better than one."
Although I've done a lot of pair programming, right now I'm working solo, and I really miss having a pair. I know there are problems with my code right now, but I won't be able to spot them myself until I come back a month later with a fresh perspective. Having a pair also saves me a lot of time in avoiding ratholes and yak shaving. And a pair is great at finding things to test that I miss because I'm too close to the code I'm writing.
Maybe it's not for everybody, but I love it like candy.
Oops. That should be "unit tests", not "nit tests". I definitely don't recommend checking your fellow programmer for louse eggs. Unless you're both chimpanzees. Then it would be fine.
Here's what I'd suggest:
I hope that helps!
It's a shame we can't mod the occasional post higher than 5, as this one is at least a 9.
So I immediately switched to VOIP. I have to say that these phone companies suck, and I cannot believe that they can't give you an all-in number.
A few years back I changed my business line to Speakeasy VOIP. It was actually more expensive than dealing with PacBell/SBC/AT&T, but I was glad to pay the difference just to NEVER DEAL WITH THEIR PHONE COMPANY BULLSHIT AGAIN. Not that I'm bitter or anything.
Great job title.
And my postman's a customer-focussed peripatetic supply-chain-enablement engineer. He wins "postie of the month" awards quite frequently.
Well, at least you've demonstrated an ability to be a dick. Perhaps you can bring up your research skills next?
About 90 seconds with Google leads me to the details of a packaging Master's program, a history of that school going back 50 years, a long Wikipedia page on the topic and job listings under that title.
Remember: even if your main goal is to be an asshole, knowing even a tiny bit about the topic can help. You want to be an ass, not just look like one.
There are dozens of warehouses around the country that have partial or full retail stores within them. The fact that Apple Retail did the same is not a sign of Job's insanity or insight.
Probably not on its own, but it fits a pattern.
Although I think he's an asshole, I do respect his willingness to demand excellence by making himself stand in for the consumer and trying out real products until he likes them. They went through dozens of iPod prototypes. Building a fake store is not unheard of either, but somebody less insistent on quality could have easily flinched at the expense and tried to go from designs. I'm sure many do.
It takes even more to assume that you can explain the success of a man like Steve Jobs...
How much more?
You think maybe being a professional writer who tries to explain things for a living? Being a respected reporter for Wired? Or maybe having written two other books on Apple and spent four years running a blog called "Cult of Mac"?
That'd do it for me.
The takeaways at the end of chapters are standard business-book practice, so that hard-of-reading executives can skim the book and feel like they know something. You can likely blame the publisher for their inclusion.
Even the throw-away packaging somehow looks like someone really thought it through as to how it fits into the whole "product experience".
Yeah, I know a packaging engineer, and she loves Apple's stuff. Apple apparently wins packaging awards regularly.
On one hand you have Jobs who is raking millions, and on the other hand you have Woznaik who is standing in a line to get iPhone.
Wozniak stands in line because he wants to stand in line.
Unlike Jobs, he isn't into the me-big-monkey game of primate dominance, where your sense of self-worth is tied to the number of people you can push around. I've met Wozniak at couple of conferences, and he's a nice guy: friendly, engaging, and charmingly geeky about his enthusiasms.
Wozniak could certainly afford all manner of personal assistants and minions to go buy stuff for him. But he doesn't. Instead, he chose to stand in line with everybody else. And for that, I give him mad respect.
The reason everyone focuses on quarterly earnings is because the government requires quarterly reporting.
That's ridiculous. Any sane investor requires regular updates on the money they've invested. Even privately held companies report regularly to their owners. Any sensible company will already be producing at least quarterly numbers.
Then why do colleges produce innovations? How do colleges get teaching done (my university certainly manages)? Taking longer to do a task isn't necessarily a sign of laziness - it can be a sign of thoroughness.
Having worked for a university, I'd say it's a little from column A, and a little from column B. Innovation definitely does take plenty of time, but so does fucking around. University standards are legitimately looser; faculty need room to explore, and students need room to learn. But those looser standards definitely have a cost.
Market forces only work if 100% unregulated.
That's just idiocy.
Successful marketplaces thrive on certain sorts of regulation. The US stock exchanges are very carefully regulated by the SEC and other agencies, and that regulation is key to investor confidence. Another example is US food markets; strong health and safety regulation create trust that vastly increases market volume, which makes markets more effective.
Antitrust regulation is also immensely valuable. A market is only effective when you have a bunch of people competing; if somebody manages to corner a market, the lack of choice destroys the market.
The existence of regulation like that actively helps free markets. Other sorts, like the kinds needed to reduce negative externalities, to provide infrastructure, or to manage shared resources do increase barriers to entry, but despite that can be economically net positive.
Despite all of that useful regulation, market forces still can work, and work well. Your free-market fundamentalism is a religious faith, unsupported by fact.
Blind faith in the market producing magical efficiency gains is contrary to everything I have seen during my professional life, both in the public and private sector. From my perspective, I have never seen one bit of evidence to show there is any truth to it
I agree that free-market fundamentalists are annoying idiots. However, after more than a decade of technology consulting, my view is that governments are modestly less effective than large companies, and both are way less effective than small companies.
What a well-run free market gets you is competition. When I see one of my competitors doing more or charging less, it makes me sharpen my game. Small companies have the same experience. The people in sufficiently large companies are too isolated from that feedback, both because of insufficient competition and too many layers between people the real world and the people making decisions. This lets politicking play a much bigger role.
Governments have the same downsides as a large company, and two more besides. First, there often is no competition. Second, there's a much bigger disincentive to take risks. The best people I worked with during my work with government were heedless of that, either because they were young enough not to have learned to play the game, or close enough to retirement that they could safely indulge their desire to make the world better.
Of course, most of my work has been in the US. As Bill Murray said, we've been kicked out of every nation on earth. Looking at the relative rates of things like Attention Deficit Disorder, we may by and large be constitutionally incapable of spending 40 years doing the same job well without competition to push us forward. Lord knows that's true for me.
You probably shouldn't take technology advice from a person who uses BBCode on Slashdot.
Wow, you aren't kidding. I went and looked at the "Owner-Free Filesystem" project he mentioned, and it's idiocy. It's a theory for getting around copyright law that any IP lawyer could expose as ridiculously wrong in under 10 seconds.
Why do my fellow geeks so often think that brilliance in coding translates into brilliance in other people's domains? If a lawyer writing his first program claimed that he had solved the halting problem in Excel macros, we would laugh at him. But when it's reversed, it's somehow much harder to see.
it should follow some established protocols for finding and evaluating work.
You want an established protocol? How about the one called "ask smart people"? That's the one I use when I want to find interesting things.
Given the discussion here, he may have misapplied the protocol, but you can hardly get mad at him for giving you the benefit of the doubt.
So is the problem our farm subsidies, or the failure of the third world to enact their own tariffs and subsidies to protect their own agricultural base?
Tariffs raise the price of food. Higher food prices mean more people go hungry, and less money to spend on fixing other problems. Trade barriers generally hurt everybody, even the nations that create them.
There are countries with plenty of farms, but starving populations, because the farmers are growing fancy stuff for us rather than staples for their neighbors.
People would never argue about space flight without knowing something about the math behind gravitation or friction, but you are talking about economics with a similar level of education in economics. Spend some time with the principle of comparative advantage, which is as central to economics as gravity is to space travel. When you've done the math enough so that you can numerically test your theories about trade, you'll find they don't hold up so well.
Please explain what TED is supposed to do about US import/export policy. Please explain why you think there isn't room for evolutionary technological advances that can improve the lives of billions of people until we get our own governmental policies 'fixed.'
TED gets the kind of people who can afford to pay $6k for a conference, and who on top of that have enough pull to get on the list. The total net worth of the attendees is in the tens of billions, possibly the hundreds of billions. These are people who get listened to.
You talk as if farm policies will get fixed by themselves. That's ridiculous; they have gotten worse lately, not better. The person you reply to is right; no bit of technological gimcrackery could improve the lives of the poor as much as just buying what they're selling at a fair price. Instead we spend tens of billions every year distorting the marketplace, keeping them in poverty. Then we give a fraction of that back as aid and pat ourselves on the back.
Diverting the attention of those who could make a difference may be fun, and it may be profitable, but nobody should think it particularly effective.
or a 10% increase in tax there is around a 4% reduction in smoking.
Well, that's not quite correct; it would be based on the whole cigarette price, not just the amount of tax. Still, those numbers seem to be in line with the ones I linked to. Note that governments have been doing 100-600% increases in cigarette taxes, so the declines in smoking seem to be in line with the substantial cost increases. Thus, the tactic of taxes is, as I said, effective.
And that's with something that is physically addictive, notoriously hard to quit. Carbon taxes should be much more effective, because nobody actually cares about emitting CO2 for its own sake; it's always a byproduct of what people actually want to do.
If you watch what the big players are doing - they appear to be positioning exactly that way (dispersed data centres)
They are doing dispersed data centers, but often not around SQL servers. See Google's BigTable and Amazon's Dynamo as examples of this. An SQL database is inherently strongly centralized, no matter how much magic you do with your network and hardware. BigTable and Dynamo have a different philosophy, ones that puts a little more explicit burden on programmers, but scales much better because their philosophy matches the realities of distributed computation.