DEV Community

Cover image for Demystifying programming
Allan N Jeremy
Allan N Jeremy

Posted on

Demystifying programming

Introduction

Hello there. Been eons since I posted here. Anyway, about 5 years ago I relatively naively made a video trying to introduce people to programming. No specific programming languages, just the fundamentals (which I believe are not taught nearly enough).

What I did not expect was how well the video performed.

Just one problem

Okay, more than one problem, that just sounded way cooler as a subtitle in my head.

  • The audio was terrible. I was using my internal laptop mic and the fan straight up sounded like there was a choking lawnmower next to me as I talked.

  • The delivery was bland and boring.

    But people still watched it for some reason?

    Shrug meme

5 years later...

I bought a blue yeti mic and have learnt quite a bit since making that last video. It would be a pleasure to share from experience and help others get into the industry relatively painlessly.

As such, I am making a new beginner programming fundamentals tutorial series. I have a rough course outline, which I'll share as a comment to this post.

Thing is, I would like to make this series with the support & opinions of other devs out there. You were once a beginner, so you know how it feels to be completely lost while watching that introduction to video after watching the social network or pirates of
silicon valley
.

Conclusion

  • Do you guys think the fundamentals and basics are taught well enough?

  • Other than Simon Allardice's pluralsight course, what other high quality beginner friendly content do you guys know about? How exactly did you get started with coding?

  • What kind of hurdles did you have when learning?

  • How did you overcome the hurdles you encountered when you were learning?

  • Any pointers on what you would expect from such a series? What do you wish you were told when you started?

I believe together we can make the world a better place through code and dev is one step closer to that goal. Looking forward to hearing what you guys think.

Top comments (16)

Collapse
 
ben profile image
Ben Halpern

Do you guys think the fundamentals and basics are taught well enough?

I have a hard time thinking that there are true fundamentals.

The industry evolves so quickly.

We have principles and shared knowledge. Fundamentals? I’m not sure.

Collapse
 
conectado profile image
Conectado

I think that the fundamentals haven't changed for a lot of time, maybe since the first days of programming, algorithms are algorithms, data structures are data structures and circuitry is circuitry. Of course there are new of all of those every year but the concept and the basic analysis methods stays the same, so those are the fundamentals I think. At least the concept of algorithm should be something every programmer should have a deep understanding of.

Collapse
 
allanjeremy profile image
Allan N Jeremy

Totally agree

Collapse
 
allanjeremy profile image
Allan N Jeremy

Yeah, the industry does evolve quickly.

We have principles and shared knowledge. Fundamentals? I’m not sure.

I was under the impression that the principles would count as and possibly be used interchangeably with the word "fundamentals"?

Collapse
 
ben profile image
Ben Halpern

Yeah, I was probably nitpicking. Look forward to other replies. πŸ™‚

Collapse
 
ben profile image
Ben Halpern

But fun to questions. I look forward to reading more comments.

Collapse
 
allanjeremy profile image
Allan N Jeremy • Edited

As am I. Curious as to how you would approach the problem of introducing someone who has no idea what programming is to the whole concept & getting their mind around how everything works.

Collapse
 
gastongarcia profile image
GastΓ³n GarcΓ­a

Most videos aimed at beginners are actually aimed at "people less skilled" than the programmer who made the video.

It's so freaking hard to find videos made for REAL beginners. Where NOTHING is assumed.

When a video like that is found, it's like finding a treasure, because you feel like the person is not assuming you know anything.

I've found that Brad Traversy does some pretty good videos. Some are advanced, but when he says they're for beginners, he actually takes his time and goes step by step.

Collapse
 
allanjeremy profile image
Allan N Jeremy

Most videos aimed at beginners are actually aimed at "people less skilled" than the programmer who made the video.

Very true. This is the exact problem I face when trying to recommend programming videos to friends wanting to get into the field.

Indeed it is. Also the reason why I decided to take the initiative to try and introduce people without actually assuming anything.

I do agree that Brad does some pretty good videos. Thanks for sharing your sentiments.

Is there anything you wish you knew when you were a beginner?

Collapse
 
gastongarcia profile image
GastΓ³n GarcΓ­a

Yeah I do have some suggestions:

  1. If it's hard, tell people

For example, Brad in his videos sometimes says "This next part is VERY difficult." By saying that, my own expectations of "getting it" are decreased, and therefore my frustration is more manageable if I don't get it.

  1. If you have to install something, show it

