Information Overload and Managing Flow
The final day of ÖreDev started with a keynote by Scott Hanselman, one of my “heroes.” His talks are always insightful and humorous. Here are some key takeaways from his session:
- Effectiveness: Doing the right things.
- Efficiency: Doing things right (like jumping off a cliff efficiently!).
- Triage: Sort information and avoid leaving things in your inbox. Use the “Do it – Drop it – Delegate it – Defer it” approach to manage tasks.
- Signals vs. Noise: Sort your data streams (Twitter, email, colleagues) into these categories.
- Email Management: Emails where you’re CC’d are less important. Avoid checking emails first thing in the morning to prevent becoming the fastest responder to all problems. Instead, check emails three times a day for 20 minutes each.
- Work Hours: Don’t try to outwork the system by putting in more hours. Instead, use techniques like the Pomodoro Technique to schedule and manage your work.
- Tool Recommendations:
- RescueTime: For introspective retrospectives.
- 43 Folders: A powerful but messy tool.
- PocketMod: Sync to paper.
- Evernote: For note-taking and organization.
- Remember The Milk: An alternative to todo.txt.
- Use email rules for better organization (e.g., To:/CC: and calendar invites).
Scott’s session was both entertaining and informative, offering practical advice on managing information and productivity.
The Pair Programming Show
The next session, “The Pair Programming Show,” promised to be engaging with its unique format. Presented by Niclas Nilsson and Hans Brattberg, the talk featured props and practical demonstrations.
Key points included:
- Communication: Essential for effective pair programming. Share time at the keyboard, talk, and collaborate rather than just showing.
- Engagement: An engaged navigator is crucial for successful pair programming. Without it, you miss out on the benefits.
- Economic Feasibility: Pair programming can be cost-effective. For instance, having two people working together often results in higher code quality and less technical debt.
The session offered a comprehensive look at pair programming, highlighting both its advantages and challenges.
Breaking Out of Dependency Hell
The final session was given by a visibly tired Ayende. He discussed strategies for managing solution complexity using:
- Dependency Injection (DI): Helps in managing dependencies and reduces the complexity of a static system.
- Inversion of Control (IoC) Containers: Facilitates managing dependencies and enables flexibility.
- Convention over Configuration: Simplifies configuration by adhering to conventions.
- Aspect-Oriented Programming: Useful for handling cross-cutting concerns.
Ayende’s talk provided valuable insights into reducing complexity and improving the maintainability of software systems.
That wraps up ÖreDev! It’s been an incredibly enriching experience, full of learning and insights. A big thank you to everyone, especially the ÖreDev team!