Learning By Building
Tags: programming
Published: 2020-05-12 12:06:14

---
title: Learning By Building
published: true
date: 2020-05-12 11:12:40 UTC
tags: programming
canonical_url: 
---

Almost every developer will tell you that the best way to learn programming and be good at it is to build everyday, build a ton of stuff. I’ve read advice from other well experienced developers and this is pretty much their conclusion. You have to build! and I agree.

I recently discovered [front-end mentor](https://frontendmentor.io) and I immediately got hooked ![😍](https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f60d.png)… over the past few days I’ve been taking coding challenges (I’ve successfully completed 6 so far) all of which are completed in **HTML, CSS & JAVASCRIPT** (well, some of them are just html and css). I know its only been about a week since I began but I decided to document what I’m learning from this anyway so uhhhmm, yeah…. this blog is about that. ![🙂](https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f642.png)

Before I discovered [font-end mentor](https://frontendmentor.io) I’d basically just browse for challenges and maybe construct ideas on what I could build based on my current skillset but there’s a problem with that… **I wasn’t getting specific detailed instructions**. Yes this may sound strange but hang on, let me explain. Because most of what I was doing prior to taking challenges was coming from me and nobody was telling me what to do, it wasn’t as challenging, most of what I was doing would end up feeling like the same thing over and over because its coming from one point of view, but with challenges from [font-end mentor](https://frontendmentor.io) its different: You’re given instructions on how a layout should (what technique you use is completely up to you as long as ALL of the desired outcomes are met). So here’s what I’ve learnt so far

- **Responsive design**
- **Design flow**
- **Avoiding redundancy**

## Responsive design

I’m quite familiar with the whole concept of responsive design. The goal is simple **Your site must be optimized for viewing and navigation on every device** but I was missing the details of it like… Whats the difference between **(min)** and **(max)**

```
@media screen and (min-width: 600px){
     /* Apply this css until the screen is LARGER than 600px */
}
@media screen and (max-width: 600px){
     /* Apply this css until the screen is SMALLER than 600px */
}
```

There’s also **media types** in **media queries**

```
@media screen and (){ /* this css applies to SCREENS */ }
@media print and (){ /* this css applies to PRINTERS */ }
@media speech and (){ /* this css SPEECH rule is for screen readers */ }
@media all and (){ /* this css applies to ALL devices */ }
```

I now understand these ![😎](https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f60e.png), there’s also **media features** and I’m getting into those so… I won’t explain them here.

## Design flow

Design flow is about keeping the look and function of your application consistent. This ranges from picking the right colors, font styles, font sizes, backgrounds, shadows, and even how elements respond to user actions. Here’s a landing page from one of my challenges:

> These challenges from [@frontendmentor](https://twitter.com/frontendmentor?ref_src=twsrc%5Etfw) are cool, I'm enjoying them, Here's an awesome DARK THEME [#HTML5](https://twitter.com/hashtag/HTML5?src=hash&ref_src=twsrc%5Etfw) [#CSS](https://twitter.com/hashtag/CSS?src=hash&ref_src=twsrc%5Etfw) landing page I made.  
>   
> here: [https://t.co/iw788y7cDx](https://t.co/iw788y7cDx)[#CodeNewbie](https://twitter.com/hashtag/CodeNewbie?src=hash&ref_src=twsrc%5Etfw)[#CodeNewbies](https://twitter.com/hashtag/CodeNewbies?src=hash&ref_src=twsrc%5Etfw) [#100DaysOfCode](https://twitter.com/hashtag/100DaysOfCode?src=hash&ref_src=twsrc%5Etfw) [#freeCodeCamp](https://twitter.com/hashtag/freeCodeCamp?src=hash&ref_src=twsrc%5Etfw) [#css2020](https://twitter.com/hashtag/css2020?src=hash&ref_src=twsrc%5Etfw) [#webdev](https://twitter.com/hashtag/webdev?src=hash&ref_src=twsrc%5Etfw)
> 
> — N D U D U Z O (@nduduzo\_\_) [May 11, 2020](https://twitter.com/nduduzo__/status/1259927151689764865?ref_src=twsrc%5Etfw)

<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<figcaption><a href="https://dark-theme-landing-page.now.sh/">MY DARK THEME WEBSITE CHALLENGE</a></figcaption>

Also, take a look at [this layout](https://four-card-feature-ashy.now.sh/)I built. Notice the consistency and responsiveness to confirm what I’ve saying above. ![👆](https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f446.png)

## Avoiding redundancy

Okay i’ll admit, I’m not yet very good at this but I’m trying to get better. The challenges I’m taking come with a [README FILE](https://www.makeareadme.com/) and a Style guide letting you know what fonts to use and their sizes respectively. The way I approach almost every challenge is start by writing the HTML then going through the style guide to correctly format everything. This saves me time because I get an understanding of what should look the same and what should not (again… I’m not the best at this ![😅](https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f605.png)). You can take a look at [my github repos](https://github.com/lifeoncode?tab=repositories) for my source code to confirm.

Learning by doing is the best way to learn and I have confirmed it. Going forward I’m challenging myself further with more coding challenges everyday with the purpose of growing as a developer. I hope to do more complex challenges in the near future, for now though, I want to solidify my CSS so i’ll be doing more **css focused** challenges while learning **Javascript**. If you read my [previous blog](https://dev.to/nduduzo__/getting-good-at-programming-takes-time-29o2-temp-slug-4240514) you might remember I mentioned setting up a [Youtube channel](https://www.youtube.com/channel/UCbseQCLNG53nzB2qY_0thYw) to upload my coding sessions. Thats still happening, I’ve just been having trouble finding a very light, good performing software for recording my sessions, I tried **[OBS](https://obsproject.com/)** (full disclosure… OBS is a great application!) but it lags on my machine ![😢](https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f622.png)… I don’t know maybe I need to do some tinkering so yeah…

If you wanna join me you can take the coding challenges [here](https://frontendmentor.io). See all of my challenges [here](https://www.frontendmentor.io/profile/lifeoncode) or [follow me](https://twitter.com/nduduzo__) on twitter for more.

Alright cool. ![✌](https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/270c.png)