Many videos and tutorials don't actually show you the process of installing stuff. They assume you'll know how to install Node, or an NPM package, etc. It just makes a beginner feel like a dumb person.

  1. Make easy projects

Beginners need easy projects. For example, even though I admire Scott Tolinski's videos and I have purchased many. Some are hard to follow. He moves quickly, and I'm sometimes left with a feeling that I'm the one with the problem.

I guess the important thing to remember is that beginners really are beginners.

Thread Thread
 
allanjeremy profile image
Allan N Jeremy

Golden advice! Thanks for sharing GastΓ³n.

If it's hard, tell people

I would definitely have overlooked this. Love the insight

Questions

What would you classify as "easy projects"? What may be easy to some of us may be complicated to a beginner.

Perhaps user testing would do the trick?

Collapse
 
bgadrian profile image
Adrian B.G. • Edited

CS50 is the course I recommend, or the youtube channel CrashCourse, for the non tech people that wants to be a developer.

I consider the basics the computers, network and internet essentials with computer science fundamentals.

Collapse
 
allanjeremy profile image
Allan N Jeremy • Edited

I consider the basics the computers, network and internet essentials with computer science fundamentals.

Couldn't agree more.

Crashcourse has great intro to computer science videos. I do think we could teach programming without introducing computer science as yet. Pretty close to what the plan is for the videos though. Have you had a chance to check out the pluralsight videos?

I'd recommend watching the crash course videos after learning the 'programming' basics or vice versa.

Collapse
 
bgadrian profile image
Adrian B.G.

I was talking about CrashCourse the youtube channel youtube.com/playlist?list=PL8dPuua...

I never used PluralSight because of their monetization model, and all my mentees so far could not afford something like that, so I try to find free resources.

Thread Thread
 
allanjeremy profile image
Allan N Jeremy

Ah, saw the Crash course channel computer science videos. Loved them

The intro to programming course is free though (on pluralsight)

Collapse
 
allanjeremy profile image
Allan N Jeremy • Edited

As promised here's the course outline that I came up with. Took a while to edit the markdown, hence the late comment. Feel free to share your feedback/improve it however you can. I have created a git repository for the course that you may also contribute to. The repo will also contain course resources when the series begins.

PS. Need help coming up with a useful README for it.

Course Outline

1. Introduction

  • Who the video is for for – problem solvers, creators or interested in web, software or game dev that are trying to get into programming.

  • What we will be going over

  • Why learn these

  • What is the best way to learn – Practice. Know that you don't need to know everything

  • Pre-requisites – what do you need to know to follow along, as well as what resources

2. Programming fundamentals

  • What is programming

  • What is a program & examples

  • What can you do with programming

  • Why learn programming

3. Programming languages

  • What are programming languages & how do they work
    • Types of languages – high level, low level
    • Translators (compilers, interpreters, assemblers)

4. Programming terms (Part 1) – Basic terms

Here I'll try explaining most of the terms using analogies for things that exist in the real world or things that people (the audience) are familiar with.

  • Source code
  • Object code
  • Pseudocode
  • Flowcharts
  • Statements
  • Comments
  • Variables & Variants - Data types
  • Arrays
  • Operators
  • Functions
  • OOP
  • Scope

5. Programming terms (Part 2) – OOP terms

  • Classes
  • Methods
  • Inheritance

6. Programming terms (Part 3) - Advanced

  • Recursion
  • Lambda functions (anonymous functions)

7. General programming principles

  • DRY (Don't repeat yourself)
  • KISS (Keep it simple stupid)
  • Comment code

8. Working with data

  • Working with data (Part 1) – Reasons & I/O

  • Working with data (Part 2 a) – Variables -> rules & Data types

  • Working with data (Part 2 b) – Operators & Variables

  • Working with data (Part 3) – Constants

9. Program flow

  • Program flow (Part 1) – Reasons, what we'll cover

    • Program flow (Part 2) – Conditions & complex conditions
    • Program flow (Part 3) – Loops

10. Modularizing

  • Modularizing (Part 1) – Functions

  • Modularizing (Part 2) – Classes & OOP

11. Conclusion ~ What programming language you should learn

What language should you learn & where you can learn them

  • Web – HTML, CSS, JavaScript
  • Software – C++, Python, Java
  • Game – C, C++, Python
  • General – OOP language, Scripting, Databases

For anyone looking to learn a new language in general, stumbled upon this dev.to post that covers 43 programming languages and what they do. Hopefully that helps someone out there.