A simple Google search turns up hundreds of options for learning programming, many free, but where do you start? There are many excellent reference sites and YouTube channels out there but many focus on the mechanics of a single language without explaining the broader concepts and best practices. Many are written by developers for (aspiring) developers and might leave you with a sink-or-swim feeling as you pick your way through incomplete answers and abandoned message threads that don’t quite apply.
As a programming instructor, I’ve spent the last couple of years searching the web for the best resources I could find for my students as they struggled to understand concepts such as database normalization and object-oriented programming. A textbook or two and classroom lectures are not enough when you’re trying to reach a variety of students from different backgrounds. Seemingly limitless online resources become very limited when it comes to information on a less popular topic such as pass-through queries or deadlocking and you’re trying to find something that will provide enough detail but won’t utterly confuse the students or cause then to tune out from boredom.
Over the course of my career as a programmer and now an instructor, there are a few things that I’ve come to understand –
- Software Development is an engineering discipline as well as an art. Over the long-term, it’s not enough to simply learn a language and throw together some programs that get the job done. It’s also not enough to teach aspiring programmers about variables, loops and decision trees and then expect them to know how to apply those tools to build elegant and robust solutions. Real development training must emphasize best practices and attention to detail throughout.
- While a very small percentage of talented people might have what it takes to seek out the knowledge they need to self-train, the majority of students need and deserve the guidance and assistance to make these concepts accessible. Not everyone wants to become a software developer but I believe that everyone can learn something about programming that they can use to achieve something they couldn’t have done before.
- The future of software development training is not just in the classroom but quality, student-focused training materials designed by professionals are still required. The typical piecemeal approach in which aspiring programmers learn enough language elements and coding tricks to complete each project will not produce the kind of professionals that businesses need long-term. A complete curriculum that teachers and self-teachers can use to guide the learning process is needed.
CodeScholar will begin by adapting the program that I have been teaching in which I’ve guided my students to earn Microsoft certifications in both database design and software development. It will be designed by educators, for educators and self-teachers. The content will be guided by state curriculum standards and skills required for certification by Microsoft and other companies.
CodeScholar lessons will focus on making the concepts accessible by as many students as possible and building specific skills. This is the entire point of any education. Lessons will be broken down into parts that are easier to digest, learning objectives and concepts will be clearly presented in relation to the practice of software development as a whole.
CodeScholar will be adaptable in both content and design. More than just a set of videos or online lessons, it will be designed as a standard that can be used to develop more training on other languages and technologies.
Finally, CodeScholar will be developed online. You will have the chance to watch and provide input on the entire process and I want your input! If CodeScholar is going to be the awesome tool I want it to be, I need as much feedback as possible.
You can start by following CodeScholar on Twitter (#CodeScholar) and keeping up with its progress and news about other training efforts around the world. Hope to see you there!