What you need to know for Web Development

The list is extensive - especially if one wants to get to a substantial degree of mastery in any particular element:

Linux/Ubuntu

  • the command line,
  • how the operating system works

If you’re deploying to these machines, an understanding of how they operate will come in handy.

Programming Concepts

  • Uncle Bob concepts, Gang of Four concepts, or some of the ideas outlined in POODR (Practical Object Oriented Design in Ruby by Sandy Metz), or reviewing Fielding’s thesis on REST.

Business Concepts

Time is limited. You have to solve problems, which yield value, at low cost. This is a learned skill.

HTML

  • Basics are necessary.

CSS (and tools)

  • SASS, SCSS, BEMIT, Bootstrap, Bulma, IntuitCSS etc.
  • Front end frameworks and front end tools: e.g. Elm, React, Stimulus JS, or good old fashioned JQuery.
  • Bundling tools and how to configure them: e.g. Webpack and Webpacker.

A server framework and Server side language

  • Ruby
  • Rails

The expertise required is deep: suppose you want to check for the existence of records: should you use present?, any?, exists?, or count? It’s easy to do an ordinary job and hit the database a million times. It’s hard to know what to do, and when.

Rails alone is not enough. What about the associated gems?

Cloud based tools

Amazon itself has over 150+ services (many of them overlapping) which are designed to make your life easier. Google and Azure are trying to follow suite, but they’re behind the 8-ball, especially with certain services.

I would say that there are pretty much 8-10 products from AWS which are tried and tested which you can go to. Why be a pioneer and try to hack out a solution for ABC Cloud Solutions, when AWS does the same thing? Yes, they do have their gotchas - which you need to be aware of, but you can definitely be productive with those tools.

Deployment

  • Deployment Related tools and infrastructure: e.g. using Heroku (does that even count?), Capistrano, or some of the others noted above. What about CDNs? Or Vagrant, Docker, Dokku and the Chefs and Ansibles of the world?

Tools:

  • Tools within the operating system itself. Are you still using BASH? Consider Zsh or Fish. There are millions of cool tools out there. Using CTRL + TAB? Consider using i3 or tmux. Knowing some

  • Sublime / VIM. In order to be productive, you really need to know all the ins and outs. Snippets, Emmet, macros, key-bindings etc. Sublime is very, powerful, and user friendly. Vim on the other hand, lacks the aesthetics of Sublime.

  • CTags (either with sublime or without it). It allows for one to easily navigate between source code. You can think of it as a sort of reference finder - the equivalent which exists in Visual Studio.

  • Developer tools within the browser itself.

  • Webpack, Gulp, Grunt etc.

  • Git and Github workflows

  • Continuous Integration concepts

  • Webservices Tools (e.g. AWS Services like S3, or Lambda)

  • Database tools: e.g. Postgres + SQL and structuring and querying databases.

Helpful gems when debugging:

  • Tapping Device.
  • Simply using the source_location helper method in Rails.

It’s very, difficult to master everything all at once: how is it even possible?

Time is inherently limited. You can only focus on a few things at a time. Focus on those. Rely on others for the rest.

Written on May 29, 2020