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?
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)
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.
Totally agree
Yeah, the industry does evolve quickly.
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.
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:
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.
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.
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.
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.
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.
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
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.
5. Programming terms (Part 2) β OOP terms
6. Programming terms (Part 3) - Advanced
7. General programming principles
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
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
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.