Code Symbol

Tobias Vetter

I am a web developer from Heidelberg (Germany) with specialization in front-end, working at chocoBRAIN. I have been working on the web professionally since 2015 and unprofessionally since the mid of the 2000s, when I made my first websites and internet forums.

Basic and Fast Building Blocks of the Web

HTML 5, CSS 3, and JavaScript ES5 are the basic building blocks of today's Web.

For that reason I mastered those first when I became a Web developer.

With Bootstrap and jQuery one is still able to create a good looking, professional website or interface quickly. With version 4 Bootstrap has been implementing modern CSS techniques, but I feel that jQuery has outlived its purpose and that it is time to move on.

HTML 5 CSS 3 JS ES5 jQuery 3 Bootstrap 3/4

The Interactive Web

JS ES6/2015+ Lodash Vue.js TypeScript Elm

The modern Web is not a network of linked and styled hypertext documents anymore, but it is a network of applications. Web applications create a demand for a level of interactivity and possibilities that were hard and time consuming to create with JavaScript ES5 and jQuery. Newer versions of JavaScript and a new ecosystem of libraries and frameworks solve these problems. However, a lot is still in the flow.

At the moment I spend most of my programming time - productive and learning - with modern JavaScript. I very much like the possibilities and the vibrant community. My goto libraries for modern web applications are Vue.js, Axios, and Lodash at the moment, simply because they solve their respective tasks in a very clean and fast way.

However, I see problems, too. With the need for more and more complex JavaScript the demands on the language are also higher and I do not feel that ES6/2015+ addresses all the issues JavaScript has. For that reason I am interested in transpile-to-JavaScript languages.

I have found that TypeScript is quite easy to implement in a JavaScript environment while allowing to scale much better. This is due to the fact that TypeScript is a superset to JavaScript, adding the needed features to scale. This, however, also means that TypeScript inherits a lot of JavaScript’s problems. Still, I would recommend it for big JavaScript applications, because the time investment is very much worth the scalability and features.

Elm, on the other hand, does not have this problem and offers an excellent developer experience while creating very stable applications. However, at least at the moment, Elm suffers from the problem that the interoperability with the JavaScript ecosystem is very complicated.

A more stylish CSS

With the demand for more complex design cases and better user experience, the need to write the CSS for it quicker while having it more extensible and flexible at the same time arose. After some time Sass/SCSS became the answer to this problem. However, PostCSS is so performant, powerfull, and integratable in modern front-end stacks that it really has the potential to dethrone Sass.

With the rise of modern, component based JavaScript libraries and frameworks it became very attractive to write your CSS in a very fine grained manner directly within the component, maybe even in JavaScript. In many cases even inline style has become a thing again. This however leads to styling that is hard to write and maintain. Not to mentioning missing some features of CSS.

More modular and modern CSS frameworks like Bulma were more useful here than more monolithic ones like Bootstrap, but still were not flexible enough. It seems like Utility-First frameworks like Tailwind CSS can deliver here, because they are composable, predictable, and therefore easier to maintain and to scale.

Sass/SCSS PostCSS Bulma Tailwind CSS

Static is Still Usefull

Jekyll Middleman Nuxt.js

One might think that static Web pages are not relevant anymore, because of the very dynamic and interactive nature of the modern Web. However, this is not true, due to the fact how accessible static Web pages are for humans and (search) bots alike. At least if you want your Web pages to have a good SEO, you still will need static pages. But we developers do not want to miss the power and comfort of programmatically created Web pages. Static Page Generators come to the rescue in this.

In the past I worked a lot with Jekyll and Middleman (both written in and used with Ruby) in that regard. However, doing so much with the modern JavaScript stack and liking Vue.js I see myself changing to Nuxt.js at the moment, which offers - with some caveats - the full power of the Vue.js ecosystem.

The Back End Side of Things

Being a front end developer by definition means that my area of expertise is not in the back end. However, I take some interest in and worked often with Ruby and Ruby on Rails - mostly on the receiving part on the front end.

I like the programmer happiness and object oriented direction of Ruby as well as the strong mentality for clean code and testing within its community. Ruby on Rails’ huge set of functionality coupled with the convention over configuration paradigm seems very attractive.

Ruby Ruby on Rails

Other Stuff

git GitHub BitBucket JIRA G Suite Software Design Technological Leadership

Version control with Git became the standard in the last years for a good reason. Since I use it, it never let me down and it should be implemented even in small projects. However, I still have not mastered in the way I feel I should.

For organisational purposes I would argue that in a small project an issue system like those integrated in GitHub or BitBucket is enough. However, if the project gets bigger - may it be in terms of coworkers or product size - a real ticket system like JIRA should be used. BitBucket and JIRA tend to have some annoyances, but GitHub always served me very well.

Mails, calendars, office documents and files can be shared among team members very easily with G Suite.

As I started to create and lead bigger software projects I have begun to deepen my knowledge in the topics of software design and technological leadership of small teams.