Frontend – University Myths

Frontend – what is it? Why care?

According to Wikipedia: ‘Front-end web development is the practice of converting data to a graphical interface, through the use of HTML, CSS, and JavaScript, so that users can view and interact with that data.’

Remember those days when HTML, CSS, and jQuery were sufficient for most young and green front-end developers? Only a little bit of JavaScript with good jQuery knowledge, combined with some PHP basics was pretty much enough. Remember when CSS, JS, and HTML were all supposed to be in separate files? It’s all in the same file now.

Remember when HTML was just for the web? Nope, you could easily be asked to develop a desktop app with it as well. The frontend has changed dramatically in the past 6–8 years.

Web standards continuously change, every month brings something new, someone unveils a new tool that resolves all problems, and so on, and so on. Ever heard of Svelte? One year ago, nobody knew about it – today, according to the state of JS 2020 it has the highest interest of all front-end technologies, surpassing even Vue.js and React.JS – the language that was mainly created to support web browsers, now can be used even for solving hardware problems.

JavaScript renaissance – some can say. Not according to universities, at least here in Bulgaria.

University front-end myths!

Myth #1: Front-end developers are not real programmers. Everyone can become a front-end developer.

I’ve heard this a couple of times from fellow students. Most of them think that front-end development is writing only plain HTML and some CSS and a small amount of JS. Names like code monkeys come up. Others see front-end development, as the last option, if nothing else (programming related) goes well.  Things I often hear when it comes to front-end development:

– If I don’t succeed to learn C++ here at the university, I will probably become a front-end developer.

– I can always go to an academy and become a web developer.

– I don’t want to be a UI designer.

Of course, this is not true. The web is moving forward and the web that the university remembers has evolved — for the better. With technologies like React, Vue, Angular, front-end development is quite challenging and interesting.

Myth #2: There’s no computer science in frontend.

Not true. When new features are not part of the sprint developers spend most of their time fixing bugs and optimizing the existing code. Computation and memory resources are precious, given that most applications have to run on a wide range of devices. Developers often have to:

  • Carefully choose the most efficient data structures
  • Write side effect free (pure) functions
  • Think about reducing any IO that might cause the application to slow down
  • Always follow the SOLID principles and write clean code
  • Think about future code extensibility

University computer science is a great bonus, knowing it can only help. And it helps with optimizations if the application is particularly heavy and has to run on mobile phones.

Myth #3: There is s no logic in frontend – it’s only HTML and CSS.

This is coming from fellow colleagues, who study mainly C++.

Couldn’t disagree more. These days the typical frontend has huge amounts of formerly back-end functionality, that is now exported to the frontend. We have persistent storage in the form of LocalStorage, indexDB for a client-side database, service workers for hijacking API requests and servicing them right on the client, webworkers for additional computational needs, websockets for real-time event based bidirectional communication, and the list goes on.

There is more to do on the frontend than ever, and most of these things involve solving complex challenges, both from an infrastructure and programming perspective and needless to say, this is apart from the beautiful application that people will use, structured and styled in HTML and CSS respectively, that is also part of the frontend.

Myth #4: CSS is too difficult. JavaScript is a broken mess.

People usually don’t like CSS and find it hard, missing the logic of a standard programming language, error-prone, even not related to programming. None of that is true in modern browsers. We have auto prefixers, polyfills, and things that minimize the need for writing browser specific CSS. We spend less time wrestling with tools and more time solving the actual problem of designing the interface.

Then there are CSS preprocessors that add loops, variables, and control statements to vanilla CSS to make it more programming-like and easy to write and maintain. There is also this new shift in the way we write CSS in JavaScript itself and there are libraries like styled-components that assist with that.

And no, JavaScript is not broken. It’s easy to mess things up as it is a very ‘forgiving’ language. One can easily shoot himself in the foot if not careful. This is valid for all programming languages. The good thing is there are tons of libraries that assist with immutable data structures, code linting, following functional programming paradigms to enforce side-effect, free code, and so on. In my opinion, the only thing needed to master every programming language, (besides its perks) is having good code writing practices.

Final words

The problem is that front-end development is not something one can get a degree in. People can get a degree in computer science where they are taught to program in C++ or Java, with HTML, CSS, and JS being treated as second-class citizens. This can lead to some funny misunderstandings. But In the end, it will always come down to the person’s motivation.

***

Tanya Zheleva is a student at Sofia University. After a successful internship at Grafixoft, she was invited to accept the position of a software engineer. She loves physics and sports and is interested in React/Redux technologies.