Category Archives: Week-2

Building Concrete Skills

When I look for patterns to read and write about in Apprenticeship Patterns,  my interest is first directed at the context and problem sections of the text. Naturally, I’m drawn to patterns which most directly apply to my position right now. In this pattern, concrete skills, the context and problem could not be more true.

I am in a position where I begin my apprenticeship in a scrum team full of skilled programmers. I will be the intern and as such will have the least knowledge or experience out of anyone in the group. This pattern offers actions and solutions I can take so that I won’t need as much as what the authors put it “day care”.

I appreciate the simple wisdom of the advice the authors give. If I am worried about not being able to meaningfully contribute, learn a few concrete skills that will help me take on a few responsibilities, easing the burden on the team to train me.

A few actions I should take to achieve this goal are to make demonstrative applications using the concrete skills needed, as well as looking at similar code from other people and trying to figure out their logic and methods to solving the problem.

In my case, reading this pattern helped me decide a concrete skill that will help me be more of an asset to my future team. I know that we will be working with Spring, so I will try to learn about making components with spring and creating a simple program or two, so that on my first day I am already equipped with some kind of knowledge that will get my foot in the door and make me useful.

From my limited experience reading this book so far, I have already started to change the way I view how to take the first steps of my career. Up until this point I felt as though the wider your experience the better, but the examples the authors use really illustrate how much more value I can get by focusing on a few things, and taking small steps to build concrete skills which will be a bigger benefit for me and my future team.

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

Your First Language

This blog is about the first pattern in the Apprenticeship Patterns book by Adewale Oshineye and Dave Hoover called Your First Language.

This chapter was about picking your first language as a programmer. Picking your main language is difficult. There are so many languages out there that it is really hard to weigh the pros and cons of each of them. But you have to pick one since obtaining your first job will most likely depend on your proficiency in a specific programming language.

This chapter offers different solutions to this problem. One is to have an actual problem and solve it using the language that you chose. Instead of just following tutorials and examples in a book, solving an actual problem provide your first feedback loop. One other suggestion that they have is to write simple tests to check your understanding of the language. Since test-driven development techniques are so popular nowadays, it is impossible not to find a language that does not have a testing framework. It is a great way of learning how other people’s libraries work. One can always learn about a language and try to be proficient in that specific programming language, but it is still important to find a mentor.

I thought it was interesting how they kind of emphasize on having a mentor for your first programming language. Since we keep using different languages throughout the course, it was hard to find and settle on your first programming language. Not to mention, finding a mentor. Finding my first programming language is still a problem even now. I still cannot seem to settle on one language to master since each of them offers different specialties. This pattern has caused me to change the way I think. Since I always try to learn something new, I never really “specialized” on something. My mind is usually all over the place and I am always trying to learn new things. But, the problem is that I never mastered anything. I always seem to only learn the basics and then move on to different things. After reading this chapter, I want to try and settle on one language try to be better at it before moving on to other things.

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

“Unleash Your Enthusiasm”

As computer science student, I believe we all have this excitement at some point. We get into the new environment, new team and new technology that we excited about. You have an insatiable excitement and curiosity regarding the craft of software development, this is sign of “learner”. I, personally want this in my team, and want this as my enthusiasm in learning new things. This could pick up to the excitement and contributions of an apprentice to the team. For team who welcome this, this is great. But in teams are not hyper passionate or overly enthusiastic about technology. As most company they are most likely to focused on delivering the next project or improving on the aspects of the development life cycle. Show over enthusiasm, you could certainly make a poor impression on people who value more than learning ability, particularly when you expose your ignorance. This is where you need to adjust with the team. Although your excitement is great but over all team is more important.

I definite was in the shoes of these pattern though my school career. If the team is welcome me, it feel great. But there also time where our energy wasn’t matching, I would feel unwelcome or my mistakes are become more highlight than anyone else. This may let’s some of members down, I believe this pattern should be in one of the roles of being teammates. Is to should push each other, and motivation to be excitement. We should be excited to learn. Your ideas and passions will add intelligence and diversity to your team. We shouldn’t too over excitement, but we should be ourselves. Like the action in the book recommend, we could share our idea to the person we comfortable with, see their reaction. This way we could fix our flaw before representing to the team.

