Category Archives: Week 13

Expand Your Bandwidth

The Apprenticeship Pattern Expand Your Bandwidth is something that should be learned at the beginning of your career, even in schooling. This pattern is about learning the ability to learn a large amount of information about more than one subject at the same time. You must be able to retain the vast income of knowledge, you won’t have to do it for very long, but it can be overwhelming. Overcoming the overwhelming feeling and successfully learning much more information than you’re used to is the crux of this Apprenticeship Pattern. There comes a time when your focus must spread from your everyday work and onto new information.

This pattern coincides with that of Draw Your Own Map quite a bit. These two patterns are all about taking your future into your own hands. Expanding your bandwidth is a skill you have to learn to help your path become clear. If you want your map to expand then your knowledge too must expand. Sometimes when you need to take in a vast amount of information at one time it can be stressful and confusing. However, once you have retained this new information it unlocks new opportunities and new paths to be taken.

In my personal school experience I feel this skill was necessary at times, even at the very beginning of my pursuit of a Computer Science degree. I remember the knowledge jump between Intro to Programming and Data Structures was enormous, but not only larger, it moved faster too. My fellow students and I had to learn new information constantly all while applying our already new knowledge. It was that way for about the first third of the semester. We had such vast amounts of information coming in, but after that first third of the semester we had already learned most of what we would be doing. There was still more information to come of course, but it was more or less experimenting in more detail with things we had already done. We expanded our bandwidth at the beginning so that the rest of the semester we were prepared for a variety of projects. It was as if the flower had bloomed for us finally and our paths were much more open.

From the blog cs@worcester – Zac's Blog by zloureiro and used with permission of the author. All other rights reserved by the author.

Wax On,Wax Off

The pattern “Sweep the Floor” talks about how as a new member of a development team you should take the jobs that people dislike and work on the things that are an annoyance. This strategy is something that will help a person to become a valued and respected member of the team that they have recently joined since they did something others felt was a pain. The pattern suggests that you take the leap that others are unwilling to because it will build your reputation among your colleagues. The pattern also talks about how when you start a job after college, that you are effectively starting from square one and the education you received only raises what people will expect of you. This pattern also talks about some negative impacts that may happen, which are that you might become the team’s gopher and be stuck doing the menial tasks that others do not wish to.
This pattern reminds me of my sports teams in high school because the younger and newer players would be stuck carrying the equipment, like basketballs/soccer balls, because they were still learning and were going to be the next generation of the team. I felt that this hierarchy was necessary and built character in many of my teammates and myself. I can see myself wanting to impress and help my future development team in the future, so I will apply this in my future job. I felt that it’s important that the pattern mentioned the possible downsides of this pattern which is being stuck as a floor sweeper. I respect people with more experience than me, but after some time has passed I will not allow myself to be stuck as a floor sweeper and I am not afraid to voice my thoughts and opinions on these matters. Trust is an important part of teamwork, so this is something that can easily help me and others to build that trust with their new team. This pattern didn’t change my thoughts on what I expected in the software development field because having the new workers do things that are a hassle or really low level things is common practice in every job in every field.

From the blog CS@Worcester – Tyler Quist’s CS Blog by Tyler Quist and used with permission of the author. All other rights reserved by the author.

Breakable Toys

The pattern form “Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman” by Dave Hoover and Adewale Oshineye that I have chosen for this week is called “Breakable Toys”. It talks about being on a job that does not allow mistakes or failure, but without falling there is not room to learn or grow. How is one supposed to learn and fill in their gaps in knowledge if something needs to be right the first time. Simple solution is to create a “simple toys” on your own and play with them, fail with them and break them in order to fix them and learn from those mistakes, that will be unrelated to the project but an opportunity to learn and grow for it.

This pattern is something that I have used myself many times, what helped me a lot in this regard is also fact that I was going to school and was learning or “playing” with new programs and ideas all the time. Many people or managers, in my opinion do not understand how much learning or failing needs to happen before a good program will take shape, many times even just a working software, not perfect or good, is a major learning task for employees. To be able to do so safely and without repercussions from a work environment is a key in staying ahead in your career.

