It’s been two years since I wrote a “Hello, World!” program for my first computer science class. I enjoyed that class so much that I switched my major. The introductory CS curriculum was neatly organized, gently introducing me to data structures and systems software. “This is easy,” I thought. “I’ll be a master in no time.”
In reality, I knew vanishingly little about programming. When I went on co-op for 30 weeks, my ignorance was impossible to ignore. “Wait, how does polymorphism work?” “Why do I need to worry about the DNS server?” “Oh, we run the unit tests every night?” The only way to move forward was to embrace my ignorance.
The software craftsmanship movement shares my focus on confronting ignorance. In the world of software craftsmanship, I am an apprentice. As Marten Gustafson defines it,
[Software apprenticeship] means having the attitude that there’s always a better/smarter/faster way to do what you just did and what you’re currently doing. Apprenticeship is the state/process of evolving and looking for better ways and finding people, companies and situations that force you to learn those better/smarter/faster ways.”
On this blog, I will chart my progress from apprentice to journeyman. That journey will involve forming a community of like-minded students at Pitt, digging deeper into my coursework and side projects, and communicating what I learn. I hope you enjoy it!