Hacker News new | ask | show | jobs
by UK-AL 4605 days ago
Sounds like a Daily WTF, but it's also very common.

Its seems most companies don't realise the easiest way to move fast, is a extensible, easy to change/understand code base. And not going through spaghetti code with a fine tooth comb. Odd they recommended research, they only care about one off prototypes.

The problem is future employers assume your the problem.

Btw, Proper scrum/agile encourages people to refactor and keep technical debt down.

3 comments

Luckily this engagement was so short, and followed after a period of independent consulting, that I was able to be only slightly dishonest and call it a short-term consulting gig.

Thing that pissed me off the most was that I was proud of this code. It was elegant asynchronous java.nio-based stuff that used something like 1/100th the RAM and brought the product's response time down from a several hours "we'll get back to you" to less than a minute for small customer sites. It could also run the entire product on one EC2 compute node instead of like a dozen. I also commented it thoroughly and wrote a design document to hand to other developers describing exactly how its central queue based async architecture worked. Every method had a complete JavaDoc comment including the method's "contract," etc.

It's actually some of the cleaner code I've written. Not the thing I'm most proud of, but probably on the top ten.

Didn't have full unit tests yet, but could have done that in a day or so easily.

The second thing that pissed me off was this: I have a strong suspicion based on circumstantial evidence that the fact that my college degree is from a po-dunk Midwestern school had something to do with it. I have a strong suspicion that what I did would have been brilliant if I'd gone to a top-ten university. The founder apparently had such a hard-on for top-ten talent that he wrote about making sure candidates were from "the right schools" repeatedly on his blog, and I got the sense from the get-go that he was skeptical of my hire.

Whatever. My career is looking good and I can probably code the guy under the table so :P

> The founder apparently had such a hard-on for top-ten talent that he wrote about making sure candidates were from "the right schools" repeatedly on his blog, and I got the sense from the get-go that he was skeptical of my hire.

Fuck these people. I have a fancy degree and I work with better programmers who never even went to college.

I work for a client that is very scrumy and I did a huge rewrite/refactor similar to you one week, although probably smaller considering I also delivered the other tasks expected for the sprint. Nobody even cared that the rewrite made the product 10x faster. Nobody cared! But they were ecstatic about other lame changes that were assigned.

I think it's because management didn't ask for it to run faster, but they did ask for the other things.

The next week I got asked to find out what my changes broke because the app is behaving so much quicker. I had to remind them that I rewrote the slow part and there's nothing wrong. Still, nobody was excited... except me, because now it was a lot easier to develop with because it was faster and easier to debug.

> Btw, Proper scrum/agile encourages people to refactor and keep technical debt down.

How? At the place I worked that followed agile by the book the backlog prioritization was done by product owner, who prioritized by the value to the business. Since it was a customer- (and hence sales-) driven business, any trivial change that was visible to the customers ("change subheading to Verdana") was prioritized higher than any refactoring.

Two-week sprints also meant you couldn't really commit to anything that would take two weeks + 1 day.

We allocate so many sprint storypoints for keeping technical debt down. That's a fixed amount, immune from interference. The value justification is thst it allows you implement features faster long term rather getting clunkly a codebase. So it does provide customer value.

For long tasks you use a thing called epics.

"Btw, Proper scrum/agile encourages people to refactor and keep technical debt down."

http://rationalwiki.org/wiki/No_True_Scotsman