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. Semantics first using responsive web design, standards based code good for accessibility, all making for a standard foundation to support a balance of progressive enhancement and graceful degredation, and thoughtful layout testing on mobile first browsers. I extend semantic meaning with…
  • ARIA attributes; I love 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 graphics that are not a photo, particularly icons, styled with…
  • CSS. This language has come of age in the 2020s, and might soon be my go to using one of a few…
  • CSS Methodologies – I’ve used several including variations of BEM, CUBE CSS, ITCSS, and SMACSS
  • CSS Grid Layout is the way I want to move forward in new views and layouts, with Flexbox as a strong partner
  • 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 not needed like it used to be. Sass is kind of complex in similar respect to…
  • Javascript is the slippery language which has taken me my whole career to know. I 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, until…
  • ES6 updated modern Javascript and helps to flip imperative to declarative. Modern JS makes it easier to consume and manipulate data. While most freelance and recent full-time projects before 2019 were ES5, I moved into a “esNext” world regularly as I more often use…
  • React.js, all the rage for company projects today, is where I spend more than half my coding time. 2019 was mostly using Gatsby using Hooks with a little GraphQL, and 2022 looks like it could be a Remix.run year
  • WordPress is still the primary way I start and complete personal projects. 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
  • Computer networking – I spent 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 file, 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…

  • Figma is a recent addition to this list. It’s built as a first class citizen to support component based layouts and continues to show very strongly for building systematic designs. Coupling Figma with Utopia.fyi gives designers a solid foundation for new web projects.
  • Modern Javascript 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.
  • Functional programming and Object Orient Programming. Simple DOM manipulations using jQuery never challenged me to think in terms of OOP or FP. We can never stop leveling 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 and 8
  • 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, Homestead, or Lando. 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
  • SSG is hip. Remix.run is compelling! I’ve previously used Gatsby on a project, I installed Eleventy once to see what happens. Astro is interesting.
  • PWA are what I hope to get more 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
  • TypeScript is something I picked up in a previous project. I don’t know if I always enjoy using TypeScript, but it was pretty valuable in thinking differently about the javascript I write and how to define types.
  • AWS is beyond the scope of front-end work I enjoy, but I have enough AWS experience to understand the basics of what it takes to use the system. 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. That said, so many digital products now use AWS so it’s a must know to some degree.
  • 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. 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. If I have to create a new API from scratch, I think there are enough tools out there to figure this out better.
  • 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

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]
  • 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
  • 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
  • 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 C#, ASP, or C++ for Windows. So I’m not really useful for native app development unless it involves something more visual