Who is Jesse Janowiak?
I have been a web developer since the year 2000. When I started, I had to make sure my sites supported Netscape Navigator 4.7.
Today, I build modern, performant, and accessible sites both independently and with my colleagues at NewCity*.
The jano[dev] philosophy
jano[dev] is not based on specific languages, frameworks, or processes. A good developer can learn how to use any of those, especially if they surround themselves with other good developers. Instead, jano[dev] is a set of principles that I have learned are always applicable in web every web development project, regardless of the tools being used.
As tempting as it can be to spend weeks in isolation followed by a dramatic reveal of a beautiful finished product, years of experience have taught me that it usually ends in disaster. There is no substitute for quickly building something functional and showing it to another person. Whether that person is a client, a co-worker, or a test subject, early feedback is critical to the long term success of any project. There are a lot of buzzwords that people use to describe this idea — “Agile development,” “Minimum Viable Product,” and “Rapid Prototyping” come to mind — but you don't need jargon to understand that you can’t test something that hasn't been built.
Component-based design systems
Websites can be complex. Even the simplest site is much easier to build and maintain if you plan, design, and code with reusable components. The specific tools I use depend on the project — it could be React components, Twig partials, or even just well-structured HTML — but I always break my page designs down into manageable chunks before I dive into the coding of a site. For large sites with multiple page templates and interactive features, I like to document of all of the site’s components in a library using a tool like Fractal or Pattern Lab.
Automated testing and deployment
When it comes to fixing — and preventing — bugs on a site, I'll take all the help I can get! I'm always happy to let computers stop me from making a fool of myself. That's why I use linters like ESLint and PHPCS while coding; run automated tests with Jest, Aria, or PHPUnit; and even add those tests directly into my continuous deployment pipeline to stop any last-minute bugs from making it onto a live site.