Invisible Barriers That Prevent You From Learning Web Development and How to Break Through Them
Tags: css, grid, webdev, frontend
Published: 2020-03-14 18:30:46

![](https://cdn-images-1.medium.com/max/800/1*IMfayU8KwXkZxJHV1wPn8Q.png)

### **The Great** Filter of web development! and how to break through it?

**The hidden cost of frustrating, demotivating web development MOOCs!**

For years, I’ve tried studying web development through various online courses.
And every time I ended up **frustrated and demotivated for months** before
trying again! So I know the struggle and the ubiquitous
[meme](https://media1.tenor.com/images/614c9b4639a2588383f47e138177da81/tenor.gif).

Then, I started building full responsive clones for great web-pages like:<br>
[Youtube](https://nazeh.github.io/youtube_video_player_page/),
[TNW](https://nazeh.github.io/the_next_web_responsive_clone/),
[Behance](https://nazeh.github.io/grid-framework-behance-clone/),
[Newsweek](https://nazeh.github.io/newsweek_clone_bootstrap/), and more in less
than 4 weeks!

**So what happened? **out of the necessity of having a [coding
partner](https://microverse.org/), I researched the state of CSS in 2019. It’s
then that I realized that MOOCs as great as they are, can be gatekeepers!

![](https://cdn-images-1.medium.com/max/800/1*jwNrHrVk7iI_hH0w5LQiBQ.png)
<span class="figcaption_hack">4+ fully responsive projects in 4 weeks</span>

So in this article, I will discuss that and answer the following questions:

1.  **WHY** are discouraging MOOCs dangerous?
1.  **HOW** are MOOCs discouraging?
1.  **WHAT** can you do about it?

### Why

#### **The world needs more software developers.**

Even with programmers supply doubling every 5 years, demand is growing even
faster!

> “Software is eating the world” — Marc Andreessen Co-founder of Netscape

Every industry is integrating Software development at every step. From hiring
management to supply chain to advertisement and sales, Software is essential.
Not mentioning design, optimization, and manufacturing of their products. It’s a
necessity to stay competitive.

You may argue that there are rather too many programmers instead, and only good
ones are scarce. so how would more non-CS graduates help solve that problem?

Well, I am well aware of the difference between a coder and a software
developer, and I strive to be the later.

I am not arguing that we don’t need improvement in quality. but quantity has
quality on its own and you can’t get more of the later without starting with
more of the former!

But don’t take my word for it, take it from those “[Leaders and
trendsetters”](https://code.org/quotes)!

And I hope that more [financial
independence](https://en.wikipedia.org/wiki/Financial_independence) can help us
face [dangerous
stagnation](https://etherealvalue.wordpress.com/2017/03/21/secular-stagnation/).

#### Front-end is the gate!

What does any of that have to do with CSS for example? It’s not even a
programming language! OK, it [can
encode](https://stackoverflow.com/questions/2497146/is-css-turing-complete/5239256#5239256)
[Rule 110](http://en.wikipedia.org/wiki/Rule_110) but come on, it’s a
style-sheet.

Indeed Front-end development is more about “**UX Engineering**” as [some
suggest](https://css-tricks.com/the-great-divide/) to name it. And it is
possible to have a career where you stay in that lane and never become a
programmer.

Nonetheless, Front-end development is the most approachable for anyone with no
CS background. It’s also the most accessible market.

HTML & CSS will always be the first thing anyone tries once the idea of career
shift come through their minds. That also explains why JavaScript is the first
language most people learn!

And it is actually a good first step, it is visual rather than logical or
mathematical. You will often hear people joke about how bad at math they are,
but they take pride in their taste and style.

So it’s rather disappointing when they feel discouraged and repelled by a
style-sheet. And it is very easy to **mistake Confusing with Complex**.

In most cases all around the world career shift is hard and risky. getting a job
or starting making money through freelance can be crucial. Deterring someone at
this early stage can mean the end of their Tech pursuit.

### How

> Remember: Reddit is only an Alt-Tab away! -Quincy Larson

While preparing to write this article, I watched a
[talk](https://www.youtube.com/watch?time_continue=127&v=Ef07Hhoc5KE) by Quincy
Larson. In it, he talked about the fight for readers attention while writing a
technical article. But it also applies for self-learn platforms as well.

> Readers are looking for an excuse to close your article! -Quincy Larson

Yes, self-teaching coders, should have more grit and discipline. But still,
career shift is scary, and their defense systems are looking for reasons to give
up. So it baffles me how FreeCodeCamp curriculum looks like :

![](https://cdn-images-1.medium.com/max/800/1*Rnh9j84frokupJLTqlH0mA.png)
<span class="figcaption_hack">Not Even the full list!</span>

Days and days of learning small snippets of very basic HTML and CSS! And for
some reason, you still didn’t learn about any recent development like Flexbox or
CSS-grid! Not mentioning that you have nothing to show for it, to ease your
self-doubt.

#### **Here you can notice several tendencies:**

* **Mistaking old as fundamental, and new as advance!**

I can’t see an upside in delaying learning **Flexbox** and **CSS-Grid **and -as
far as I can remember- even **Box-sizing**!

Why force students to struggle through outdated tools? Praying day in and day
out that everything will make sense somehow!

I would say the same about dismissing pre-compilers as a tool for advanced
users. In fact, it has a very shallow learning curve and can only make the
student feel smarter and more in control. [Sass Flow
Control](https://sass-lang.com/documentation/at-rules/control) is also a very
welcome boost to student’s confidence.

* **Under-appreciating the importance of early achievements!**

The longer a student spends going through infinite baby-steps, the worse.
Building real-world projects boost their confidence, enhances learning, and
cements concepts.

There are only so many abstract concepts you can force your brain to memorize
before it repels. **Jumping into coding and researching on a need to know basis,
is more efficient in the long run**.

Those projects have to be real websites.** Students need to build something they
can take pride in**, and show off.

### What

Enough with the rant, off to a more practical note, here is a simple guide to
what worked for me:

#### Goal

This guide aims to be an alternative approach for learning Responsive web
design. One that takes the student’s urgent need for a sense of progression into
account.

#### Method

**- Learn on a need to know basis.**

* **Project-based** learning helps you to know *what you don’t know*, and *why you
need to know it*.
* As counter-intuitive as it sounds: **Resist the temptation to learn more**
tricks. Master the few you got until you have to learn new ones to get the job
done.

#### **- Maintain the Flow**

Your momentum is a priority, be vigilant to the time you spend on a task, and
omit anything that slows you down.

* **Skim read** <br> when you need to learn a new tool or review a resource. Learn
to spot the keywords and reach for conclusions. Take note of the resource and
review it later if you need an in-depth study.
* **Write faster.** <br> Learning to write faster with the least mistakes is
invaluable, take time to improve that. it allows you to try things faster, and
push through your chocking points.
* **Customize and automate** <br> As you go, notice all the repetitive tasks and
see if there is a way to save time on it. search for cheatsheets, hotkeys,
custom settings, or automation opportunities.

#### **- Always Cheat**!

> Win if you can lose if you must but always cheat!* -Jesse Ventura*

Good engineers are lazy. Cut corners to achieve much more than you could on your
own, as long as it’s outside the scope of what you are trying to learn.

* **Clone pretty websites! **<br> I chose to clone
[Behance](https://nazeh.github.io/grid-framework-behance-clone/) because I know
it already looks great on its own.
* **Use great art to populate your clones.**In my [Youtube
Clone](https://nazeh.github.io/youtube_video_player_page/), I used Kurzgesagt’s
videos because of their amazing visuals.
* **Don’t write Content.** For content-heavy webpage, copy all content elements to
your HTML file. You can then use RegExp to improve the semantics and apply your
own classes.
* **Go the extra steps with ready code snippets.** It was not possible to
replicate every behavior of
[Newsweek](https://nazeh.github.io/newsweek_clone_bootstrap/) without JS. I
wasn’t trying to learn JS at that point so I excused my self to copy code from
Stackoverflow and change it for my needs.

#### - Pixel Perfect

Yes, you can cheat and cut corners and still be a perfectionist.<br> The goal is
to make an exact replica, indistinguishable from the original.<br> Your job is
to make a vertical slice of a full website, so responsiveness is not optional.

#### Getting started

I recommend [VScode](https://code.visualstudio.com/) as your text editor and any
[Chromium browser](https://www.google.com/chrome/) for best developer tools.

Then you will need to install a few extensions for VScode to make your life
easier:

* [Beautify](https://marketplace.visualstudio.com/items?itemName=HookyQR.beautify)
will help you format your HTML, CSS, Sass and JS files.
* [Stylelint](https://marketplace.visualstudio.com/items?itemName=shinnn.stylelint)
will help you write better CSS.
* [Live
server](https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer)
will enable you to examine your changes whenever you save it.
* [Live Sass
Compiler](https://marketplace.visualstudio.com/items?itemName=ritwickdey.live-sass)
will recompile your Sass files to CSS whenever you save as sass file.

You can also install the [Web Development Essentials Extension
Pack.](https://marketplace.visualstudio.com/items?itemName=jamesqquick.web-development-essentials-extension-pack)
But I would rather install extensions as the need arise, but take a look
nonetheless.

#### Start Building

Once you choose a webpage to clone, then this general process should be a good
start:

* **Set up your project directory.**[Set-up
Git](https://rogerdudler.github.io/git-guide/), and organize your Folder
Structure:

    | 
      index.html
      | 
    | 
    icon.png
        | 
          main.css
          main.scss

* **Start your index.html.**Start writing ‘doc’ and VScode should suggest the
following:

    <html lang="en">

    <head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <meta http-equiv="X-UA-Compatible" content="ie=edge">

    <title>Document</title>

    </head>

    <body>

    </body>

    </html>

As you can see [Emmet
abbreviations](https://code.visualstudio.com/docs/editor/emmet) are super useful
and you should learn more about it.<br> Now link your stylesheet, add your title
and icon:

    ...
    <meta http-equiv="X-UA-Compatible" content="ie=edge">




    </head>
    ...

Start using Live server and Sass Live compiler to examine changes going forward.

* **Inspect and analyze** [Toggle Device
Toolbar](https://developers.google.com/web/tools/chrome-devtools/device-mode) in
the original page to inspect its layout in the mobile version. Mobile-first
approach means fewer positioning needed at first, and incremental changes
later.<br> You might need to show media queries as well.<br> Analyze the
structure of the page. Schematic diagram would help as well.

![](https://cdn-images-1.medium.com/max/800/1*oRagFqqAoAOJNck3a8numg.jpeg)
<span class="figcaption_hack">[https://www.ecurtisdesigns.com/web-layout-design/](https://www.ecurtisdesigns.com/web-layout-design/)</span>

* **Build the Layout with HTML5 semantic.**Start laying out the general structure
using [HTML5
elements](https://codepen.io/mi-lee/post/an-overview-of-html5-semantics).

![](https://cdn-images-1.medium.com/max/800/1*sLTmWUT0Wr6gg94OgIfWnA.jpeg)
<span class="figcaption_hack">[https://codepen.io/mi-lee/post/an-overview-of-html5-semantics](https://codepen.io/mi-lee/post/an-overview-of-html5-semantics)</span>

* **Start populating elements.** For this stage, [CSS
Flexbox](https://css-tricks.com/snippets/css/a-guide-to-flexbox/)** **should be
all you need. It will be most handy for justifying and aligning each element’s
content.
* **Expand and position.**Start expanding the width of your page, and set up a new
[media query](https://www.w3schools.com/cssref/css3_pr_mediaquery.asp) for each
breaking point. You will also need to have more control over your layout so
start using
[CSS-Grid](https://css-tricks.com/snippets/css/complete-guide-grid/). Also,
check out [this
article](https://medium.com/@js_tut/css-grid-the-swiss-army-knife-for-cutting-website-and-application-layouts-c1bd7a6b4e56).

    @media only screen and (min-width: 576px) {
     ...
    }

* **Start populating content.**Copy Images, paragraphs and other content from the
original HTML.<br> Use VScode’s [RegExp](https://regexr.com/) in the [find and
replace](https://code.visualstudio.com/docs/editor/codebasics#_advanced-find-and-replace-options)
to improve the semantics and apply your own classes to the copied HTML.<br> This
might seem complicated but it is a powerful tool to avoid entering tens of
content.<br> You can experiment with it and see the example below
[here](http://regexr.com/4lrea)**.**

     
    <div class="old-classes" data-event-categ...>
      <Some content>
      </Some content>
      <Some content>
      </Some content>
    </div>

    <div class=".+".+>\n((.+\n)+)<\/div>
    <article class="new-classes">\n$1</article>

    <article class="new-classes">
      <Some content>
      </Some content>
      <Some content>
      </Some content>
    </article>

* **Kill the snakes** Congratulations, you opened Pandora’s box. many problems
will be evident at once.<br> Don’t panic, this is the plan all along, to
discover what you need to learn, now start searching for answers. one problem at
a time.<br> You already noticed that [CSS Tricks](https://css-tricks.com/) will
be your best friend.

Rense and repeat until you have a perfect page!

### Conclusion

Front-end development is and will stay for a long time every newbie’s first
contact with IT. and it’s currently a gatekeeper rather than an enabler. I can’t
guarantee that the guide I offered will work for everyone. but it is worth
trying If you tried once and failed. Jump into it, no hello world anymore, find
a page that looks great and clone it.

Let me know what do you think!