Learning to program is easy. Getting good at it is hard, but getting started isn't if you have the time and discipline. There are hundreds of high-quality resources out there to teach beginners how to code. They'll teach you how to use a programming language, how to use powerful frameworks or workflow tools, they'll teach you how to solve challenging programming puzzles, and they do it very well.
What we have never been able find is a quality, accessible resource that teaches intermediate and beginner programmers how to be a wise programmer. Skills like navigaing code-base, writing developer and maintainer friendly code, presenting your projects on GitHub, managing your own learning, and thinking beyond lines of code when solving a problem. These skills together are at least as important as writing lines of code, and yet are often pushed off as advanced skills or things you "learn with practice".
Well here we are, and we think this stuff is too important to leave to chance. We also believe it's possible - and even helpful - to learn these skills very early on in your programming journey. Check it.
what's this all about
- software development is people collaborating to provide a solution to an end user's needs.
- code is an important tool along the way, but it can distract from the ultimate purpose
- we aim to teach development as a holistic, and very human, endeavor that incorporates programming but is not programming
- what's more, these development skills run between all types of development
- these skills can also be learned at the same time as code-wars style programming skills, and can sometimes be learned faster. but bad habits are hard to break, start here!
- this course is for beginners who want to start out right, and intermediates who want to go to the next level.
who's it for
- why's it a match for them
- how does it fit in the field of competitors
What you Learn
- what this covers
- general problem solving and learning skills
- understanding code as a text that needs to be read by 3 audiences
- tools and practices that enable collaborative programming
- core learning objectives
- decomposing, understanding and planning a project
- development as communication
- clean software design
- There are many outstanding free and open learning resources - but in our experience they focus on specific tools and techniques, language fundamentals, or getting your code from level 2 to level 5. We provide links to our favorites in the 'support' section of this teaser.
- We like to think of this curriculum as the glue between existing resources.
- our approach
- software development is a prime example of an intrinsically complex task
- main challenges to address from a pedagogical side
- cognitive load
- skill transfer (procedural knowledge)
- metal models
- a term for being able to communicate your thoughts - dev audience and self
- we try to embed pedagogy from our personal experience and findings findings from research into this content
- The format is intentional. The content is all hosted on github and is either markdown or code to study. This will enable you to get constant expereince with the tools of the trade, automating the skills of termainl/editor/browser development and dealing nested file structures
- uses JS because of multi-paradigms and ubiquity
- stay tuned for a more thorough explanation of our methods including a list of annotated citations and guidelines for contribution.
- 4c/id two components pg 44 -- in the readme? save for white paper? <- yes
- mental models
- cognitive strategies