This pattern related to my school year, when I get into new group. I am excited get to know new people and their working method. I must keep the team overall as the most important, I have to adjust to the team. But most of the time, I am very welcome to the team and my constitutions are noted.

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

Breakable Toys

For this week I have decided to do my blog on the Breakable Toys pattern. The problem presented when your environment does not allow for failure. As a college student I know what it feels like to be in an environment that does not allow for failure. If you fail classes then you cannot move on to the next semester, class, project, or graduate! Since I understand the feeling of this environment, I was naturally interested in what this pattern had to offer for me. The book says that the only way to learn is by failing so that you can learn how to correct that failure and get it right the next time around, growing as a person and a software developer. I enjoy this thought because I can think of many numerous occasions where I have failed at something – not just limited to software  development – and learned from my mistakes in the end. How are we to learn why something is correct without first understanding what happens when it is not correct? In my eyes, if we see why it fails then we can understand its true purpose and understand why it needs to be correct. This pattern suggests failure in order to learn. It does not suggest blowing stuff off and failing at the “real deal” stuff that will  be done at work, but rather urges us to practice on smaller projects/ideas with the same toolset as the “big one” in order to fail on a small level and in turn understand the true meaning of our toolsets. This is important because if we fail at a small level it will be easier for us to understand where and what went wrong and how to better understand our toolset that way when it is time for the big project we will have full understanding and control of our toolset so that we will not fail on the real-deal. The book also suggests building a wiki style page as your small project because you can track yourself through it, in turn building off of it and making it something big and meaningful from something small and easy.

From the blog CS@Worcester – The Average CS Student by Nathan Posterro and used with permission of the author. All other rights reserved by the author.

Individual Apprenticeship Patterns

https://www.oreilly.com/library/view/apprenticeship-patterns/9780596806842/apa.html

Of the list provided above, I will go into detail summarizing specific patterns I find to be interesting or relevant.

I will begin with the pattern titled “Be the Worst.” The title is somewhat misleading, since the objective is actually to improve yourself at every opportunity. If you find yourself as the biggest fish in the software development pond, this pattern encourages you to find work in a bigger pond with bigger fish. Now, you can learn more from them and work your way up to being the biggest fish again, then repeat the process. From the standpoint of prioritizing knowledge above all else, this pattern makes sense, however, I don’t think I have the courage to follow it.

I can relate this to my current job at Best Buy. When I was first hired, I knew nothing about TVs, security cameras, and appliances also I didn’t know as much as I needed to about routers, car improvements, and drones. I struggled for the first few months as I awkwardly tried to give customers the answers I thought of on the top of my head. That period of employment sucked and I knew as I learned and practiced talking, I would get much better at it. As a result, my sales would improve, my job gets easier, and the customer buys something they actually need.

This pattern would encourage me to quit my job and go work at staples or another retailer where I knew nothing about the products, so that I may learn them all over again. This comes with great awkwardness, and the customers can always tell when I don’t know what I am talking about. This move seems absurd, certainly not worth it unless it came with a higher pay, to which I’d talk to my manager at Best Buy for a raise first. If this experience is like dealing with a new group of software developers, it would be a very difficult decision for me to leave my current group.

Another relatable pattern the article mentions is “Expose Your Ignorance.” This is about humbly accepting that you need help and actively seeking it despite looking stupid. It is very easy to feel ashamed for not having knowledge, based on the fear that it is very easy for people with knowledge to look down on those that don’t. Nobody really wants to raise their hand in class, a setting designed for answering questions, in fear of their question indicating they are ignorant. This is very destructive, very common behavior and overcoming it is necessary to learn more efficiently.

From the blog CS@Worcester – CS Mikes Way by CSmikesway and used with permission of the author. All other rights reserved by the author.

Apprenticeship Patterns Overview

https://www.oreilly.com/library/view/apprenticeship-patterns/9780596806842/#toc-start

I have been assigned to read the first chapter, and the introductions of the subsequent chapters two through six. My first take-away line from the first chapter is that this book was written for me, not for my boss or professor. I find this ironic, since I wouldn’t even know about this book if not for my professor assigning it to me. I understand the meaning is to read it for my own benefit above all else, which I agree with.

