What schools should
be teaching IT students
  Andy Lester, andy@theworkinggeek.com
        http://theworkinggeek.com
Andy Lester
• 23 years in software development and
  management
• Author, Land The Tech Job You Love
• Many friends made s...
Tools of the trade
Source control
Source control

• Branching
• Merging
• Team-based
• How to write a commit message
Bug tracking
The compiler
The compiler

• Turn on all warnings by default
• Warnings are good
• gcc is amazing
 • 90% of what a good lint does
 • Hi...
The compiler

• Perl: use strict; use warnings;
• PHP: set_error_reporting( E_ALL    );

• gcc: -Wall -Wextra compiler flags
Make, and
the philosophy of
  repeatability
Lint / splint
Serious editing
Serious editing

• vim
• emacs
• TextMate
• Eclipse
• Not notepad for God's sake
Concepts
DRY:
        Don't
       Repeat
       Yourself
"Every piece of knowledge must
   have a single, unambiguous,
  authorita...
Defensive programming
Maintenance
The vision
Actual first project
How about...?

• Your assignment is code that does such-and-
  such.
• It will be based on one of your classmates'
  previ...
Manual testing
Automated testing
"Efficiency"
and why it (usually)
  doesn't matter
Thinking business
Thinking "Project"
Thinking "release"
Thinking deadlines
A project is a set of
code at a point in time.
How about...?
  Your assignment is code that does such-and-
  such. Your deliverables are:
• Code that will compile + buil...
Full project lifecycle
Building for the future
         and
        YAGNI
Good enough
     and
not being sloppy
Soft skills
Teamwork
Culture
You are not the
 smartest one.
"If we don't do it my
way, we might as well
   not do it at all."
How else can
 they learn?
Get into open source
Open source work is
    real work.
Students will learn
• How to work with difficult people
• Source control
• Dev with disparate teams
• Project lifecycle: ne...
They will NOT learn

• Thinking Business
• Thinking about deadlines
• Working with a boss
Experience on the
     resumé
Sample code for a
   portfolio
Missing textbooks


• The Pragmatic Programmer, by Andy Hunt
  and Dave Thomas
• Code Complete, 2e, by Steve McConnell
andy@theworkinggeek.com

http://theworkinggeek.com
Upcoming SlideShare
Loading in...5
×

What schools should be teaching IT students

1,749

Published on

What schools should be teaching IT students.

Published in: Education
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,749
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
21
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

What schools should be teaching IT students

  1. 1. What schools should be teaching IT students Andy Lester, andy@theworkinggeek.com http://theworkinggeek.com
  2. 2. Andy Lester • 23 years in software development and management • Author, Land The Tech Job You Love • Many friends made sure their pet peeves were in here. We thank you for listening. • I welcome comments and follow-up at andy@theworkinggeek.com
  3. 3. Tools of the trade
  4. 4. Source control
  5. 5. Source control • Branching • Merging • Team-based • How to write a commit message
  6. 6. Bug tracking
  7. 7. The compiler
  8. 8. The compiler • Turn on all warnings by default • Warnings are good • gcc is amazing • 90% of what a good lint does • Highly tuned and optimized code
  9. 9. The compiler • Perl: use strict; use warnings; • PHP: set_error_reporting( E_ALL ); • gcc: -Wall -Wextra compiler flags
  10. 10. Make, and the philosophy of repeatability
  11. 11. Lint / splint
  12. 12. Serious editing
  13. 13. Serious editing • vim • emacs • TextMate • Eclipse • Not notepad for God's sake
  14. 14. Concepts
  15. 15. DRY: Don't Repeat Yourself "Every piece of knowledge must have a single, unambiguous, authoritative representation within a system."
  16. 16. Defensive programming
  17. 17. Maintenance
  18. 18. The vision
  19. 19. Actual first project
  20. 20. How about...? • Your assignment is code that does such-and- such. • It will be based on one of your classmates' previous assignments. • You may not disparage your classmate's work.
  21. 21. Manual testing Automated testing
  22. 22. "Efficiency" and why it (usually) doesn't matter
  23. 23. Thinking business
  24. 24. Thinking "Project"
  25. 25. Thinking "release"
  26. 26. Thinking deadlines
  27. 27. A project is a set of code at a point in time.
  28. 28. How about...? Your assignment is code that does such-and- such. Your deliverables are: • Code that will compile + build without warnings under GCC 4.2 and GNU Make. You must use -Wall and -Wextra. • URL pointing to the class git repository that I can pull down and build using setup.sh.
  29. 29. Full project lifecycle
  30. 30. Building for the future and YAGNI
  31. 31. Good enough and not being sloppy
  32. 32. Soft skills
  33. 33. Teamwork
  34. 34. Culture
  35. 35. You are not the smartest one.
  36. 36. "If we don't do it my way, we might as well not do it at all."
  37. 37. How else can they learn?
  38. 38. Get into open source
  39. 39. Open source work is real work.
  40. 40. Students will learn • How to work with difficult people • Source control • Dev with disparate teams • Project lifecycle: new features, bugs, etc • Test-driven development • How to work with difficult people
  41. 41. They will NOT learn • Thinking Business • Thinking about deadlines • Working with a boss
  42. 42. Experience on the resumé
  43. 43. Sample code for a portfolio
  44. 44. Missing textbooks • The Pragmatic Programmer, by Andy Hunt and Dave Thomas • Code Complete, 2e, by Steve McConnell
  45. 45. andy@theworkinggeek.com http://theworkinggeek.com
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×