dwyl/book

Contents List for The Book ?

Opened this issue · 14 comments

It's clear, cause you're here, that you're curious
to know if the claims in "the book" are spurious,

let us put your brain at ease from the mental tease
show you the "mind palace" and give you the keys!

The "MVP" plan for "The Book" it to create a contents.md file that lists the tutorials in order
which people can then read through ...

  1. General Background: https://github.com/dwyl/start-here
  2. Creativity (is where it all starts!): https://github.com/dwyl/learn-creativity help wanted
  3. People-first: https://github.com/dwyl/learn-user-experience-testing help wanted
  4. Google Apps Certification: https://github.com/nelsonic/google-apps-certification get knowledge and skills you can use to get a job in your first week!
  5. History of Internet: TBD
  6. Markdown: http://www.markdowntutorial.com/ (learn markdown so you can communicate!)
  7. Browser tools: https://github.com/dwyl/learn-web-browser-tools help wanted
  8. HTML: https://github.com/dwyl/learn-html5 help wanted
  9. CSS with Functional CSS -> Tachyons https://github.com/dwyl/learn-tachyons
    also: http://adamschwartz.co/magic-of-css/
  10. Git & GitHub: https://github.com/NataliaLKB/learn-git-basics
  11. JavaScript: https://github.com/dwyl/learn-javascript [Much Updatage Require]
  12. Goodparts: https://github.com/iteles/Javascript-the-Good-Parts-notes
  13. FP JS -> don't need to know that much here just: dwyl/learn-redux#40
  14. TDD: https://github.com/dwyl/learn-tdd
  15. Istanbul: https://github.com/dwyl/learn-istanbul
  16. Basic Web App Using Just HTML+CSS+JS (NO Server or Front-end Framework)
  17. Deploy your app using Heroku! https://github.com/dwyl/learn-heroku
  18. Continuously Test your code using Travis-CI: https://github.com/dwyl/learn-travis
  19. Continuously Deploy your App/Project to Heroku using Travis-CI ⬆️
  20. Progressive Web Apps: https://github.com/dwyl/learn-progressive-apps
  21. Security: https://github.com/dwyl/learn-security
  22. Node.js: https://github.com/dwyl/learn-node-js-by-example
  23. Crypto: dwyl/learn-cryptography#1 (comment)
  24. Extend the Basic Web App above to include a server
  25. Intro to Databases: https://github.com/dwyl/how-to-chose-a-database
  26. PostgreSQL: https://github.com/dwyl/learn-postgresql
  27. Extend the app to save data to the database.
  28. Hapi.js: https://github.com/dwyl/learn-hapi (obvs)
  29. Build a small app in Hapi.js ... thinking instagram clone here... but may need DB first...
  30. Redux https://github.com/dwyl/learn-redux mini-todo-list in Redux - just to understand Frontend State Management.
  31. WebSockets for realtime: https://github.com/dwyl/learn-websockets
  32. Elm: https://github.com/dwyl/learn-elm
  33. Build an Elm App that uses the "Back End" (API) we built before in Hapi by using Content Negotiation.
  34. Build timer app using Elm, Hapi & PostgreSQL
  35. Other Databases/Datastores which are useful to know/use: LevelDB
  36. Redis: https://github.com/dwyl/learn-redis
  37. Elasticsearch: https://github.com/dwyl/learn-elasticsearch
  38. Visualisation with Kibana: https://github.com/dwyl/learn-kibana
  39. Exercise your Hapi, Socket.io and Redis knowledge to build a chat application:
    https://github.com/dwyl/hapi-socketio-redis-chat-example

Now that you know Node.js & Hapi you can build anything from Trello to Tinder!

But why stop there...? -> Bonus Level: Advanced Topics in Web Development

Scalability

  1. AWS Lambda and the Serverless Architecture: https://github.com/dwyl/learn-aws-lambda
  2. Deploying to Amazon Web Services Elastic Beanstalk: https://github.com/dwyl/learn-amazon-web-services
  3. Image upload mini-project with re-sizing using image magic
  4. Elixir: https://github.com/dwyl/learn-elixir
  5. Phoenix: https://github.com/dwyl/learn-phoenix-web-development
  6. Blockchain: https://github.com/dwyl/learn-blockchain
  7. APIs https://github.com/dwyl/learn-api-design

