[ale] [OT] Helping others learn C, D, X, Y, Z, EIEIO...
Leam Hall
leamhall at gmail.com
Tue Dec 15 07:06:30 EST 2015
I'd like to encourage those of you who are decent to very good
programmers to consider what we're doing as a calling.
Recently I took a C based pre-test for a software security course
(https://class.coursera.org/softwaresec-008). Realizing that I guessed
more than I was comfortable with is one of the big things that drove me
to re-learn C. That, and a stack of books from previous failed attempts.
I've resolved to either learn C or give away the books. Being a
bookworm, that's motivation!
Your conversations have pointed out something many of us unskilled
programmers have heard of; there are other skills and tools to be
learned when moving from example code in a book to putting "coder" on a
resume. Things like lint, TDD, gmake, coding standards, etc.
Would you consider a "Next Steps" course starting in April or May? While
the LCTHW-90DW is a 3 month challenge, it is based off the learning idea
that the early stages of any new and difficult project are discouraging.
With just 2-4 hours of C it can be hard to glimpse the possibility of
becoming a kernel hacker. However, there comes a point (~20 hours per
Josh Kaufman) where you're still a rank beginner but things aren't so
painful.
By the time someone is through the 90 day challenge they will have
enough discipline and pleasure to take on new tools. Maybe you run a one
month "TDD with C" program, or "Dive into Pointers"? Or maybe you like
some of the Coursera classes and offer to help mentor alongside the
classwork? The security class is one option, there are Algorithm
classes, Java classes, and a bunch of Python things going.
There seem to be several of you who are good at this. Could you talk
amongst yourselves, come up with a list of "new programmers should have
these skills", and pick one to mentor? If each of you did one to two
"skill months" a year, and there were 4-6 of you, we could just about
fill the year!
Here are some of the things that have come to mind while reading your notes.
Pointers
Kernel module basics
TDD
Secure coding
Large project management (splint, gmake, SDLC)
Assembler basics
Code profiling (gdb, valgrind)
Systems programming on Linux
Algorithms
Thoughts? Could we go so far as to resurrect a project like splint or
something and bring it forward? Or help people transition into kernel
janitors?
Leam
More information about the Ale
mailing list