Apprenticeship Patterns Introductions

For this post, my assignment was to read chapter 1 as well as the introductions for chapters 2-6 of Apprenticeship Patterns by Adewale Oshineye and Dave Hoover. We weren’t required to read anything in addition, but I was interested, so I read the first model from each chapter as well.

This book models a framework for someone to master the discipline. Mastering something can be challenging, and it is easy to give up when faced with some obstacles. Fortunately, this book looks like it will provide a good framework for someone like me.

I liked all the values presented in the introduction. These are a few of my favorites. (1) “Having a growth mindset.” Like many things I can glean from this book, this is a good quality to adopt for all of life when faced with any obstacle. (2) “Share what we know.” I believe that we are stronger when we work together over getting ahead by trampling others to get ahead.

(3) “Willingness to experiment and be proven wrong.” This perhaps was the most important thing that I learned working in groups last semester. Invariably I would go into a project with a range of quality of ideas. Some were good, but many were not. I had to have the humility to admit when an idea I was defending was not a good one. I grew as a person because of that.

For the “emptying the cup” metaphor, I related to the young philosopher quite a bit. I try hard not to be this way, but I find I can have the tendency to give my two cents when in the presence of someone who knows a lot more than me. I should be a lot more willing to listen and learn over speaking what I know. Usually what I have to say is nothing compared to what I can learn.

The advice to “be the worst” made me feel more at ease at the prospect of getting an internship or a job. I am overcoming a fear of being the worst developer at a company. This advice makes me think of it in another way, which is that I will grow so much more as a developer if I surround myself with people that are better than me

I appreciated the C.S. Lewis quote about seeking knowledge “while conditions are still unfavorable. Favorable conditions never come.” This struck very close to home for me, coming from a vacation where I had set maybe a dozen goals for myself. I ended the vacation only finishing a couple of them. I should have forced myself to set aside the time before the fall semester was over to start to accomplish these goals. If I had excuses during the semester, I should have foreseen that I would have excuses over the break.

I am excited to read more about each section. These topics that we will explore truly seem like they will be enjoyable to learn.

From the blog Sam Bryan by and used with permission of the author. All other rights reserved by the author.

New Year, Same-mi

cs series (17)Hey guys, here’s to another (and my last) semester of this CS series of blog posts!

Hopefully you will HIIT–or should I say reach–all of your professional and personal goals for this year. There’s so many things to always keep improving on but it’s always easier when you break things down to smaller changes or achievements.

Here’s a picture of one of my personal goals as can be seen in my university’s Wellness Center:

Processed with VSCO with hb1 preset
“This Year I Want to ______”

One day I will be able to get up there without being lifted…alright I’ve gotta get back to practicing my jumps.

Best of Luck,

Sami

From the blog CS@Worcester by samanthatran and used with permission of the author. All other rights reserved by the author.

Introduction: MINIX 3

For this Spring ’19 semester, I’m going to be delving into an Independent Study of the MINIX 3 operating system under the guide of my professor, Karl Wurst. My goal is to dissect and tinker with the underlying systems of an operating system — Processes, I/O, Memory Management, and File Systems. I’ve already gone ahead and installed MINIX 3 on a virtual machine using VirtualBox. Next step is to delve into the MINIX 3 book and see what’s going on under the hood. MINIX 3 actually has a really great wiki with a section catered towards hacking the OS as well, so I’ll likely be drawing a lot of my information from there, too.

As part of the Independent Study I will be writing a weekly blog post here to discuss what I’ve done every week, as well as a paper that I will finish as a summary of my work at the end of the semester.

Here’s to lots of learning and a great final semester!

From the blog CS@Worcester – James Blash by jwblash and used with permission of the author. All other rights reserved by the author.

Apprenticeship Patterns – Introduction

My first impression with reading the first chapter and introductions of  Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman  left me eager to learn. Although I only read the first chapter and the subsequent introductions, I could tell immediately that this book contains a wealth of knowledge born of experience from talented software craftsmen that will greatly help me hone my skills over my career. Chapter 1 introduces us to the book by giving us insight into what types of character traits are the most beneficial for a budding software developer, as well as providing a background of the historical craft model and how that model applies and differs from the one that is used today.

In the first section of Chapter 1, the authors describe character qualities that are fundamental in a true craftsman. They demonstrate how important being self motivating is to mastering the skills of software development. We are in an industry that is constantly evolving, so being motivated to learn and improve on our skill continuously is essential to being a software craftsman.

Another aspect of the authors’ perspectives I enjoy is how they explore the traditional medieval guild model and how that applies to software development today. The concept of a progression from apprenticeship, to journeyman, and finally master is still used in many trades today, and I definitely agree with the authors’ suggestion that the model applies to our industry as well.

I also find it very interesting how the authors define apprenticeship patterns and how they go about deciding which ones work. They describe “extracting the framework from working systems”; the knowledge that comes from analyzing past successes and figuring out common patterns that aided in their success is extremely valuable knowledge that can be applied throughout our career.

I feel as though reading the introductory excerpts from the beginning of chapters 2-6 gave me a basic understanding for the tone and themes of the book. What I took away from reading them is each excerpt is a story or general example that relates to the topic of the chapter, and often the story illuminates a need for a fresh perspective, and emphasis is placed heavily on disciplining oneself to have an open mind, taking any opportunities to learn from those with more experience, as well as being able to learn for yourself, and be responsible for your own education.

I was at first a little bit surprised at how heuristic the book is, but I saw right away how this unique outlook offers valuable knowledge that will help all of us in our journey to becoming skilled developers. I’m excited to learn the apprenticeship process from this book, because I believe that if I can apply this knowledge early on in my career, I will be in great shape for being a skilled software craftsman for my entire career.