Martin Gustavson summarizes apprenticeship as having the attitude that there is always a better way to do things than what you produce. Does this mean that as soon as I believe I have produced something that I believe is perfection, I am now a journeyman? I feel like this definition is not very accurate.

The outcome of an apprenticeship depends on how much effort one wants to put into it, it is more my responsibility to succeed than my master’s/teacher’s. I’d like to add that having a good or bad teacher directly effects how much I am going to learn. In high school, I barely passed algebra 2 with a D, whereas in college, I got an A in calculus. Obviously there is a huge leap in difficultly of the two subjects, so why did I preform much better in the harder class? The main difference between the two classes (and the two outcomes) was based on the crappy high school teacher I had versus the professional college professor. That concept will repeat in an apprenticeship setting.

Chapter two’s introduction starts with an interesting story about a philosopher and a zen master. I found this passage particularly interesting. Every time the master tries to explain something, the philosopher excitedly interrupts him by expressing what he has learned or studied elsewhere. By interrupting the lesson, the philosopher misses out on information. The phrase “empty your cup” refers to the concept that you must come to new experiences with an empty mind in order to fill it with as much knowledge as possible. New learners especially have this problem where they rudely can’t listen and learn. I may be guilty of this, but at least now I am conscious of it.

Chapter three is all about the “long road” in reference to the endless journey of knowledge. It bothered me particularly when the chapter states the importance of long term goals over things like salary and leadership. If I understand this correctly, long term goals in this context only means more knowledgeable in a specific field, with the trade off being you wont make as much money. My long-term goal is solely to make as much money as possible.

I would rather rich and dumb than smart and poor, depending on your definition of “dumb.” The book seems to define “dumb” in this context as “not knowing as much about programming as you could” which I can live with. As long as I am smart enough to be a good person, I would rather make more money. Overall, I think this book prioritizes knowledge too much, knowledge is the means to wealth and power, not the other way around.

Chapter four is about not becoming comfortable as the smartest person in your development group. If that happens, the book encourages leaving that group and becoming the dumbest person in a different group, then working your way up again, which makes sense and is agreeable.

Chapter five reiterates that perpetual learning is important no matter what your skill level. It covers prioritizing a reading list and continuously learning as much as possible.

Chapter six is related to five in that you must maintain your own learning. Once you graduate, you don’t have assignments or due dates to keep you on track. Beneficially, this means you also don’t have to learn anything you don’t think is relevant/interesting.

From the blog CS@Worcester – CS Mikes Way by CSmikesway and used with permission of the author. All other rights reserved by the author.

Journey into Drawing Your Own Map (A Individual Apprenticeship Pattern)

On this Software Development Capstone journey part of my assignment is to choose 10 Individual Apprenticeship Patterns out of 35 patterns among Chapters 2-6 from the book Apprenticeship Patterns: Guidance for the Aspiring Software Craftsmanby Dave Hoover and Adewale Oshineye. For my second individual Apprenticeship pattern I have chosen “Draw Your Own Map”. I will first summarize the pattern and then I will state my reaction of this pattern.

Draw Your Own Map summarized

An employer might not have career path that fits you best. You should also, “Understand that it’s not up to your employer, your career counselor, or your professors to give you a hand up. Arriving at your next step and charting the course to ultimately arrive at your ideal destination is your responsibility.” It is important for you to draw you own path. That way you will be able to follow the path you want to be on and be in control of your own future. This pattern first suggest you to start out simple when drawing your map by first writing small achievable goals. These small step are important because they help you build your confidence and even allow you to be able to tweak your map. As you follow the map you have drawn up you should know that when needed it is okay to consistently modify your map to fit your mindset as you grow and change. The map you draw is for you and sometimes it might seem like your on the same path with everyone else around you or your on a lonely path either way it okay. As long as you are following your goal and remain motivated  in the long road it will lead you to great success.

My Reaction

This pattern guides you with the ability to draw up a map to your own goal. It also, reminds you that you are solely responsible for your own future and the path you take is ultimately up to you. I agree with this idea. I found that this idea is not just interesting but also useful and thought-provoking. This pattern has definitely changed the way I think about my profession and the way I think I will work because it has made me realize that I am in control of my destiny because as a software craftsman I will have a set of quality that will last me a life time.

Thank you for your time. This has been YessyMer in the World Of Computer Science, until next time.

