What a young developer needs to know
Posted by Alec The Geek on 3 November 2008
(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?
7 Responses to “What a young developer needs to know”
Sorry, the comment form is closed at this time.

![[FSF Associate Member]](http://static.fsf.org/nosvn/associate/fsf-10505.png)
sinewalker said
I would add time management skills. GTD has the best overhead-to-work achieved ratio and maps well to developer mind-sets.
Also recommended reading
The Career Programmer: Guerilla Tactics for an Imperfect World
by Christopher Duncan
Apress © 2002, ISBN:9781590590089
Just about every chapter in that book is pertinant to young (and seasoned) developers who want to swing freely among the branches of the corporate tree. Yup, my goal is to become *that* kind of “code monkey”…
aabs said
Hi Alec,
You haven’t mentioned the ‘soft’ skills without which a young idealistic developer will be eaten up and spat out. I’m talking about taking the ‘ideal world’ software engineering principles espoused by university CompSci lecturers with a pinch of salt. The worst part for me was the complete and utter disillusionment that I felt when I got out of uni into industry. I felt very much as a medieval monk must have done when leaving his cloisters for the first time, only to discover that the world outside was either peasants living in mud huts scratching fleas or avaricious robber barons.
My offering is – don’t get your hopes up. In fact, don’t leave university at all. If you must leave uni (for want of money etc) then try to be as choosy as you can with your jobs. Decide whether it’s better going blind in a scriptorium or being burnt at the stake for evangelising to the mob.
;^]
Alec said
So Aabs, I think the soft skill you are proposing is a healthy dose of cynicism?
Can’t argue with that
James Stansell said
* patience mixed with inquisitiveness
* an open mind and an attitude of learning
* how to recover your work when your cat walks on the keyboard
Alec said
James, I think the cat problem is covered by “Version control concepts and tools”?
Learning programming the Alec the Geek way « Alec the Geek said
[...] I’m looking forward to seeing how well the new text works, and of course once basic programming has been mastered we can move onto “What a young developer needs to know“ [...]
Alec The Geek said
I recently found http://altdevblogaday.com/2011/08/06/demise-low-level-programmer/