The first chapter of Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman[AP] by Dave Hoover and Adewale Oshineye wasn’t really what I was expecting to be honest. Typically books for college classes are very factual and focus on learning new concepts, where they should be used, etc. This book, the first chapter at least, reads more like a career advice books. The authors are speaking from experience to try and provide insight and advice to people who are about to step into the field of software development (a.k.a. Computer Science seniors like us) or to those who are just getting started in it. I found the piece on Dave’s story to be particularly interesting. I always find it fascinating to see how people got to where they are in their careers, because the path taken is typically not what you would expect. In Dave’s case he got his foot in the door by essentially teaching himself Perl and proving to be he had what it took to be a programmer. He did that at age 26, so it wasn’t like he got a Computer Science degree, went right into the field, etc. It was an unusual path. He had to find another way to get his foot in the door. People who take the more difficult road often have the best advice, so I am particularly interested to see what he has to say throughout this book.
Now, more focus on what the purpose of this chapter was, which I feel was to provide an overview of what it takes and what it means to be a “software craftsman”. He goes on to provide a lengthy list of what “software craftsmanship” means, but I’ll point out a few that stood out to me:
- “A willingness to experiment and be proven wrong” [AP] I feel this is very important. You simply won’t learn anything if you aren’t willing to try new things. This is applicable to all aspects of life, not just software development.
- “A desire to be pragmatic rather than dogmatic” [AP] This is something I agree whole heartedly with. To have a program be absolutely perfect you will be working on it forever. Companies care far more about getting the job done in a timely and efficient manner than having it be perfect. If it gets the job done, they aren’t going to care how it got done in most cases.
- “A need to always be adapting and changing based on the feedback you get from the world around you” [AP] Speaking from the experiences I’ve had at my software engineering internship, there are times where I’ll spend a week working on something and it will be scrapped because something changes late in the game. Or I’ll get halfway through writing a piece of code and realize there is a far better way to approach and I’ll have restart from scratch. You have to be willing to change and adapt to any situation at any point in time.
He then goes on to talk about three different stages of expertise in a craft: apprentice, journeyman, and master. I think it is safe to say most people taking CS448 are in the apprentice category. We all have so more to learn. Obviously, the goal is to eventually be a master at this craft, and hopefully this book along with the “apprenticeship patterns” it discusses will help get one step close to obtaining that goal.
Link to book: http://chimera.labs.oreilly.com/books/1234000001813/index.html
From the blog CS@Worcester – README by Matthew Foley and used with permission of the author. All other rights reserved by the author.
Hello Everyone in Cs-448 !
My name is Kwame ofori and i am really looking forward to this class and getting some real world experiences. I believe experience is the best teacher so i am ready to learn !
From the blog CS@Worcester – Le Blog Spot by Abranti3 Dada Kay and used with permission of the author. All other rights reserved by the author.
This is the introductory post for the CS-448 course of Spring 2018.
From the blog CS@Worcester – Fun in Function by funinfunction and used with permission of the author. All other rights reserved by the author.
First Blog post for the capstone!
From the blog CS@Worcester – Rookey Mistake by Shane Rookey and used with permission of the author. All other rights reserved by the author.
Hello! This is my first blog post for CS-448. I hope everyone has an exciting and educational semester!
From the blog CS@Worcester – BenLag's Blog by benlagblog and used with permission of the author. All other rights reserved by the author.
I am looking forward to having a wonderful experience with all of you!
From the blog CS@Worcester – Ricky Phan by Ricky Phan CS Worcester and used with permission of the author. All other rights reserved by the author.
Reading the first chapter of Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman by Dave Hoover and Adewale Oshineye made me feel both anxious and optimistic about entering the software development field upon graduating this spring. As the authors very clearly point out, there is now an overabundance of developers but a scarcity of good developers in the workforce. In an effort to become one of the good developers, I have in the past kept up with many of the so-called masters referenced in Apprenticeship Patterns including Uncle Bob and Martin Fowler. I hope that by following the advice of Hoover and Oshineye I am able to make begin a career where I will make a difference as a software developer, and that someday I am able to pass along my experiences to future generations in an effort to continue the advancement of the industry.
What I found perhaps most interesting and important about the first chapter were the disclaimers that the authors gave. Statements like, “These tools are not algorithms that guarantee the same results on every execution,” really helped to reinforce the idea that there is no magic recipe for success. The truth that Hoover and Oshineye are trying to convey to new developers is that being successful is not easy. The path to becoming a great developer has many hurdles, it takes more than simply following an apprenticeship pattern or any other set of instructions. What the apprenticeship patterns hope to offer, rather, is assistance in beginning a software development career and advice on how to become outstanding rather than simply proficient.
As a new developer trying to make it, motivation and drive are key. Perhaps most important, however, is a willingness to learn. Not being afraid to make mistakes, and being able to turn mistakes into learning experiences is crucial to personal and professional growth. It is also important to share your experiences with others, rather than hoarding them. Just as apprentices learn from journeymen, so too can one apprentice learn from another. This collaborative scheme was especially interesting to me. Far too often, especially as a student, I feel that individuals are selfish about sharing information with one another. While this is certainly understandable in situations where only one party benefits, collaboration can be an extremely powerful tool. I feel lucky to be entering a field that places such a high value on teamwork and collaborative success. Working together is what most often leads to the most profound or impactful discoveries and advancements.
Although the first chapter of Apprenticeship Patterns did not go into much detail on any particular subject, I am looking forward to discovering how to improve my chances of a beginning a successful and rewarding career as a software developer.
From the blog CS@Worcester – ~/GeorgeMatthew/etc by gmatthew and used with permission of the author. All other rights reserved by the author.