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.

Study The Classics

This pattern begins by discussing the fact that many experienced developers will often refer to older books that are assumed to have been read by any developer in their position. If you come across a situation in which you are unaware of the book being mentioned, you should make sure to add it into your next books to read. Often times these old books contained outdated technology but certain ideals and basics behind them never change. You have to be careful though when going into the so-called classics of software development. You must be able to distinguish which books no longer have any benefit as the technology has changed so drastically or is not even still used. However, if you run into a software developer that has a book that seems to be too outdated to still be relevant, you should open a conversation with them to be to get the reasoning behind the book and potentially add it to your reading list.

What I found interesting about this was that often times in classes you do end up reading articles that are from over 15-20 years ago that still hold true. I believe this to be true because of the nature of computing, the basics almost always remain the same, people have just become cleverer on how they can be manipulated. By being able to look into the beginning of how a certain software was created, it can also give insight on how the current version of the software can be improved. Often times when adding to software they are looking only at the most current forms of it, when looking further backwards could also prove beneficial.

I think this pattern has pushed me to start to try and expand upon the books that I read for whatever happens in my path towards a career. All too often, I glaze through texts not fully absorbing what is inside. The times I have genuinely studied the texts and books I was given, I found that I was able to massively expand my knowledge and it really comes down to commitment. I agree with this pattern because they also mention that not only should you keep up with the classics, but you should be mixing in the most modern books as well to always stay up to date.

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

Apprenticeship Patterns: Expose Your Ignorance

I like how in this book the author talks about patterns, its problems and then solutions.

When you are hired by a company, part of a job is to be aware of what you are doing. Are you doing according to the instructions or you are scheming and completing the task by avoiding some minor details. Companies who hire you depend on you. They depend on your intelligence.

Sometimes no one is aware or actually knows how to complete the task. It is very common for entry level software engineers to not know much about how companies want them to do it. Even people who have 10 years of experience, lack some skills when they are given a task.

This creates a problem. A problem where you find yourself frustrated. You would feel unaccomplished and start to question if you are even capable of doing the job.

I have been there and yes it is frustrating. Knowing that you are able to do the task but in some areas you are uncertain. It’s easy to get yourself in a loop of finding the right thing to do. The right thing to do is actually working on a skill where you are having trouble with.

You have to show the people,who are dependent on your work, that the learning is a  part of “delivering software”. You have to be honest with your colleagues and mentor. Let them know that you are unaware of a certain thing. Don’t hesitate to ask for help. The first step to achieve something is to be confident. It sets your mind and lets you focus on the task. It prevents you from wasting time. If the person sees your confidence they would trust your progress and would know that you are capable of doing it. Building trust with your college and clients build strong relationship. This is what you need to have a successful career, especially in the programming field.

You should not ignore what you do not know. You have to learn and go through it because even the smallest thing can make a big impact. This matter is any field. Being in a team, where everyone’s task is to learn, grow and give. If one of the team members fails to do any of the 3 tasks, the whole team fails.

One of the most important traits that a craftsman can possess is the ability to learn, identify an area of ignorance and work to reduce it.

By exposing and then confronting your ignorance you get a much better grasp of the task. You will be able to complete the work with understanding.

I have failed a couple times by ignoring the skills that I don’t know.

In the beginning you don’t feel the urge to actually learn about it but in the long run you would not be satisfied with your work. You would consistently look back and wish you’ve learned that before.

Whenever I get stuck on something I try to do more research on it, read about it, ask someone who has knowledge on it. It is a lot of work but in the long run it is helpful because these small strategies make a big difference.

From the blog CS@Worcester – Tech a Talk -Arisha Khan by ajahan22 and used with permission of the author. All other rights reserved by the author.

Draw Your Own Map

The apprenticeship pattern Draw Your Own Map helps express the idea that you create your destiny so to speak. There are things that may be required of you to achieve a goal and other people may be involved along the way but when it comes down to it only you are responsible for the steps you take in order to reach your destination. Your Professors, employers, or counselors can help guide and teach you but they cannot decide for you what you will do. It’s all up to yourself to hone your skills and knowledge to forge your own path, to decide what your goals are. This apprenticeship pattern isn’t just about creating large long term goals either, it’s also about making some goals, the single steps. Having small goals will help lead you towards your ultimate path, failures and successes will help mold you, but the more goals you pursue the more knowledge you will have of yourself.

I think this apprenticeship pattern is especially correlated to my experience in Computer Science. This pattern is all about making your own future and since the very first day of pursuing a Computer Science degree that has been an important skill to learn. When learning about programming you can learn all the textbook examples and read documentation and examples. However, the real learning comes when you start making mistakes. When you start to learn through trial and error along with educating yourself. You learn the skills necessary to be a programmer but in order to program you have to apply those skills yourself. It’s like being an English major who wants to one day write a great novel. You learn all the skills to write well, but you have to create the story, it won’t write itself just because you know the skills. Just as your Professors cannot write your code for you, or your employer cannot apply for your next job for you. You must create your own future with skills that you learn to use for yourself.

Since learning that Computer Science is all about taking your skills and applying them in your own fashion, it has given me insight to my future that I did not have before. It’s true that I do not know where my career will take me specifically, but with my knowledge and skills I learned I know how to get myself there. Wherever “there” may be for you, you can Draw Your Own Map.

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

APPRENTICESHIP PATTERN REVIEW #8:Expand Your Bandwidth

Learning about what we don’t know is often more important than doing things we already know how to do. Jim Highsmith, Agile Software Development Ecosystems I wanted to write about this pattern few weeks ago but I don’t know why I was hesitating from writing about it, maybe because the whole concept or idea behind this … Continue reading APPRENTICESHIP PATTERN REVIEW #8:Expand Your Bandwidth →

From the blog CS@Worcester – Shams's Bits and Bytes by Shams Al Farees and used with permission of the author. All other rights reserved by the author.