It doesn't do anything different and yet you are changing it
June 24, 2014 8:09 PM   Subscribe

How to approach refactoring by Venkat Subramaniam (YouTube lecture)

"It's very simple: you cannot be agile if your code sucks. It's as simple as that."

"Who here can write wonderful code? Raise your hand if your can. Two people? You're lying. I'll tell you: I write code that sucks. You don't want to look at the code I wrote. You'll say, 'Really? This is your code?' But you know what I'm really good at? I'm extremely good at finding fault with your code. So I realized: why should I waste my time writing good code, when I can write some crappy code real quick, I can give it to him, and while he tells me how my code sucks, I can look at his code and say how his code sucks, end of the day we all have good code."

"I became a programmer because of the science in programming. I remained a programmer because of the art in programming."
posted by flabdablet (16 comments total) 26 users marked this as a favorite
 
55 minutes, btw.
posted by flabdablet at 8:10 PM on June 24, 2014


He should have given that talk to the OpenSSL guys back in... '98?
posted by Monday, stony Monday at 8:27 PM on June 24, 2014


I well know this feeling! I can turn a pig's ear into a really lovely leather purse if someone else gives me an ear to work with, but if I have to start from scratch it's a lot harder.
posted by wenestvedt at 8:28 PM on June 24, 2014 [2 favorites]


Venkat is an awesome presenter. I have been lucky enough to see him a few times. He's one of those people, r0ml is another, who are always entertaining at a conference. Even if you have no background in what they are presenting on, you'll stay awake and learn something.
posted by twjordan at 8:36 PM on June 24, 2014 [2 favorites]


My code is f*cking BEAUTIFUL.


(runs off to encrypt git repository)

posted by Tell Me No Lies at 8:37 PM on June 24, 2014 [7 favorites]


Hard to tell if this is satire or not, but My God I'm so so sick of these Snake Oil salesman trying to turn Computer Science into Computer Religion. Like any Snake Oil it's a combination of fancy sounding near-nonsense ("being agile") and patently obvious common sense ("It's useful to have others review your work.")

For those who don't know what "being agile" means: It means nothing. Well, it's a debatably useful methodology for organizing projects, but a programmer saying he "is agile" has almost no meaning, and no one who is the least bit serious about Computer Science would say it.

I have had the extreme displeasure of working with and for people who worship at the altar of people like this, and it is profoundly disheartening to see a team of programmers reduced to a competition for who can win favor by regurgitating the most buzzwords.
posted by drjimmy11 at 8:42 PM on June 24, 2014 [7 favorites]


I don't think it can be drilled hard enough into people (including myself) that no one owns code, and no one's self-worth should be tied to it. Things go so much better when you let go of that.
posted by ignignokt at 9:01 PM on June 24, 2014 [4 favorites]


no one's self-worth should be tied to it

heh, good luck with that
posted by sineater at 9:12 PM on June 24, 2014


For those who don't know what "being agile" means: It means nothing.

Not true. The Agile Manifesto spells out the principles of agile development, which were a response to the growing bureaucratization of software in which companies followed a waterfall model: write a functional spec, have meetings to review it, write a design spec, have meetings to review it, write a test plan, have meetings to review it, create a schedule spanning months or years, have developers commit to it, miss your deadlines, work nights and weekends to finish (the "death march"), finally show it to customers and discover that it's not really what they wanted in the first place, which was often something much simpler and easier to implement, if you had just asked.
posted by LURK at 10:04 PM on June 24, 2014 [16 favorites]


I have had the extreme displeasure of working with and for people who worship at the altar of people like this, and it is profoundly disheartening to see a team of programmers reduced to a competition for who can win favor by regurgitating the most buzzwords.

That's really not my experience of working with Agile delivery teams at all. In my experience it's the most sane way to deliver working software that I've ever come across. I certainly haven't ever had a team of people spouting buzzwords, because you don't actually need buzzwords. IMO Agile at its core is a way to encourage honest and transparent communication between developers and end users, with the result of that being working code, on time, on budget and that achieves what the people who are paying for it want. That's not buzzwords, that's a great result.
posted by awfurby at 10:46 PM on June 24, 2014 [3 favorites]


you cannot be agile if your code sucks

There is plenty of room in agile for sucky code. Trust me.
posted by blue_beetle at 10:46 PM on June 24, 2014 [4 favorites]


I have to say that a really well run agile program is much more fun than the traditional model.

Still I would never describe *myself* as agile. "Familiar with Agile development process" maybe, but the adjective is highly suspect when applied to an individual.
posted by Tell Me No Lies at 11:15 PM on June 24, 2014


This guy is good. I was debating whether I could stand the overmodulated audio for 55 minutes, but within the first 30 seconds, he noticed the overmodulation and moved the mic a foot further away from his mouth.

Here's a link to his slides. If anyone finds a transcript, I'd be interested in reading it.

Here in Silicon Valley, I've heard people use "Agile" a couple of different ways. One is capital-A Agile, as in the Agile Manifesto LURK points out.

A second refers to a more general iterative development methodology: build, try out, repeat; relatively quickly. Or maybe managing any process with feedback and change.

The third, mostly used by clueless CEOs and other non-technical managers, means "change shit around quickly and frequently, on my whim," and the results of that are kind of the opposite of Agile, for reasons he talks about.

Agile development takes care to clean up and minimize the code in your codebase, making change relatively easy. If you quickly make every change your capricious management asks for without taking time to write tests and refactor, pretty soon every change breaks something, development bogs down, and you CAN'T change stuff around quickly.
posted by Hello Dad, I'm in Jail at 11:21 PM on June 24, 2014 [1 favorite]


This bit at 9m43s describes my experience as a software engineer with uncanny accuracy:
I worked for a company, we made simulators. These were million-dollar simulators we were selling. And when we looked at the simulator, one of the most important things in the simulator, at the very core of it is a timing engine. Because this is the heartbeat, the pulse of this. And the guys who wrote the code were no longer with the company. And it came down to we have to maintain it, so I took it on myself and said "I'm gonna understand this code".

I started reading it, and about three weeks later I was like yep, I understood it. Well, okay, what do we do now that you understand it?

I said I'll write a document about it. So I described how it works.

About six months went by, a programmer who's much better than me came on board. He knows the domain very well, knows everything more. He read my description, read the code, and he said "You are totally wrong! That's not the way the code works."

I said "Wow. So how does it work?"

He said, "I don't know."
posted by lantius at 12:19 AM on June 25, 2014 [7 favorites]


Yeah, Big A Agile development is a thing. Much like communism, which also had a manifesto, it's never implemented as it's supposed to be, and most attempts are as regimented and bureaucratized as the old Waterfall model at this point - yet another torture rack with interesting implements managers can use to make worklife miserable, right next to the iron maiden, thumb screws and Six Sigma.

It's also slang for quick iterative development - or what we once knew as "hacking." Bash out a wild and wooly app over the weekend while soaked in gin and Red Bull, and then attempt to debug it during the three day hangover. Spend two days trying to figure out if it does what you need it to do, and then re-implement in a more interesting language next weekend with Goldschlager and Mountain Dew. Agile!

The two are only tangentially related.
posted by Slap*Happy at 5:22 AM on June 25, 2014 [2 favorites]


Plan to throw one away; you will, anyhow.
--Fred Brooks, The Mythical Man-Month (1975)
posted by Obscure Reference at 6:08 AM on June 25, 2014 [2 favorites]


« Older Rachel and Miles X-Plain the X-Men   |   Pants just don't 'get' us. Newer »


This thread has been archived and is closed to new comments