From the blog cs@Worcester – YessyMer In the world of Computer Science by yesmercedes and used with permission of the author. All other rights reserved by the author.

Be the Worst (week-2)

This pattern, “be the worst” to my understanding means, we should surround ourselves with people who are very clever or know more about the subject or field you are in.

From the readings under “be the worst ” which says “what do i do when my rate of learning has leveled off?” You have taken the time to learn something new, immersed yourself in the subject matter, practiced diligently for a period of time and look up and see that you are ahead of those around you. Now what? There are only so many books, blogs, and other resources you can learn from until you reach a point where you must learn new skills from other humans. We are social creatures, by nature. We rely on each other to survive and part of that survival involves learning from each other. It’s difficult to imagine a world where we all had to learn everything on our own and couldn’t benefit from the knowledge and insight of those around us. So for us be connected with the world we need to learn from others. And also the is a saying not everything that we know, we learn from each other and by that we grow. So the more we learn from other developers, there more we grow as a developer. We can look for people who know more than we do and learn from them. We can also be in a team were you a the least among them. Knowing you are the least, you tend to work harder to keep up with them and also you get to learn new skill from them too.

From the readings “weakest member of the team, you should be working harder than anyone else”. There are risks associated with this strategy. You will be the least effective developer or person around the team. This also means your contributions will not be sufficient whereby dragging the team down. Because of this situation, team members may not put up with you very long. So not putting all these risks into consideration, if you are really determined to learn, you will have to strive harder. In other sense, the only choice for you to stay in the team is to learn harder. That also means extra work for you.

Apart from all the risk involve, being the worst is a great way to improve your effectiveness in a given subject area quickly

Reading this pattern has made me know that in my own world i may feel i know everything till it get out of my world to see i really know everything or not. which knowing everything will never be the case. We all learn from each other. And knowing this idea, I will have to surround with people who are more challenging or better that me. Through that i get to learn new skill and better my self.

From the blog CS@worcester – Site Title by Derek Odame and used with permission of the author. All other rights reserved by the author.

Nurture Your Passion

I understand there will be a point in time where your team will be assigned a project that does not necessarily excite you. Sometimes it becomes quite difficult to work on something that you are not passionate about or the environment surrounding you is too hostile. From this chapter I learned that by working on one of your passions outside of work, you are in fact nurturing your passion and giving yourself a sense of fulfillment.

The author illustrates the important of setting clear boundaries that define the environment you are willing to work in. Steer clear of settings that disrupt your good mood; always try to stay positive.

I agree with this pattern because things may get overwhelming at times and this is the time where you have to take a step back and breathe. It allows you to connect with yourself again. I actually am not looking forward to experiencing times where an outside source impacts me and my work negatively and am curious as to how I will handle it.

From the blog CS@Worcester – Life in the Field of Computer Science by iharrynguyen and used with permission of the author. All other rights reserved by the author.

Apprenticeship Patterns – Draw Your Own Map

Draw Your Own Map is a pattern that discusses how you must forge your own path in terms of your career and not let yourself be boxed in by your employer. This pattern is relevant for everybody who wishes to advance their career as there is only a limited set of career paths that any employer can offer. It is not up to anybody but yourself to decide what the next step in your career should be. When you figure out you want your next step to be, you should visualize the smaller steps that you need to take to get there. Taking the first step will help propel you to achieve your goals. If you discover that your vision for your future is not compatible with your current employer, you should start looking for other opportunities. Draw Your Own Map is all about not getting stuck in one place that doesn’t provide for career advancement.

I think that this is a very useful pattern to follow. It is common for people to grow comfortable in a certain role which makes them unwilling to look for other opportunities. It is also unlikely that any company will provide you the exact path that you want your career to follow. It’s important to remember that your employer is not invested in you advancing the exact way you want to. Even though you may work for a particular company for a long period of time and feel like you should have some level of loyalty, it is better to examine other opportunities when your company’s ideas for you are not aligning with your own. This is the only way to truly draw your own map.

I thought that the two example stories given were interesting to read through. Reading real life examples helps to drive home the point of the pattern and shows that this type of thing is not uncommon. It was also interesting to learn about two actual career paths that have been taken by people in the industry. Overall I think that this pattern is applicable to everybody and is important to remember for people beginning their careers.

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