In my own experience I have done similar things described in this pattern and have even done so while at work, but only in thanks to a very understanding leader and mentor who was not afraid to let me take some time to familiarize myself with something new we were going to do. I am aware that not everybody has the same luck as I did and that is where this pattern is very much right. All people in our field should be able to play with the new software, new language and be able to just break it, to be able to later fix it and learn from the mistakes made, the only way that I can see the absolutely everybody can do it is on our own time, at home. It might not be something we will be paid for but it will let us develop decent skills and be familiar enough with a given concept to pass in the environment that does not allow failure.

From the blog #CS@Worcester – Pawel’s CS Experience by Pawel Stypulkowski and used with permission of the author. All other rights reserved by the author.

Concrete Skills

The pattern form “Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman” by Dave Hoover and Adewale Oshineye that I have chosen for this week is called “Concrete Skills”. It talks about being a “newbie” in a workforce and looking for opportunities in the advanced teams that exists in computer science field. The pattern describes how not many companies and employers are willing to hire somebody fresh without years of experience and already developed skills. It also tell us how to try and convince the potential employer to “take a leap of faith” and higher you or somebody else by making sure that you have a set of skills that can be used to help the team out even if it is just manual work or automation of simpler tasks.

I believe that this pattern is somewhat correct but not completely. What I agree is that having the “concrete skills” will definitely help with finding a job and being better at it, but the flip side of that is that it all depends on what employer is looking for, certain skill will be very specialized and not everybody needs those, or they are obsolete to begin with and some new way of going about a task is more popular now. The pattern describes how those “filler” skills might just be enough to get people through the HR or certain managers and allow next step in the hiring process.

This pattern made me think about how the current workforce is a lot of smoke and screens to make people either think that a company X is more advanced than they actually are or how potential employees need to fill in the resume in order to just somewhat be considered for a position no matter that most of those supposed skills will never be used. All this is infuriating. From my personal experience I know that a lot of companies, half the time, don’t know what is posted for the job requirements or nobody on the team even has those skills and they are “required” simply because some other A-list company had them on their job posting.

Overall, in my opinion this is a very mixed feeling pattern for me. Yes, it is good to have a wide pallet of skills to help with the job search but at the same time a lot of the same jobs do not actually use those skills at all and they just become a filler to make the potential employee search easier.

From the blog #CS@Worcester – Pawel’s CS Experience by Pawel Stypulkowski and used with permission of the author. All other rights reserved by the author.

Helpful Advice for Seeking Employment

Today’s chapter in Apprenticeship Patterns is “Concrete Skills”.

This pattern provides an overview to the idea of more specific skills developers should have as they start their careers.

I think that this pattern serves as a good introduction to this topic. This pattern seems especially relevant to where I am now as I will soon be looking for employment after graduation and this is a good general reminder of things that software development managers are looking for.

I like and agree with the idea of creating a project for demonstrating your knowledge of the skills that you have acquired. This is what my team has been doing for our work so far this semester on the UpdateGuest project and I, along with my teammates, think this helps to cement the knowledge gained when learning new tools and languages. This pattern serves as another good reminder that this is also something I want to do more of with my personal project and I particularly want to start moving away from using languages I already know to learning and improving my abilities in these “concrete skills” with new and different tools that I am more unfamiliar with. I specifically want to get better at some of the examples mentioned in this pattern including web design and JavaScript, along with Angular as these three things seem like important requirements for developers now.

Although I think this pattern provides helpful information, I do wish that this pattern was more specific and detailed. I believe this pattern could benefit from expanding upon the information it offers. I also think that it would benefit from including an example CV showing how these skills are listed and defined on a real document. After reading this “action” section, I am now curious as to what the most important skills are for a starting position in the DevOps field and if I already know any of these skills. Again, I think this section could benefit from suggestions as to where to go to look for these besides people you may know.

Altogether I did find this pattern helpful and a useful reminder of what the most important parts of a resume are for a software developer. This is true especially as I move on to creating and refining my own resume in preparation for getting my first job in the software development field.

From the blog CS@Worcester – Chris' Computer Science Blog by cradkowski and used with permission of the author. All other rights reserved by the author.

Unleash Your Enthusiasm

