DEV Community

Progressing from a beginner to intermediate developer

Charlie Joel on September 20, 2021

So, you're not a complete beginner anymore: You've built a few webpages, learned the basics of HTML, CSS and JS, and perhaps you've landed a job as...
Collapse
 
fjones profile image
FJones

Learn Regex <3

But: Don't parse HTML with it! Learn Regex with things like validation rules or unit formatting (yes, toLocaleString exists, but give it a shot anyway!). Avoid backreferences and lookaheads, focus on the basics. Regex is incredibly versatile (and often a building block for higher-level parsing and evaluation), but the common example of matching some HTML or other is really bad. Regex (as the full name suggests) is intended for regular lexical parsing. HTML (due to its nesting rules, primarily) is not regular, it's context-free (with some caveats) and as such does not lend itself too well to evaluation by regex.

Collapse
 
rbauhn profile image
Robin Bauhn

My favorite quote:
Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.
Not sure how accurate it is, but it is funny

Collapse
 
fjones profile image
FJones • Edited

Regex is great fun and hugely intuitive - once you get it. Until then, that is very accurate. It's important to know the limitations (and boy am I happy to set up a small state machine instead for a problem that exceeds Regex), and it's important to understand that the basics are all you need.

PCRE et al have a large assortment of additional features that, ultimately, just aren't necessary. If a problem can't be solved with .+()?|[]^$, it's the wrong tool and you're setting yourself up for pain. So yeah, trying to make Regex work for a given problem is usually a problem in itself - unless you already have the solution (at least the theory) in mind.

One of the most common use cases I have found for Regex over the years is just rearranging CSV data. Statistics dumps from product management that they need rearranged, filtered, or turned into database queries. grep and sed on my local shell have seen more of my Regex than any commit or build.

Collapse
 
kabohajeanmark profile image
Kaboha Jean Mark

This is a really great article. Thank you so much for demystifying the journey from a beginner to intermediate Front End Web Developer.

I like how you emphasized the initial focus on fundamentals.

"We begin with the roots", 100 Eyes in Marco Polo as he taught Prince Jingum martial arts.

I was also especially intrigued with how you focused on the business side of thiings and stakeholder management. That is of utmost importance. Thanks again :)

Collapse
 
amn3s1a2018 profile image
Amn3s1a2018

jQuery or not jQuery, that's the question! It's on second floor in ur pyramid, and you say we should avoid it. I think if someone never used jQuery (or lodash), it's better to learn ES6/7 (or TypeScript) instead, new stuff in JS are cool, but there are still missing pieces, small things which libraries do better, so if they are already in your toolbox, don't throw them away.

Collapse
 
charliejoel profile image
Charlie Joel

jQuery absolutely has its uses - however, it's only sugarcoating base JavaScript. That's why I think it's more important to focus on the basics first, but there's nothing wrong with using it if the situation calls for it.

Collapse
 
micahlt profile image
Micah Lindley

But there's no reason to load all of jQuery anymore if you can just use ES6 JavaScript or Typescript. Using $('#el') is just a sugarcoating of document.querySelector, so really jQuery just adds bloat to a site unless you're using plugins.

Thread Thread
 
charliejoel profile image
Charlie Joel

That's a good point and I agree with you. It can still be useful to know as you may get dropped into a project that uses jQuery and you need to be able to work with it.
That said, jQuery seems to have been phased out a lot in general recently.

Thread Thread
 
micahlt profile image
Micah Lindley

That's very true - and jQuery is also (unfortunately) still used as a base for Wordpress sites which run more than half the Internet. As ES6 gets even closer to 99% browser support globally, I'm hoping that we'll see the complete eradication of jQuery.

Collapse
 
brunomontas profile image
Bruno Silva

This is exactly where I am now.
I can build a website with Next.js for example but I'm unsure of how to handle it for clients. For example, a client asks me for a personal blog, where do I host it? Should I use CMS so he's the one managing the content? What CMS is user-friendly for simple clients?... I'm lost with this process of where to host what, and at what cost.

Collapse
 
charliejoel profile image
Charlie Joel

Hi, thanks for your comment!
It sounds like a managed hosting plan would be good for your case - there's lots of companies offering this so search around for a good price. You could host it yourself or do unmanaged but it's a lot more work to learn how to do that.
I'm a fan of using WordPress for simple blogs as that's what it was originally made for. You can use the WP REST API to feed data to Next.js.
To have the front and backend on the same server you'll want to be able to create subdomains with your hosting provider so you'll need to make sure they can do that. Usually you'll be paying ~£5 a month, but if you have an unmanaged hosting plan (basically just a terminal and FTP) you can host as many websites and domains as it can handle. You probably won't need a powerful server for a few websites so the cheapest option is usually fine.
That's not much detail, but I hope it points you in the right direction! Good luck 😸

Collapse
 
brunomontas profile image
Bruno Silva

Since in the article you mention "managing your won server" as a step to progress from a beginner to intermediate developer, I'm very interested in that solution. Currently, I'm building a blog for a friend who is a researcher and an online portfolio for a friend who is an artist. I was thinking of hosting both of them on the same server, and creating for each some sort of back-office where they can manage their content.
Could I set up this in Docker for example?
thanks for your last reply, I feel like it gave me a direction.

Thread Thread
 
charliejoel profile image
Charlie Joel

You might be able to do that in docker, I'm not actually sure - the way I'm doing it on a project I'm working on is using nginx to create subdomains. If you just Google 'multiple subdomains with nginx' you should find something. Essentially you'll just have different folders for different websites so you can add your friends' domains for the frontend and then subdomains for the backends, e.g. api.your-website.com

Collapse
 
peter_brown_cc2f497ac1175 profile image
Peter Brown

Learn data structures and when to use which. Learn how to profile your code. Learn algorithm design. Learn SQL.

Collapse
 
mitaosi profile image
Qing(Jim) Lin

Personally, I think front-end developers actually don't have much opportunities to apply these data structures and algorithms knowledges during daily work. But nowdays almost every single IT employer require candidates a leetcode style coding test, so to get a job, it is inevitable to be good with solving such kind of coding tests.

Collapse
 
therealmecoy profile image
realMecoy🖥🖲

Great article dude👍

Collapse
 
obaino82 profile image
Obaino82

Fascinating 👌

Collapse
 
iconicspidey profile image
Big Spidey🕷️

thanks for this

Collapse
 
irfan profile image
irfan

J Query is legend ;)

Collapse
 
tmayank860 profile image
MAYANK TYAGI

What an insightful article you have wrote.
I really like the way you emphasize on making the fundamental strong and only then moving on learning frameworks or libraries.
Thanx for sharing!!!

Collapse
 
alive2020 profile image
Ice Calee

Thank you ~ this is a great article, the exact things that I need to improve right now.

Collapse
 
henryhkb profile image
Henry

Awesome post but the thing is if you have to cut corners just to deliver to a client you have to let them understand what is actually going into the project.

Collapse
 
liyanabrown profile image
Liyana Brown

Good share.

Some comments have been hidden by the post's author - find out more