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. It’s too bad that my CMS of choice relies so heavily on jQuery today, but I still choose…
  • 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. I’ve had a lot of recent exposure to consuming APIs with newer array methods and am learning how to move this data around with the syntactic sugar given to ES6 in things like classes, arrow functions and more. While most freelance and recent full-time projects are usually ES5, I’m moving into a “JS Next” world regularly as I come up to speed with…
  • React.js, all the rage for most modern companies today, is my latest learn. I use personal projects to give me a better understanding of how modern Javascript is used inside of React. 2019 was mostly using Gatsby with some Redux and a little GraphQL.
  • 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