- Use think through debugging. Use step through debugging. Use delta debugging. Experience a compiler bug. Experience a hardware bug.
- Make a user interface. Script a user interface. Scrape a user interface.
- Write (and debug) a program in a language that requires you to manage memory explicitly. Persist data (and reclaim expired data).
- Write (and debug) a program that passes messages to another program. Use a stateful protocol. Use a stateless protocol.
- Break modules (object / file / compilation unit) apart and put them back together.
- Work on a program using two or more languages on multiple levels. Work on a program that mixes languages throughout.
- Generate code. Delete code.
- See how long a task actually takes to do.
- Stay with a program until it gets used by someone else (i.e. until after a round of maintenance).
- See what happens to your program after someone else (better/worse) has taken responsibility for a cycle or two.
- Make a change to another person's program using their programming style.
- Work too close to someone else. Work too far away from everyone else.
- Resolve a conflicting merge (see above).
- Roll back a change.
- Replace a perfectly usable module because of licensing issues.
- Write a program to compare the previous behavior of an old module with that of its replacement.
- Never do anything more than twice manually.
How to Teach Yourself Programming in 10 Years
No comments:
Post a Comment