(Updated 5/Oct/08 and 11/Nov/08) I occasionally ponder on what skills and knowledge a novice who wants to become a skilled developer should acquire. In no particular order here is a suggested list of things to consider:
  • Basic accounting: This is useful from both an IT perspective -- a lot of IT systems are used for financial management; and from a general work perspective because it helps with your future in business
  • Version control concepts and tools
  • Waterfall Software Development Lifecycle (SDLC): Requirements, design, building, testing, release
  • Agile SDLC such as XP and/or Scrum
  • How to use a command line
  • Basic compiler architecture -- the 7 phases of compiling
  • Data representation: Number bases (binary, Hex, BCD); character sets; XML markup
  • Basic algorithms: Sorting, Linked lists etc, recursion,...
  • Important design patterns
  • Testing and quality as a substantial stand alone topic
  • Programming in at least three languages: C (or Java, C++, Ada etc), Perl (or Python, Ruby etc) plus one other (e.g. Lisp, Haskell). At least one needs to be an OO language and OO programming should be a familiar habit. Perl does not count as OO for this discussion.
  • How to use a word processor and spreadsheet
  • Basic SQL, RDBMS architectures, 1st, 2nd & 3rd Normal forms and basic DB schema design
  • TCP/IP networking and basics of http, email, ftp, etc. Needs to include conceptual understanding of DNS and related security issues
  • Basic IT security concepts
  • Basic IT System Management
  • Personal task and work management (e.g. GTD or GSD, suggested by Sinewalker)
  • Maintaining personal work records in a  log book
Further topics
  • More advanced RDBMS use and schema design
  • Embedded systems
  • How to use LaTeX or Docbook
  • Application engineering for quality (maintenance, extensibility, performance etc)
  • OS design
  • Requirements engineering
  • UML
Further suggestions anyone?