This apprenticeship pattern is about how when starting an apprenticeship you need to use enthusiasm to help the team since it is the only thing you have over the more established and experienced members of the team. It starts out saying how most people starting out have a problem when they start out in their career, they try to hide their enthusiasm.  They do this because they are worried about looking foolish or sticking out from the group. Although it says that there are risks to unleashing their enthusiasm. Such as if the team isn’t welcome coming to new comers the team might mock you behind your back. It also says that if the team values competence more than learning it might not be a good thing to unleash your enthusiasm. It says that if the team seems like a good fit for it they should unleash their enthusiasm because their enthusiasm is one of their biggest strengths. It says that it is one of their biggest strengths because unleashing your  enthusiasm allows out of the box thinking and new ideas that more experienced people wouldn’t think of. Lastly, it says that unleashing your enthusiasm is the most important thing you can bring to the team.

I think that the pattern is very good advice. It tells you what unique skills you can bring that jaded decrepit old hands can’t. I also found it interesting how the pattern says that even though you don’t have experience in a certain way that can be a good thing.In addition I found it useful how it gives you examples of why this is helpful and also when not to do it.I found it thought provoking how it says that your inexperience can be a benefit.This apprenticeship pattern has given me confidence that even though I don’t have much professional experience I can still be a benefit to a team.There wasn’t really anything I disagreed with in this pattern. Overall I agree with it completely and think it something everyone should read when they start out in a new apprenticeship.

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

Share What You Learn

My work over the semester has required me to explain what I have learned to my teammates. My explanatory skills are not great, but I have been able to make do with the help of live examples. Chances are likely that I will need to do this continuously throughout the future. Since this is an important skill, I will need to practice my instructive capabilities. Luckily, the pattern “Share What You Learn” from Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman, by Dave Hoover and Adewale Oshineye, addresses this problem.

“Up until now, you have focused exclusively on your own improvement as a craftsman. To become a journeyman you will need the ability to communicate effectively and bring other people up to speed quickly.”

“Share What You Learn” discusses the reasons for passing your knowledge to others. Ethically, it is wrong to only receive knowledge from the community and never give any in return. Being able to capably communicate your knowledge will make you a better developer. Teaching knowledge requires a deeper understanding of the knowledge than just using it. Also, other apprentices may appreciate an explanation from someone with the same level of abilities.

The pattern warns to be sure that the knowledge being shared, can be shared. It is common for companies to keep trade secrets, including software development information, so be careful.

There are a few ways listed for practicing “Share What You Learn.” One way is to write blogs about projects you are working on. The act of writing down your methods will make it easier to remember the details later. Another is to try writing a tutorial for a topic, presented in a way that you wished the topic had been presented to you. Lastly, imagine preparing for a workshop at a conference and how you would prepare for presenting your work.

I must agree with this pattern’s assertions, I believe being able to pass along knowledge quickly and clearly is an essential skill for software developers. As I have experienced this semester, I am not skilled with this pattern and I feel it has impacted our work to some degree. As such, I will need to practice “Share What You Learn” to be a better teammate and developer.

From the blog CS@Worcester – D’s Comp Sci Blog by dlivengood and used with permission of the author. All other rights reserved by the author.

The Benefits of Being a Beginner

This evening I continue my reading of Apprenticeship Patterns with the third pattern titled “Unleash Your Enthusiasm”.

This relatively short pattern describes the benefits and possible disadvantages, along with how to handle the “enthusiasm” of being a new developer.

I both agree and disagree with both of the areas of this pattern that describe the “context” and the “problem”. In my current situation and from my memory of the time I have spent in the software development courses so far, I have found that the professors I have worked with and learned from can have more “enthusiasm” than I do. I think that this is one of my favorite parts about taking this track of computer science was getting to learn from people who enjoy the work and learning as much or more than I do. I think this was specifically the case last summer with my work on the LFP community which really helped to motivate me to contribute to it and kept me going. At the same time, I also agree with the idea this pattern presents that a rather unenthusiastic group can bring down the mood of someone excited about being new to the field.

I do understand the rather unfortunate idea of only being excited about projects outside of regular work. I personally find this to be true and that although I usually enjoy working on my project, it is not just because of the topic or the self-interest, but also because of the freedom allowed in the workflow when you work on your own project. I think this point about a group’s attitude while working is something I want to keep in mind when I begin looking for a job as a software developer, as I would prefer to have a job where everyone enjoys the work they do and encourages this passion in each other.

