News for hackers. Stuff that matters.
Re:“It’s done, there is no way back. We tried, we failed” by rkangel on Wednesday August 12, 2015 @11:09AM (#10048108)
Issues with estimating, particularly something like this, mostly comes down to meta-ignorance: you don't know what you don't know.

Given a particular problem of a similar sort to something he's worked on, an experienced engineer will be able to list 10 different issues that might crop up.

An inexperienced engineer won't know of those potential problems and will just see the most optimistic path possible.

When you're moving massively outside your familiar zone, many unexpected problems will crop up. Best solution is a phased approach. Pick the bits you judge as most risky (you should hopefully have some idea) and implement prototypes in those areas, in the hope that most of the scaries will crop up. You've then got a better idea as you move on.

I've written this in the context of doing engineering, but it's equally true in all fields - like trying to sell a product into a new an unfamiliar market.

Re:“It’s done, there is no way back. We tried, we failed” by ChuckMcM on Wednesday August 12, 2015 @11:20AM (#10048182)
I like that term 'meta ignorance'. It is important to realize that ignorance isn't "bad" it can be fixed by learning, but its good to know that you have it so you can start fixing it.

The other aspect of this that I see, even in seasoned engineers, is the 'presumption of simplicity'. Some things look really simple, but inside they are actually quite complicated. A smart phone is just a screen, a computer, a battery and a radio right? Too many times people see something, think "that doesn't look too hard I bet I could do that in a weekend"[1] but don't actually follow through on that thought and spend a weekend building what ever it was that was so easy. Sometimes the more experience you have the more dangerous this is. I can recall times in my own life we're I've grossly underestimated the difficulty of stuff, its lead me to be a lot more conscious about things I know about and things I think I know something about, especially when predicting schedules and work effort.

[1] A very common theme on acquihire stories here.

Re:“It’s done, there is no way back. We tried, we failed” by jeremiep on Wednesday August 12, 2015 @12:32PM (#10048763)
I think you mix the meanings of simple and easy here. Simplicity is an absolute metric and describes the number of dependencies a thing has, while ease is a relative metric describing your understanding of said thing.

For example, a singleton is easy to learn and easy to use, but since every function using it adds a hidden dependency it quickly grows in complexity to the point its impossible to reason about it without forgetting something.

On the other hand, a Promise is simple as it depends on nothing but a producer and a consumer, no matter how much you compose them. Yet I've seen many experienced developers struggle to learn how to use them as they're not easy to understand at first.

This is somewhat related to meta ignorance. From my own experience I've seen a tendency in novice programmers to stick with things which are both easy to learn and use. Their projects go well initially but they grow less and less productive over time as complexity creeps in from the composition of all these easy to use things.

I've always said experience in our industry is knowing what not to use in order to stay productive in the long run.

Here's a link to Rich Hickey explaining it in depth: http://www.infoq.com/presentations/Simple-Made-Easy

Re:“It’s done, there is no way back. We tried, we failed” by vezzy-fnord on Wednesday August 12, 2015 @12:37PM (#10048802)
Speaking of meta, I absolutely loathe how the basic distinction between simplicity and ease of use has since become a meme so persistently associated with Rich Hickey. There is nothing I can really do about it, but it nonetheless annoys me to no end.
Re:“It’s done, there is no way back. We tried, we failed” by jeremiep on Wednesday August 12, 2015 @12:48PM (#10048877)
I myself learned it from Rich in the very talk I linked to a few years ago and I'm the first to admit I didn't make that distinction beforehand. I've met more developers unaware of the distinction than otherwise, which is why I'm curious as to why you think it has become a meme?

Also note that english isn't my first language (I'm french Canadian) and even here in french the distinction is seldom made.

Re:“It’s done, there is no way back. We tried, we failed” by vezzy-fnord on Wednesday August 12, 2015 @01:05PM (#10049013)
In colloquial English, no.

The distinction between two main types of simplicity, those of parsimony and elegance, has been a long-standing philosophical topic [1].

In engineering, the so-called KISS principle (first coined as such in the early 20th century) has always had the implication of minimalism and implementation simplicity, in contrast to mere ease of use.

Fred Brooks wrote a famous paper in 1986 [2] perfectly describing the differences between accidental and essential complexity, and of the semantics of complexity management in software projects.

Hickey has said absolutely nothing spectacular, but his name comes up every time from the typing fingers of the historically illiterate whenever simplicity and ease of use are brought up.

[1] http://plato.stanford.edu/entries/simplicity/

[2] http://www.cs.nott.ac.uk/~cah/G51ISS/Documents/NoSilverBulle...

Re:“It’s done, there is no way back. We tried, we failed” by dasil003 on Wednesday August 12, 2015 @05:50PM (#10050891)
"historically illiterate" are pretty strong words. Actually everyone is historically illiterate by these standards because the ideas that any one person is familiar with is a vanishingly small percentage of all the ideas the human race has ever had. Furthermore, the origins of ideas are impossible to trace with any great precision. Is the most famous person the person with the best ideas? Was the person with access to the printing press the person with the best ideas? Frankly it strikes me as a form of intellectual hipsterism to be bothered so much by this.

Rich Hickey gained fame for this because he stated an idea very clearly and compellingly, this is non-trivial and should not be so flippantly dismissed as just recyling old ideas—all your ideas are recycled too.

https://xkcd.com/1053/

Re:“It’s done, there is no way back. We tried, we failed” by jdc on Wednesday August 12, 2015 @06:19PM (#10051111)
Alan Kay has similarly criticized the computer software industry and its "pop culture."

https://queue.acm.org/detail.cfm?id=1039523

Re:“It’s done, there is no way back. We tried, we failed” by kinleyd on Thursday August 13, 2015 @07:32AM (#10053401)
"Rich Hickey gained fame for this because he stated an idea very clearly and compellingly, this is non-trivial and should not be so flippantly dismissed as just recyling old ideas."

+100 for this.

Re:“It’s done, there is no way back. We tried, we failed” by stdbrouw on Wednesday August 12, 2015 @03:05PM (#10049910)
I dunno, people use the same kind of argument to say that nobody's really done anything new in philosophy since Kant or even Aristotle. The KISS principle is not the same as a distinction between simplicity and ease. Accidental vs. essential complexity is orthogonal to simplicity vs. ease. And parsimony and elegance are both about simplicity rather than ease. Some people can be a little bit too historically literate for their own good.
Re:“It’s done, there is no way back. We tried, we failed” by jeremiep on Wednesday August 12, 2015 @01:29PM (#10049228)
Thanks for the precision, definitely puts it all into perspective!

I knew about KISS, but almost every time I hear someone mention it they think about ease not simplicity. I will also definitely check out Brooks' paper.

While I understand your position, I believe a lot of this has been lost to the new generations of engineers and what Rich did is remind them of it.

Re:“It’s done, there is no way back. We tried, we failed” by forgetsusername on Wednesday August 12, 2015 @11:38AM (#10048298)
>It is important to realize that ignorance isn't "bad" it can be fixed by learning

In the parlance of Mr. Rumsfeld, you can learn from the known unknowns, but often you don't even discover the unknown unknowns (the "meta-ignorance") until it's too late.

Re:“It’s done, there is no way back. We tried, we failed” by ChuckMcM on Wednesday August 12, 2015 @11:53AM (#10048409)
Except that Rumsfeld had a different problem, he had people who didn't want him to know what he didn't know, because it was a tactical advantage for them.

This, like most engineering tasks, is more straight forward. You have to know what its going to take to build each piece and assemble them into the final product. So if you are making a AAA indie game, it helps if you can talk with the project manager at a company that made AAA games and go through their list of deliverables, and then think about how you're going to deliver the same thing. Sometimes you'll be tempted to say "we won't need to do that" but like Chesterton's fence, you need to understand why they did that so that you can really say you won't need to do that thing.

It is always ok to start with "how hard could it be?" but that starting point requires you educate yourself on exactly how hard it could be. For game development I think pretty much all the questions are knowable (except for consumer reception of course)

Re:“It’s done, there is no way back. We tried, we failed” by perotinus on Wednesday August 12, 2015 @09:14PM (#10051791)
In case anyone else was wondering what Chesterton's fence is:

"Chesterton's fence is the principle that reforms should not be made until the reasoning behind the existing state of affairs is understood."

I learned something new (and useful) today. Thanks!

Source: https://en.m.wikipedia.org/wiki/Wikipedia:Chesterton%27s_fen...

Re:“It’s done, there is no way back. We tried, we failed” by rkangel on Wednesday August 12, 2015 @12:08PM (#10048542)
> I like that term 'meta ignorance'.

Yeah, it's descriptive. I think I re-purposed a term from an academic paper that referred to meta-stupidity: stupid people are too stupid to know that they're stupid.

They did an experiment where they got people taking an exam to guess what mark they were going to get. In general, the lower scoring people in the exam over-estimated their mark more than the smart people.

Re:“It’s done, there is no way back. We tried, we failed” by lexicalscope on Wednesday August 12, 2015 @12:20PM (#10048655)
Meta-stupidity actually has another term for it as well - the Dunning-Kruger effect - https://en.wikipedia.org/wiki/Dunning–Kruger_effect - people that are inexperienced in a topic don't know what they don't know (as you put it, meta-stupidity) and so think they're smarter than they actually are - people that are more knowledgable know how vast the topic is, so realize their knowledge is less compared to overall knowledge, even though they're better than average.

Part of why it's good to be cautious around self-proclaimed experts.

Re:“It’s done, there is no way back. We tried, we failed” by DigitalJack on Wednesday August 12, 2015 @01:38PM (#10049289)
The dunning kreuger effect is useless. Dumb people think they are smart, smart people think they are smart. Nothing to be gleaned from that. Only at the very fringe of the intelligent side do the lines of actual intelligence and perceived intelligence cross.
Re:“It’s done, there is no way back. We tried, we failed” by halotrope on Wednesday August 12, 2015 @03:25PM (#10050043)
Actually the tendency is, that the more you know the more aware you get of the things you don't know. So while dumb people may overestimate their aptitude the smarter people tend to underestimate themselves. The most extreme manifestation would probably be the impostor syndrome. https://en.wikipedia.org/wiki/Impostor_syndrome
Re:“It’s done, there is no way back. We tried, we failed” by jeremiep on Wednesday August 12, 2015 @10:41PM (#10051996)
What I take from Dunning-Kruger is that unskilled people have misconceptions about themselves, not being aware of what they don't know. Likewise, skilled people have misconceptions about others, assuming they know as much as they do.

Its very easy to forget all the efforts invested in learning a skill when you've been using that skill for many years. When it becomes second nature, you assume its also that way for others.

Re:“It’s done, there is no way back. We tried, we failed” by DigitalJack on Thursday August 13, 2015 @12:06AM (#10052203)
Maybe before down voting you should go look at the data from the dunning-kruger study.
Re:“It’s done, there is no way back. We tried, we failed” by hellodevnull on Thursday August 13, 2015 @09:32AM (#10053990)
I have and it's very insightful. The people in the studies that were least competent were also, relatively, the most delusional of their inadequacies. This principle explains why you get people with little coding experience applying to developer jobs and failing the simply FizzBuzz exercise.
Re:“It’s done, there is no way back. We tried, we failed” by antjanus on Wednesday August 12, 2015 @12:48PM (#10048879)
I think that the longer I've worked as a developer, the more inclined I am to be a pessimist. Sometimes projects look so freaking easy but then you realize you've just spent 3 weeks working on one feature out of a dozen and you're about to hit your first deadline.

I definitely do the "manager doubling" when it comes to estimates. If I think it'll take a month, I estimate 2 months to my boss. If I have to report several levels up, I multiply by 2 for every level.

Re:“It’s done, there is no way back. We tried, we failed” by pimlottc on Wednesday August 12, 2015 @03:34PM (#10050094)
What's frightening is the variability of daily productivity. Some days everything comes out the first time, you're using the right framework and you finish 20% of the project with 10 lines of code. Other days, you lose hours chasing down a bug from a single typo, or debugging an obscure corner case incompatibility between two libraries. And there's no sure way of telling what kind of day you'll get next.
Re:“It’s done, there is no way back. We tried, we failed” by lifeisstillgood on Wednesday August 12, 2015 @07:24PM (#10051422)
This is almost correct - I think if you work all the time to keep it simple, the days of badness are fewer
Re:“It’s done, there is no way back. We tried, we failed” by bruceboughton on Thursday August 13, 2015 @04:30AM (#10052834)
Then the first derivative comes into play: some days you manage to keep it simple, other days you overcomplicate things. And there's no sure way of telling what kind of day you'll get next.

This tends to affect future work rather than the current sprint.

Re:“It’s done, there is no way back. We tried, we failed” by collyw on Thursday August 13, 2015 @04:55AM (#10052899)
They can still exist. Its not always in your own code.
Re:“It’s done, there is no way back. We tried, we failed” by jgroszko on Wednesday August 12, 2015 @04:39PM (#10050467)
> I definitely do the "manager doubling" when it comes to estimates. If I think it'll take a month, I estimate 2 months to my boss. If I have to report several levels up, I multiply by 2 for every level.

Hah, I like this. Every level up that sees it is also a potential for more scope creep, as each person will have their own vision of what's being produced.

One of my favorite estimating guidelines from a mentor was that development tasks are either 2, 4, or 8 hours. If it's more than 8 hours it can be broken up into smaller tasks.

Re:“It’s done, there is no way back. We tried, we failed” by nstart on Thursday August 13, 2015 @04:04AM (#10052776)
The most common time the 8 hours policy breaks down (insert rage face here) is when going bug hunting on non straight forward bugs. I just got out of a 5 day bug hunt where the fix was literally changing a 10 to 40 (so, 1 character change). The debugging process to realise this was painstaking elimination of possible causes. I eventually stumbled on the root cause by mistake when I out of frustration just switched an unrelated boolean flag to see if I could get a laugh out of what happened next. These tasks can really screw up an entire dead line. I have a policy on those which is two steps:

1) Daily report in the morning SCRUM style of what was tried, and what's going to be tried next. 2) After a full working week, reassess everything and try and understand where you are going with this.

Rinse and repeat. Basically the estimate is set at 5 full working days whenever you work on an obscure problem. But it's not a hard deadline. It's just a hope that it'll work out by then and a mild mental aid of giving something to work towards.

Re:“It’s done, there is no way back. We tried, we failed” by dagw on Thursday August 13, 2015 @07:33AM (#10053402)
It takes 8 hours to implement the feature. It takes a lot longer to make it actually work.
Re:“It’s done, there is no way back. We tried, we failed” by Joeri on Wednesday August 12, 2015 @12:54PM (#10048919)
The issue that I'm struggling with as I picked up experience and learned how to estimate better (read: higher) is of becoming a wet blanket. People will rave about this awesome thing we could do, and I'm the one saying "no, we can't, and this is why". That's why Steve Jobs said to stay foolish, it lets you chase after ideas that a rational person would consider too risky or just plain impossible.
Re:“It’s done, there is no way back. We tried, we failed” by sopooneo on Wednesday August 12, 2015 @09:06PM (#10051768)
I don't know what the opposite is of a "wet blanket" (perhaps "ray of sunshine"?), but is it possible to express almost the same hesitation from the opposite direction? For instance, say, "Yes, we can do that, but it will mean hiring four new devs and investing in XYZ server." Or does that just come across as transparently disingenuous?

I ask this sincerely, because I am trying to find a way to approach office politics as just part of my job and play it well. But as a developer, I'm also trying avoid the version of office politics where you just promise impossible things then find scapegoats later.

Re:“It’s done, there is no way back. We tried, we failed” by timv on Wednesday August 12, 2015 @11:14PM (#10052082)
My solution, where possible is to run with one (or more) of the following responses:

- I think there will be some challenges in that, can we take some time to think through the implications of ______ (or how we would deal with _____, etc)

- I think it's a great idea, but we're going to need to come up with a creative solution to solve _______

- I think we're probably under-estimating how much work that is. Maybe there's a smaller version we could start with and progress from there.

- We've looked into this before and got stuck at ________, do we think we've got a solution for that?

Re:“It’s done, there is no way back. We tried, we failed” by fenomas on Thursday August 13, 2015 @12:47AM (#10052303)
I like the phrase "creative solution" here, as a way to introduce what the alternatives are - as in: "I think we'll need a creative solution for ______, or else a revisit to the schedule".
Re:“It’s done, there is no way back. We tried, we failed” by seanmcdirmid on Wednesday August 12, 2015 @05:08PM (#10050625)
The flip side of meta ignorance is the curse of experience. Inexperienced people are more likely to take big risks because "they don't know any better." Most of the time, these risks predictably don't pan out, but sometimes they do!
Re:“It’s done, there is no way back. We tried, we failed” by collyw on Thursday August 13, 2015 @05:01AM (#10052918)
When two implementations look similar, inexperienced coders are unlikely to know which one represents the bigger risk.
Re:“It’s done, there is no way back. We tried, we failed” by seanmcdirmid on Thursday August 13, 2015 @09:04PM (#10058102)
Not the same. Risk aversion means not doing something because it is too risky...so you never write the code at all.

Once you have committed to doing something, experience usually wins out in doing it better.

Re:“It’s done, there is no way back. We tried, we failed” by Bartweiss on Wednesday August 12, 2015 @04:49PM (#10050523)
This is a crucial observation.

"Hofstadter's Law" at work: any unfamiliar task will take longer than planned, no matter how much extra time there is the plan. You can't account for your ignorance with padding, you need some kind of actual knowledge.

The result, then, is that there are only a few ways to actual make an AAA game. One is to hire some quorum of people who've already made one, so that they can bring you up to speed. The other is to do enough proofs of concept that you can see the problems coming.

It looks like Woolfe went from some mobile, educational games to a AAA PC title. That, it seems, was too big a gap to predict and prepare for the hurdles they would face.

Re:“It’s done, there is no way back. We tried, we failed” by Adlai on Thursday August 13, 2015 @04:35AM (#10052843)
You missed the recursion:

Hofstadter's Law: It always takes longer than you expect, even when you take into account Hofstadter's Law.

Re:“It’s done, there is no way back. We tried, we failed” by sdrothrock on Wednesday August 12, 2015 @10:04PM (#10051928)
> "Hofstadter's Law" at work: any unfamiliar task will take longer than planned, no matter how much extra time there is the plan.

I've always known this as Cheops's Law: No project is ever completed on time or under budget.

Re:“It’s done, there is no way back. We tried, we failed” by oconnor663 on Wednesday August 12, 2015 @12:09PM (#10048551)
Re:“It’s done, there is no way back. We tried, we failed” by jacinda on Wednesday August 12, 2015 @06:28PM (#10051176)
Even some of the smartest people in the world fall victim to this. For example, Elon Musk originally estimated that SpaceX would launch its first flight in November 2003. The first launch, which still failed, didn't take place until March 2006 and the next two launches also failed. The first successful launch didn't take place until September 2008, a delay of almost five years.

In his biography, Elon Musk acknowledges that his original estimates for SpaceX were completely ridiculous and based on his experience with writing software and ignorance of the realities of building spacecraft.

Re:“It’s done, there is no way back. We tried, we failed” by WmyEE0UsWAwC2i on Wednesday August 12, 2015 @01:46PM (#10049353)
Maybe it is easier to come out with a list of:

a. "things that would mean the project failed."

in contrast to:

b. "things that could lead the project to fail."

For "a" one could list. There is no money left. The team desintegrates. Etc...

And finally ask yourself, what could I do now so that, if we arrive to any of the listed sutations the damage is reduced.

Take this comment with a grain of salt. As every other comment on the internet.

Re:“It’s done, there is no way back. We tried, we failed” by ethbro on Wednesday August 12, 2015 @02:33PM (#10049704)
This is actually exactly what I heard on an NPR report about a consultant (yes, cries from the peanut gallery) who helps companies learn to manage projects better.

After doing all the normal project management estimates, etc, the very first thing he does is sit down everyone who will actually be implementing the project (or a representative sample).

He then asks them a simple question: "Come up with one scenario where this project would fail."

The implication being that this is lateral to the train of thought people use to make initial estimates. Iow, in all possible estimation scenarios, the project is assumed to have been a success! It's not unreasonable to expect that implicit optimism to filter down through sub-estimates.

His point was that giving people permission to imagine scenarios for total and abject failure identified important risks that could be back-fed to improve the initial optimistic estimate.

Re:“It’s done, there is no way back. We tried, we failed” by timv on Wednesday August 12, 2015 @11:22PM (#10052110)
One of the most successful risk workshops I ever ran was for the implementation of very large application in a bank.

I pulled in a sample of people from the development team and proposed the following scenario:

It's the Monday morning immediately after our implementation, and you come in to the office to find a bunch of senior managers discussing a big issue with the system.

What went wrong?

That brought up a huge number of potential issues that were sitting in the back of the engineers minds that have never been written on any risk register, etc.

We talked them through, got comfortable that some of them weren't really likely/possible, and then worked on mitigations for the others (mostly via test plans)

In the end, the implementation was a success.

Re:“It’s done, there is no way back. We tried, we failed” by babuskov on Wednesday August 12, 2015 @06:02PM (#10050985)
That is great advice.

Whenever I'm about to build something big, I first start thinking about things that would be hard to do, or perhaps that I even don't know how to do yet. Then I build prototypes of those to make sure I can to it and do it efficiently.

Once all pieces are ready, it's just a matter of putting them together which is straightforward and you have some chance to actually estimate the time.

Re:“It’s done, there is no way back. We tried, we failed” by ThrustVectoring on Wednesday August 12, 2015 @01:21PM (#10049161)
Another great approach is to take the outside view. Instead of figuring out what the path to success looks like, find a reference class which your project belongs to, and assume it'll be about the same.

Want to do better or find an edge? Figure out a way to be part of a better reference class.

Re:“It’s done, there is no way back. We tried, we failed” by gclaramunt on Wednesday August 12, 2015 @03:22PM (#10050022)
And in my experience, for every 10 issues that I realize it might crop up, I know there's also 10 issues that I DON'T realize it might crop up, so I take that into account
Re:“It’s done, there is no way back. We tried, we failed” by cantankerous on Wednesday August 12, 2015 @12:18PM (#10048633)
I believe it's also called negative introspection. I think that's what epistemic modal logic calls it, anyway.
Re:“It’s done, there is no way back. We tried, we failed” by aslakhellesoy on Wednesday August 12, 2015 @05:23PM (#10050715)
It's called Knightian Uncertainty - after economist Frank Knight.