Inspired by Dan Abramov’s “Things I don’t know as of 2018“, I think it’d be good to list both things I know and don’t know in my career as a web developer.

i know…

  • HTML -> XHTML -> HTML5. Using this language, I prefer semantic written markup using responsive web design, standards based code good for accessibility, a standard foundation of markup to support a balance of progressive enhancement and graceful degredation, and thoughtful layout testing on mobile first devices. I’m learning to extend semantic meaning with…
  • ARIA attributes are newer for me but I like how they relate components to each other. For example, on a mobile device, a non-semantic menu toggle button, often called hamburger icon, uses aria-controls attribute to associate to the navigation menu id. We should all be fighting for an accessible and inclusive web before new laws force us to
  • SVG image elements are too powerful to not use. I default to SVGs when 1) images are small and 2) images aren’t photographs. In other words, all static media that’s not a photo, particularly icons.
  • CSS -> CSS3. If I look through CSS3, my last decade of projects is littered with these rules.
  • CSS Methodologies – I’ve used several including variations of BEM, ITCSS, and SMACSS
  • CSS Grid Layout is the way I want to move forward in new views and layouts, with Flexbox following closely behind. You can forget floats for layouts
  • I’m learning how to utilize CSS Variables in combination with…
  • Sass => CSS, but I’m rethinking of how to continue on with CSS Custom Properties (CSS Variables) support being so good. I like the use of nesting, mixins, variables, and the organization that imports allow is Sass, but it’s unnecessarily complex in similar respect to…
  • Javascript is the slippery language which has taken me my whole career to know. I’ve lightly used jQuery for more than a decade, more often inside of WordPress plugins and themes, but I also used it moderately in working projects as recently as 2018.
  • ES6+ is a good change to Javascript and helps flips the imperative to the declarative. I had a lot of exposure to consuming APIs and am moving this data around. ES6 makes it quite a bit simpler and easier to sling data left and right so it’s an easy win to adopt ES6 on modern projects. While most freelance and recent full-time projects were often ES5, I moved into a “esNext” world regularly as I more often use…
  • React.js, all the rage for most modern companies today, is where I spend more than half my coding time. 2019 was mostly using Gatsby using Hooks with a little GraphQL.
  • WordPress is still the primary way I start and complete freelance projects since I’m usually working with smaller clients. Theme development, plugin editing and setup, the ecosystem and architecture of WordPress, this is what I’ve used and known since the mid 2000s and probably will continue into the next decade
  • Git for version control is vital on most projects if you’re working with others. The most advanced things I use are merging, fetching, stashing, and rebasing, but for the rest I look ’em up
  • Graphic Design for the web is was my introduction to the web industry. I’ve used Photoshop since about 1999. I find it difficult create artistic concepts from inception but I excel at manipulating and remixing existing art. I understand many aspects of User Interfaces and always try to keep User Experience in mind when I make designs. I’m proficient editing designs with Photoshop and I can give educated feedback on existing mockups and views. However, it’s been a while since I’ve had a heavy design-focused project where I needed to use design skills from scratch
  • Networking I spent almost years in college learning networking and still understand the fundamentals, how packets are sent and received, changing IP addresses and using custom DNS servers, Hosts, etc. I worked part-time as a network administrator in a medical clinic for years so I know how to get around a network

i’m learning…

  • ES6+ is exciting. Whether it’s with the syntactic sugar given to ES6 in things like classes or writing asynchronous data calls, the next generation of Ecmascript is a fascinating progress in Javascript. There’s always more to the updated language features I have to teach myself.
  • React.js is where most of my time is spent learning. I use personal projects to give me a better understanding of how modern Javascript is used inside of React as well as modern Javascript.
  • Functional programming and Object Orient Programming based within Javascript is the currently accepted way to write modern Javascript. Simple DOM manipulations using jQuery never made me think in terms of OOP or FP. I’m slightly behind and renewing what I’ve learned throughout the years to level up
  • PHP belongs on this list because as long as I have to support or use WordPress in the foreseeable future, PHP will be an ongoing learning and look-something-up language for me, with good features to use such as namespacing introduced in PHP 5.3 and the performance improvements from PHP 7
  • VMs – I moved away from MAMP and similar development environments to now use mostly Vagrant or Docker with Virtualbox VMs as well as Laravel Valet or Homestead. The portability built using a few commands is powerful and I prefer not integrate deeply into the OS
  • DevOps and data is actually where 16 months of my career was spent as a front-end developer when I worked for a startup in that side of the tech industry. That whole world baffles me and you could put me to sleep talking about data management, data metrics, databases, data manipulation, VMs, containers like Docker and Vagrant, but being exposed to it probably helped me realize how important a lot of these concepts are as we move to AI and machine learning and how to manage all the metrics many services consume on a daily basis
  • Server-side Python and JS are not in my head like when they are mixed with the client side languages. I can look at PHP, Python and JS and edit them but I’m not fluent in server-side versions of any of them
  • JAMstack is so hip. I’ve recently used Gatsby on a project, I installed Eleventy once to see what happens. It’s interesting.
  • PWA are what I hope to get deeply involved in for my next projects. I want to be able to create sites and apps that smartly work offline and cache locally for better subsequent loading, combining with concepts like Critical CSS and JS, asynchronous and deferred script and asset loading. Essentially, I think performance tweaking must be a focus on the forefront and learning how to only load what’s necessary via JS and SSR is vital

i don’t know…

  • Command line languages like Bash and Powershell come in handy but I’m still primitive. I can rm -rf like a mad man. If you search my command line history, you’ll also some a lot of git and some npm, ls -la, yarn, gulp, grunt, ssh, vim, vagrant up, brew, whois, choco, mkdir [dir] && cd [dir]
  • Node.js back-end like Express isn’t really something I’m actively learning as much as I use them for modern projects regularly. I’ll probably help me to understand more how I can use Node.js to tie Javascript into server side rendering instead of everything being on the client side
  • HTML Preprocessors don’t really jive to me. I’ve seen examples of them all over, like Haml, Pug, Slim, but I’m only marginally interested
  • JS Preprocessors like TypeScript are in the same class as above. I use Babel without knowing much about it and I’m kind of looking forward to not having to rely on it as much but I know that’s a few years off
  • Canvas, D3.js, Greensock, JS animations might be where a lot of effort is spent making websites and web apps more appealing but there’s too much in these technologies for me to learn or care about right now
  • AWS, Azure, Google Cloud Computing are beyond the scope of what I’ve done. This bleeds in to the DevOps world which I’ve had a bit of exposure to from previous work but not at a level where I could be given a problem to solve in decent time
  • API Creation is important for what web developers do. They expose the database stored data and could even be stored JSON data themselves, but asking me to write an API itself is still elusive and confusing to me. My first real attempt at creating a JSON API from scratch took me days to wrap my head around since it was creating a hierarchy of JSON that had nothing to do with a specific language
  • Native App languages also don’t appeal to me. I’m not interested to get into Objective C and Swift for iOS and macOS, Kotlin for Android or Visual Studio for Windows. So I’m not really useful for native app development unless it involves something more visual