| Assuming that you've found an interesting business problem to solve: 1. Write a list of desired features. Next, prioritize those features. 2. Write brief functional specifications for features of highest priority. 3. Decide on how you want to use the software stacks for different tiers, e.g. Browser - Bootstrap or Zurb, AngularJS
Server stack - node.js, Ruby, Python
Database - MySQL, Postgres
These examples are sketchy, just to give a feel of things.
4. Research any libraries that automatically handle common functional units, such as authentication and authorization, analytics et al.5. Some functional units might be implemented more easily by gluing together services. E.g. using New Relic for deep application monitoring, Twilio for cloud communications. 6. Design and implement all functional units. 7. Profit! 8. Write a Thank you HN note, :) One should do this exercise for a "toy" application like "To Do List" first. It helps remarkably when we go about building serious stuff. Books:
1. Code Complete by Steve McConnell - worth at least skimming it. 2. Design Patterns by Erich Gamma et al
http://www.c2.com/cgi/wiki?DesignPatterns Also, definitely have a look at Peter Norvig's slides:
http://norvig.com/design-patterns 3. About Face 3: The Essentials of Interaction Design by Alan Cooper 4. Writing Effective Use Cases by Alistair Cockburn Websites:
1. Obviously, HN, :) 2. http://highscalability.com/ It may look like a huge undertaking, but it really isn't. A quote from Michael Abrash seems appropriate here, "Winning a hard race prepares us for the next harder one." This is just top of the mind; hope this helps. Good luck. Edit: formatting. |