Overall the quality this pattern describes seems like one of the best perks of being new to this field. I do worry that for me this quality will diminish over time and I hope that I haven’t lost it already before I’ve even started. I think that this pattern does a good job of pointing out this quality of a beginner’s enthusiasm and that it is something I want to work towards keeping now that I am more aware of it.

From the blog CS@Worcester – Chris' Computer Science Blog by cradkowski and used with permission of the author. All other rights reserved by the author.

Apprenticeship Patterns: The Long Road

The Apprenticeship pattern I would like to focus on this week is “The Long Road.” The pattern explains that becoming a master of software development is a lifelong endeavor. This conflicts with our cultural obsession with quick results and rapid progression. Developers who wish to become masters need to understand this and learn to focus on long-term goals to help them build their skills over time. Mastering new skills can take many years, but preparing ourselves to dedicate our time towards learning such skills can open up many new possibilities. The pattern emphasizes that The Long Road towards mastery is not for everyone and that there are plenty of other paths to take. However, choosing to aim towards mastery with this path enables us to better understand the fundamentals of the craft, helping us maintain our abilities in a field that is constantly changing.

I chose to discuss this pattern because it has been referenced by several of the other patterns I have posted about. After reading through it, I definitely understand why The Long Road is so important to these other patterns. The book is targeted at those who wish to master software craftsmanship, which requires a lifelong dedication to development and programming. As such, the other patterns might not be as effective for a reader who lacks this dedication or has different goals. Reading this pattern has made me more aware of the necessity of lifelong dedication on the road to software mastery. It has also made me question if I have this dedication myself and if this path is really the right one for me.

I’ve never really had an ultimate goal in mind while studying software development. I know I enjoy programming and want to learn more about it, but I don’t know how I want to apply myself professionally. The Long Road sounds quite appealing in some aspects. It would allow me to focus on programming instead of taking higher-paying jobs which don’t interest me. It would also allow me to use the skills of others to set goals for myself instead getting discouraged by them as I often do now. However, the time and dedication required for The Long Road are frightening to me. Because of my recent struggles regarding my passion for programming, I am unsure if I would have the motivation to continue learning new software development skills for the rest of my life. I think, for the time being, I should focus on nurturing my passion for programming. This will, hopefully, help me decide if I should pursue a different path or if I am ready to walk The Long Road.

From the blog CS@Worcester – Computer Science with Kyle Q by kylequad and used with permission of the author. All other rights reserved by the author.

The White Belt

The white belt is discussing the situation where you are feeling yourself come into full fruition with your first language. However, once you reach this area it is common to feel that your progress and knowledge is starting to plateau. It often becomes harder to learn a new language per-se when it is easiest to fall back into the one you are so comfortable in. What wearing the white belt means, is being able to fully put aside any of your other knowledge and be able to accept that you are new to this and must re-learn in a new way. By approaching a new situation with a stance of “not knowing” as the pattern says, you will be able to have a broader grasp on the subject. This will also allow for you to be able to progress in the new skill much quicker due to the fact that you are not letting previous, possibly contradicting knowledge of another skill have any affect on your current learning. This is often the easiest way to not feel like you are plateau, but instead staring up another steep cliff of learning. That is how you can ensure that you never stop learning. In this pattern it is worth mentioning that a skilled industry veteran ended up “wearing the white belt” after reading a book that caused him to change how he wrote code entirely. The codebase he writes now he has claimed to be “better tested, more loosely coupled and more adaptable system”.

I find this pattern one of my favorite due to the amount of times I have had to wear the white belt. I began writing code in Java since I was 14-15 and had been my predominant language up until learning C some 5 years later. I originally struggled with C because I had been trying to relate it too much to Java. After viewing it as a completely different world, unrelated to Java I began to have swift development in C. From there I then had to do the same when teaching myself Angular. Angular was different from anything I had done before but again once I started to view it as such, my progress was much quicker. I even had ended up deleting a large portion of work with Angular that had taken me about 3 days to learn how to do. However, since I deep dove into learning everything about Angular, I was able to recreate it within 2 hours the next day.

From the blog CS@Worcester – Journey Through Technology by krothermich and used with permission of the author. All other rights reserved by the author.