Now you know everything you need to re-build the NHS Digital Services
(and all other web-based applications for that matter) and make the world better. ❤️ ✅

@nelsonic whoa, this thing is half written already!! <3

How long will it take a beginner to learn all of this?

This looks awesome 👏🏻🎉

@Eduardcodes great question! 🍭
I wish we had a precise/guaranteed answer... 😞
the amount of time will entirely depend on the person. 🦄
Some people have berry busy lives, these people should budget accordingly. 📲 ⏳
We intend to re-work some of the content to be even simpler ♻️
and release a video for each tutorial which will take aprox 30mins to watch. 📺
So let's say 2 hours per tutorial/chapter if you try the examples. T2h
And another 2h if you get stuck and need to ask a question.... T4h
So if you do one per day it would take you approximately 6 weeks. 📆
If you have more "free time" (e.g: because you are "between jobs"),
you could do two tutorials per day and be *finished in less than 4 weeks! 😮
One of our goals for 2017 is to make it even easier to learn independently using our tutorials, 👩‍🎓
ironically, helping people to be more independent 💃
will be achieved by improving the online community ("features") 💬
not by people being individualistic! ⛔️
If you would like to help us with that, simply ask more questions ❓ 🆘
and participate in the online discussions on the existing issues!! 🔍 🗣 ❤️

Cool book!

One definition of creativity is that it can be roughly described as relating concepts in mind; so then, the web developer who brings together a wide variety of components to realise an app idea can be said to be manifesting creativity, such as yourselves! Another aspect is the top down thinking that takes an idea and resolves it down to the components, but for me, that depends upon how familar one is with the components and how they relate in the first place. And yet another aspect is conceiving the app "idea" in the first place. Now, I suspect that the first two ideas are crucial for the third, and perhaps are a better sequence, In the Founders and Coders application process, after learning the basic elements of Javascript, the person is advised to go to Codewars to practice the basic elements in combination, and that was super useful because it gave a strict critera for success--that is, when you have reached level five kyu than you have a minimal grasp of the elements of Javascript as they combine to solve small algorithmic problems which require little domain knowledge; likewise, given whatever components it might be useful to construct a sequence of exercises within an escalating difficulty, which has as its purpose the combination of the elements, where the components are tightly scoped, with additional components being added--like how some folk have created development environments in which only certain parts of a langauge are accesible at a given stage, and the person learns to play with what is given, before adding complexity; that is to say, the person's mind becomes famililar with combining the given components to some end. So to summarise, the thought in my mind vis-a-vis creativity is that within a narrowing of the scope of the components the person is challenged step-by-step within projects and tasks which require combining the components, and after a person is familiar with the said process, they would be better placed to deconstruct a given idea relative to some set of components, or to think of ideas that are reasonable.

Too, on the topic of creativity within the definition of assembling concepts, one of the themes of programming, which I think is useful generally, is that, in order to build such and such one has to on some level, within some conceptual langauge (obviously including programming langauge), describe it or think it through with enough precision (for example TDD asks for explicit concrete examples of behaviour) while finding ways to manage the complexity of details, so one can guess that something like the practice of something like TDD would help a person think in enough detail to construct a given object--kind of how like Steve Jobs spoke of programming teaching a person to think; in part, it is the level of attention to detail that many would not have a reason to apply otherwise, apart from maybe subjects like Mathematics. So one anwser to the problem of creativity is: learn to build apps and you will think so much better!

Or to summarise thoughts still further, the musician combines melodies, harmonies, rhythms, instrumental colours, dynamics in communicatng emotions, the painter likewise combines colours and textures on a canvas, the mathematician's thoughts are analogies based on a given symbol system; so a definition of creativity that rests within the concept of combining concepts (things!) is not only super-applicable, but easily understandable for many, and is clear enough to form the foundation of a sequence of teachings.

I think that is all I will say!

Actually, Zed Shaw is one of the few folk I have seen speak concretely about the process of taking an idea and breaking it down: https://www.youtube.com/watch?v=w1-bDwNtG-I

Good Wiki/List of resources for learning HTML, CSS & JS:
https://www.quora.com/What-is-the-best-way-to-learn-HTML-CSS-and-JavaScript

Looking over the OSSU curriculum, I really like what they've carved out. Next year would be a good time to join or a start one of their cohorts.