58 Lessons on Web Development from Getting Real

On June 24, 2010 By bookguide Topic: Greatbooks, Book summary

37Signals have made a name for themselvs with their minimalistic, no-nonsense appraoch to web application development and business in general. They have distilled their wisdom and appraoch into the best-selling "Getting Real".

A summary.

1. Four States Solution.
Every screen, we should consider following 4 states.
Regular, Error, Blank, weird Data

2. Say No to your customer.
Promise less.

3. Low your cost of change.
Try your best to make your product agile, so that you can change easily.

4. It shouldn’t be a chore.
If your daily work is a chore, find solution.

5. Embrace Constraint.

Every time you suffer constraints, don’t think about what you can’t do with the constraints; think about what you can do.

6. Keep your vision around the big idea.
Never let the detail direct you, keep the big idea.

7. Ignore details early on.
Success and satisfaction is in detail. But make sure all tasks done is your final success. When we are talking about the big function, don’t think about where to put an input textbox.

8. Don’t waste time on the problems you don’t have yet.
Do you really need to worry about the big concurrence when you have few users of your website? It’s a problem just when it’s a problem.

9. If you want to please everyone, you won’t please anyone.

10. Make opinionated software.

There is a lot of software resolving lots of problems. Your software should have a vision. The reason why user use your software is that your software resolving his problem. Keep your current users happy, don’t go chasing people you will never make happy.

11. Build half, not half-assed.
If you can’t implement 100 functions on time, then please implement 50 functions which are more important completely, but not implement 100 half-functions.

12. It just doesn’t matter.
If customer asks “why you don’t have this function?” Answer should be “Because it just doesn’t matter?” Come on, we have more important things to do, how can we spend our golden on this kind of “Nice to have, but it’s OK” functions.

13. Start with No.
Don’t be a yes-man. The secret to build half a product instead of a half-ass product is saying no. Each time you say yes to a feature, you are adopting a child.

14. Hidden costs.
Expose the price of new feature. A new feature will bring much more workload than you could imagine when you were saying yes.

15. Human Solutions.
Keep your software clean and simple. People can always figure out how to resolve issues on their own base your software.

16. Ask Users what features in our software you don’t want.

17. Get something real up and running quickly.

18. Work in iteration.

Don’t expect to get it right the first time. Create one, evolve it.

19. Go from brainstorm to sketches to HTML to coding.

20. Avoid preference.

For user, preference screens with endless amount of options are a headache.

21. Be an executioner.
It’s so funny when I hear people being so protective of ideas. (People who want me to sign an nda to tell me the simplest idea.)

Ideas are worth nothing unless executed.

Execution is worth millions.

Explanation:
Awful idea = -1
Weak idea = 1
So-so idea = 5
Good idea = 10
Great idea = 15
Brilliant idea = 20
No execution = $1
Weak execution = $1000
So-so execution = $10,000
Good execution = $100,000
Great execution = $1,000,000
Brilliant execution = $10,000,000
To make a business, you need to multiply the two.
The most brilliant idea, with no execution, is worth $20. The most brilliant idea takes great execution to be worth $20,000,000.

22. Test your app in real world.
Get real data, get real feedback. No mock data.

23. Divide big task to small tasks with small timelines.

24. Alone time.

Get Into the Groove: We all know that knowledge workers work best by getting into “flow”, also known as being “in the zone”, where they are fully concentrated on their work and fully tuned out of their environment. They lose track of time and produce great stuff through absolute concentration...trouble is that it’s so easy to get knocked out of the zone. Noise, phone calls, going out for lunch, having to drive 5 minutes to Starbucks for coffee, and interruptions by coworkers – especially interruptions by coworkers – all knock you out of the zone. If you take a 1 minute interruption by a coworker asking you a question, and this knocks out your concentration enough that it takes you half an hour to get productive again, your overall productivity is in serious trouble.

25. Have effective meeting, otherwise meeting is toxic.

26. Seek and celebrate small victories.
Don’t wait for victory after 4 weeks’ long work. Split into small victories, enjoy them weekly. Otherwise you are killing motivation.

27. Kick the tires.
Passion! A skilled person without passion kills others’ motivation.

28. Actions, no words.


29. Hire good writer.

