34

I've been accused of having questions that are too blue sky-y or green fieldy and not white boardy enough.

What does this mean and why do those questions get closed?

30

A greenfield project is one without restrictions on prior systems or protocols. Blue sky projects are ones that are completely wide open ("develop a knowledge base"). In the context of a question on Software Engineering, a greenfield or blue sky question is one along the lines of "How do I write this?"

Everything about "how do I write this?" it is on the table - no design has been thought of, no problems have been encountered. In effect, the question is asking the community to design the entire system. This is similarly problematic as asking someone to write all the code for a set of requirements on Stack Overflow.

The biggest problem with such a question is it is very broad. One could design the system at a high level and another person could do the same solution from a low level. Alternatively, there can be many designs for the same system. This leads to the question being very broad and in danger of being closed for such a reason.

With a design question, it is expected that the person asking the question has taken some time to sketch out the design that they have come up with and identify the problem they are encountering with the design.

If there is a difficulty even getting started, as described in where to start? one should sit down and spend some time coming up with a design that is something that they are capable of coding to. That last point should not be overlooked - it is quite possible for an architecture astronaut to come up with a design from scratch that is impossible for anyone to code to or implement with any hope of getting it right ("it is an n-tier design that makes use of MVC that is controlled by a dispatcher that has been configured with dependency injection and...." -- just say 'no').

If you are interested in hiring an architect that has this experience and can make such decisions for you on where to start, that is indeed a path to look down - but asking the community to be the architect is irresponsible and ultimately unmaintainable.

So, sit down and sketch out the design that you have and what problems you are encountering when thinking through the design. Draw something up on the white board, draw a circle around it and say "I don't know how to get this piece and that piece to talk together correctly - I thought of using a message queue, but that has some problems in our architecture because..."

As mentioned in another post (10k link):

This isn't so much "white-boardy" as it is "blue-sky-y". There are entire careers built on trying to solve this problem - you're gonna have to narrow it down a bit.

The key to writing a good question is to scope the question properly so that it is one that addresses a problem in the design, rather than completely wide open "pie in the sky" with its options.


Example questions:

An algorithm-based content ranking crawler (10k link)

I need to implement a web crawler to crawl websites and rank visited pages based on content. For example, a website can be ranked as 80% political content or 70% sport content. There is no problem by implementing crawler. The only point would be an algorithm to set an approximate rank to content of crawled website.

Is there any algorithm to reach this goal?

Grails app providing REST services, with Angular frontend in SPA configuration… Feasible? (10k link)

Could you just begin an Angular project with Bower/Grunt/NPM give it its own directory and the whole nine yards ... and then just throw it in your Grails directory somewhere with the index.html page to be rendered as a static HTML file by a Grails controller?

So basically all the Grails app does is provide RESTful resources and literally redirects you to a static html file - which happens to be your Angular Single Page Application.

Note the first example question here is one that leaves the described whiteboard completely untouched. There is nothing about the design, just a few vague requirements and the request to identify or design the algorithm.

The second question draws a picture of sorts. It is still quite vague in places, but there's a design put forth that is being considered. There is something on the whiteboard that is being described. "You've got this thing over here that provides this service that redirects over to this other thing..." (you could picture a co-worker saying that with a marker in hand). And thus, the question is one that is whiteboardy. I'll certainly agree that the question is broad and may have other issues, but it isn't too broad.

Whats more, the first question is one that could possibly be answered with "you are looking for ${algo_XYZ}". While the second question wouldn't encourage simplistic or poor answers. That is the key behind the ideas of optimizing for pearls, not sand.

  • 6
    Greenfield and Blue Sky are not quite the same things. A greenfield project can be designed without constraints imposed by prior systems, but it still has constraints (namely, those imposed by requirements). That a project is a greenfield one doesn't necessarily make a question about it a bad one, so long as it is still properly scoped. – Robert Harvey Oct 26 '14 at 4:44
  • for the sake of completeness, second example ("Grails app...") appears to be suffering from yes/no question issues (agree that it doesn't look too broad) – gnat Oct 27 '14 at 15:26
  • 1
    @RobertHarvey I think that most programming projects are brownfield ones. – user251748 Apr 17 '17 at 14:38
  • @nocomprende: I never stated otherwise. – Robert Harvey Apr 17 '17 at 19:41
  • @gnat, I can't quite tell whether the second example is supposed to be a good example or a bad example. It's deleted, which implies the latter...but the description here is kind of ambivalent and semi-positive. – Wildcard Jul 4 '17 at 3:49

You must log in to answer this question.