ModernWebApp

Making web apps are pretty complicated

  • State of the Art - Web Development is constantly changing, what’s the current State of the Art?

  • New Browser Features - modules, async/await, generators, decorators, promises, etc.

  • Legacy Suport - polyfills, shims, vendor prefixes for older browsers that don’t support current JavaScript standards.

  • Backend Programming - JavaScript isn’t the only language that can server HTTP requests, C/C++, Rust, OCaml, Scala, and many more can too.

  • Automation - streaming tasks like compiling our apps and compressing our images and making icon fonts.

  • Dev Ops - Using tools like Docker to deploy to cloud providers like AWS, DigitalOcean, etc. Load balancing your app, working with micro-services and a polyglot architecture.

  • Testing - Speeding up new updates to the site through automated testing, linting, type checking, etc.

how to learn web technologies

  • Willing to change, to learn new things. Keep up with the latest trends, updates, etc. Though this can eventually lead to Tooling Fatigue.

  • Be a good communicator and collaborator, so try contributing to open source projects!

  • Talk with recruiters and apply like crazy! Facebook, Twitter, Tumblr, Nvidia, you name the company, they’re hiring! Even if just for an internship, a few 10Ks doesn’t hurt. 😉

  • Enjoy it. You’ll never get anywhere if you don’t like what you’re doing.

Javascript

  • TypeScript - The latest JavaScript + Types

  • CoffeeScript - Tiny JavaScript

  • NativeScript - JavaScript + Native Objects

  • PureScript - JavaScript + Functional Programming

Frameworks

  • React - Facebook’s simple rendering library. Used by Instagram, Wordpress, Capital One, DeviantArt and way more.

  • Vue - A very Tiny view library developed as a side project from Evan You, a Meteor Dev.

  • Angular - Angular has gone through a rewrite, adopting new standards like @decorator, class, ES6 modules, etc.

  • Ember - One of the first MVC frameworks for front end development. In use in places like Groupon or for the Ghost CMS.

CSS

  • PostCSS - Converts CSS to an abstract syntax tree that can be modified very quickly, Benchmarks put PostCSS as even faster than LibSass, the C++ Sass implementation.

  • CSSNext - A PostCSS plugin that adds CSS4 features.

  • BEM - A design methodology as an acronym, Block, Element, Modifier.

File Structure

  • Sorted By File Type - Game Maker Studio

  • Sorted by Component - Wordpress Calypso

  • Sorted by Task - Angular 2.0 Beta Structure

Generators & Boilerplates

  • Yeoman - Scaffold out your application with some yeoman generators, making say, angular directives from one command vs googling an implementation and forking that.

  • SlushJS - Another Scaffolding tool based on GulpJS.

Routes

Deployment | The Web Obesity Crisis

System Design

These questions are typically vague and open-ended, such as “Design Twitter” or “How would you build a shopping checkout service?” Below are some topics to consider:

  • Rendering: client-side, server-side, and universal rendering
  • Layout: when designing a system used by multiple development teams, you think about building components and whether you require teams to follow a markup to use those components.
  • State Management such as unidirectional data flow or two-way data binding
  • Async flow: the components you build may need to communicate with the server in real-time and the design you propose should consider XHR vs bidirectional calls. If you’re asked to support modern browsers, you could use websockets or server-sent events; if asked to support older browsers, you’ll need to choose between IFrames, JSONP, etc for your design.
  • Separation of concerns
  • Multi-device support: Will your design use separate implementations or the same implementation across web, mobile, and hybrid applications?
  • Asset delivery: Your design should consider how assets are built with dependencies, tested, and deployed.

reference:

  1. https://alain.xyz/blog/designing-a-web-app