If you are trying to decide between a few people to fill a position, always hire the better writer. It doesn’t matter if that person is a designer, programmer, marketer, salesperson, or whatever, the writing skills will pay off.

30. Interface first.

Please, let ask customer to imagine.

31. Start from the core of the page.

Focus on the true essence of the page. And then detail.

32. The blank slate.

Most designers and developers fail to spend a lot of time designing for the blank slate because when they develop/use the app, it’s full of data that they’ve entered for testing purposes. They don’t even encounter the blank slate. Sure, they may log-in as a new person a few times, but the majority of their time is spent swimming in an app that is full of data. What should you include in a helpful blank slate? Use it as an opportunity to insert quick tutorials and help blurbs. Give a sample screenshot of the page populated with data so people know what to expect (and why they should stick around). Explain how to get started, what the screen
will eventually look like, etc. Answer key questions that first-time viewers will ask: What is this page? What do I do now? How will this screen look once it’s full? Set expectations and help reduce frustration, intimidation, and overall confusion. First impressions are crucial. If you fail to design a thoughtful blank slate, you’ll create a negative (and false) impression of your application or service.

33. Design for when things get wrong.

Remember: Your app may work great 90% of the time. But if you abandon customers in their time of need, they’re unlikely to forget it.

34. Context over consistence.
That’s why context is more important than consistency. It’s ok to be inconsistent if your design makes more sense that way. Give people just what matters. Give them what they need when they need it and get rid of what they don’t. It’s better to be right than to be consistent.

35. One interface.
Don’t have another interface for admin function other than public function.

36. Optimize for happiness.
A happy programmer is a productive programmer. Choose tools that keep your team excited and motivated.

37. Listen to your code.
When you find coding job for a function is hard, think about the function again.

38. If programmers got paid to remove code.

39. Don’t put your smelly code aside. It’s your debt.

40. There is nothing functional about a functional spec. (No summary, read the book yourself.)

41. Tell me a quick story.

If you want to explain me a new feature, don’t give me detail. Just give me a brief story.

42. Do as what your customer do when inputting something in your website for test.

43. Give free sample. Customers need experience.

44. Easy on, easy off.

Make signup and cancellation a painless process.

45. Avoid long-term contracts, signup-fees, etc.

46. Alpha Test -> Beta -> Release

47. Promotion: Use blog for advertisement; Add topic in forums to collect the emails for your new app; Promote through education in forums about how to use your app;
Open source; Pay attention to the ones who praises or criticize your website in the internet. Collect their email, response to them; Take care your existing users; Give your app a good name which is easy to remember.

48. Ask developers to hear the pain of customers.

49. Zero training. Use inline help and FAQs. Answer quickly.

50. Have a fine forum for your product. You’ll be surprised how much people want to help one another.

51. If something goes wrong, tell people. Even if only 5% of people have seen the problem. Be honest.

52. Don’t stop blogging once you launch. Tell customers that your app is alive by updating the blog about the update notes.

53. Beta is meaningless. Take the responsibility of what you are releasing. Put it out and call it a release. Don’t use Beta as a scapegoat. .

54. Prioritize your bugs (and even ignore some of them)

55. Don’t respond to negative voices at once. Sit back, take it all in, don’t make a move until some time has passed. Then offer more reasoned response.

56. Keep up with the joneses: Subscribe to the new feeds about your competitors.

57. Beware the bloat monster.
Getting mature doesn’t have to get more complicated. With web-based software based on the subscription model, you don’t need to keep adding new features so that user will buy your new product. Just keep your good service.

58. Be open to new path and change in direction. Your first idea won’t be the best idea of you.

Also read
Web designing lessons from Don’t Make Me Think by Steve Krug


[From the great books  series. Also read The Success Manual - Encyclopedia of advice


The Success Manuals


The Career Advice Bible

100+ Most Important Career Questions
Finally Answered

318 Pages | $5 | PDF & EPub, Kindle Ready

250 Top Work & Personal Skills Made Easy

The First & Only Encyclopedia of Self Help,
Self Improvement & Career Advice

250+ Easy-to-Follow Guides
5000+ Proven Tips

13 Types of Essential Skills Covered
Get The Value of 100+ Best Books in 1 Book.

502 Pages | $5 | PDF / EPub, Kindle Ready