UNPHAT method for designing apps
I found this to be very useful when thinking about the most important part of writing apps: understanding what to solve and how. It's from https://news.ycombinator.com/item?id=30931831. 

Next time you find yourself Googling some cool new technology to (re)build your architecture around, I urge you to stop and follow UNPHAT instead:

Don’t even start considering solutions until you Understand the problem. Your goal should be to “solve” the problem mostly within the problem domain, not the solution domain.

eNumerate multiple candidate solutions. Don’t just start prodding at your favorite!

Consider a candidate solution, then read the Paper if there is one.

Determine the Historical context in which the candidate solution was designed or developed.

Weigh Advantages against disadvantages. Determine what was de-prioritized to achieve what was prioritized.

Think! Soberly and humbly ponder how well this solution fits your problem. What fact would need to be different for you to change your mind? For instance, how much smaller would the data need to be before you’d elect not to use Hadoop?