From the blog CS@Worcester – Bit by Bit by rdentremont58 and used with permission of the author. All other rights reserved by the author.

Software Capstone: “Emptying the Cup”

In the book we are reading, chapter two is based off the concept of emptying ones cup (essentially if you have a lot of experience coding and are approaching a new project, you need to empty your mind of flawed coding practices, patterns and ideas, and focus on what will work for your project and what will help move you forward.)

 

The first section of this chapter has to do with your first programming language. In this stage, you have only a moderate amount of experience with no more than two or three languages at best. The issue one must face at this stage is reaching the standards your job or your teammates have put forth. The way the book tells us to solve this problem is by honing our skills on one programming language, such that we can seamlessly solve many problems with just that one language. When you just have to use a different language (due to requirements or what have you,) you will have a new opportunity to learn about this seemingly foreign coding language. You can always approach your senior developers or other developers more in tune with that way of programming, as long as you don’t require your colleagues to solve it all for you.

 

How do you go about accomplishing this first pattern? You need to read up on the programming language you’ve chosen to study deeply. There typically are books or websites available for you to learn more about your language. Another avenue for learning is asking for help or talking with your colleagues about how they accomplished what they have with the language. In ending, try and solve some basic problems with your programming language and move up to more intensive projects and issues.

Work slowly at first and you will understand better the in’s and out’s of your language.

 

-SMR

From the blog CS@Worcester – Sean Raleigh's CS Blog by sraleigh62 and used with permission of the author. All other rights reserved by the author.

Hello! I am back with CS-448..

Hello dear readers. Welcome back to my blog. This post is an introductory post about my CS-448 class (Software Dev Capstone). This is my last semester and I am really looking forward to my graduation. I will see you soon..

From the blog CS@Worcester – Danja's Blog by danja9 and used with permission of the author. All other rights reserved by the author.

Task 1: Blog Set-up

CS 448 setup blog post

From the blog CS@Worcester – Phan's CS by phancs and used with permission of the author. All other rights reserved by the author.

Software Capstone: Apprenticeship Patterns Post 1

Hello again readers.

So, what is a pattern as is described in the book Apprenticeship Patterns by Adewale Oshineye and Dave Hoover? Patterns are ways in which we program or otherwise do our work/solve problems repeatedly. When applied correctly, patterns allow us to easily overcome many problems/obstacles we face in our jobs and personal hobbies.

The patterns in the book make their approach based on the context, problems, and possible solutions. “The context sets the mood… problem statement identifies the problem being solved by the entirety of the pattern. The solution usually begins with a one sentence resolution for the problem…” (Pattern Form, Apprenticeship Patterns)

Developing a pattern allows for the mass production of programs, buildings, and other structures, whether physical or metaphysical. It is intended to further the abilities of the novice to moderately advanced programmer. One model/pattern for programming is using a master node and slave nodes: the master node controls what slave nodes do (which instructions the slave nodes undergo.)

 

This book was written for “software apprentices” (as put forth by the author.)  The three tiers of the programmer go from apprentice, to journeyman, to a master craftsmen. The apprentice believe that there is always a better way to do what they are doing. The journeyman focuses inwardly as well as on teamwork and connecting with others. The master does this all as well as attempt to move the industry forward.

 

On to the review of this pattern. I find taking instructions from a singular source and running processes on many smaller sources of computing power to be interesting: you can get vastly more processing power by adding many slave or sub-nodes to a master or dominative node. I haven’t really found that it changes how I will approach programming in the future but I may look back on this way of programming for reference. Finally, I have no disagreements or other takeaways from the first chapter and pattern of this book.

I hope you’ve enjoyed my first post about Apprenticeship Patterns, I will see you next time.

 

-SMR

From the blog CS@Worcester – Sean Raleigh's CS Blog by sraleigh62 and used with permission of the author. All other rights reserved by the author.

No hand holding

For the first week of apprenticeship pattern readings, I chose to read Draw Your Own Map. This pattern focuses on the career path that you chose for yourself based on your future or current employer. It tells a tale of how employers can only lead to a limited amount of career opportunities from your current job status. To work through this system, it is necessary to create a plan or road map for your future endeavors after moving forward from where you currently are. By lining up paths that can be available to you based on your current desires, knowledge, and expertise. It will be easier to find yourself in work that suits yourself the best instead of settling for less. These roadmaps should easily be updated to your current situation whenever you see fit. The overall idea behind this is that no one will be able to tell you how your career will end up, everything is up to you.

What I found interesting were the two short stories provided near the bottom of the pattern which clearly showed how reality will present itself. By providing evidence of how some apprentices feel about their current work experience, realizing what they actually wanted, and making a rather small but big step towards their dream career path is inspiring. It also goes to show that not all companies will have their interests aligned with their employees. Also, the action listed at the bottom is helpful to show that. By mapping out from each job choice and their potential benefits and paths that could open or give an overview of how you will end up later on. By not limiting your choices and have a willingness to redo the diagram until you are satisfied with the end result. There is a big possibility you will find happiness at the very end. Otherwise,  I enjoyed the fact that this pattern is straightforward with budding apprentices like myself. As quoted, “Understand that it’s not up to your employer, your career counselor, or your professors to give you a hand up.” Every decision lies in us, by having a plan, you can reduce the amount of roadblocks you will hit along the way and make more informed choices in your career path.

From the blog CS@Worcester – Progression through Computer Science and Beyond… by Johnny To and used with permission of the author. All other rights reserved by the author.

Introductory Blog Post CS-448

This will be my blog for CS-448.

From the blog CS@Worcester – Amir Adelinia's Computer Science Blog by aadelinia1 and used with permission of the author. All other rights reserved by the author.