Demystifying programming

Allan N Jeremy on December 02, 2018

Introduction Hello there. Been eons since I posted here. Anyway, about 5 years ago I relatively naively made a video trying to introdu... [Read Full]
markdown guide
 

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.

 

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.

 
 

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"?

 

Yeah, I was probably nitpicking. Look forward to other replies. 🙂

 

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

 

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.

 

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.

 

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?

 

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.

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?

 

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.

 

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.

 

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.

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

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

 

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.

code of conduct - report abuse