The Long Road

Problem

You aspire to become a master software craftsman, yet your aspiration conflicts with what people expect from you. Conventional wisdom tells you to take the highest-paying job and the first promotion you can get your hands on, to stop programming and get onto more important work rather than slowly building up your skills.

Solution

The solution the text offers is to first accept that what you want to become might be strange to others, and second to always think in the long term. Value learning and long term growth opportunities over salary and traditional notions of leadership. By focusing on your long term development, you are enriching yourself with a set of skills that aide learning, problem solving, and developing strong relationships with your customers. Keep in mind the length of your journey, if you have 20 years of work ahead of you, you have plenty of time to master your skills. The text mentions that this pattern is not for someone who wants to become CIOs or product managers, or filthy rich. Thankfully the software development field is constantly changing and new opportunities are always available.

I think this pattern is a good grounding for anyone who may be a little too ambitious, and may take promotions without understanding how this may affect the Long Road. Unfortunately, sometimes taking a promotion means a break from learning, and while you may be making better money, you may be setting yourself up for failure down the road, or at least you want have the same skills and knowledge you would if you continuously worked on being a software craftsman.  I do think it’s important to always consider the Long Road, where you are in your career and what kind of job you want. I think this pattern is subtlety saying that taking jobs as mangers or corporate executives may not be as rewarding as working on their craft their entire career. This pattern is a good reminder to me to keep the long road in the back of my mind and focus on always putting myself in a position where I can learn new things and hopefully avoid burn out.

The post The Long Road appeared first on code friendly.

From the blog CS@Worcester – code friendly by erik and used with permission of the author. All other rights reserved by the author.

Apprenticeship Patterns – The White Belt

Summary

One’s ability to learn…

My Reaction

I agree

From the blog Rick W Phillips - CS@Worcester by rickwphillips and used with permission of the author. All other rights reserved by the author.

Walking the Long Road: Sustainable Motivations

In this Apprenticeship Pattern “Sustainable Motivations”, it explains on how to sustain your motivation as a software developer through walking “the long road.” This pattern gave very good examples in situations where a software developer can have decreased motivation within their state of mind based on what they are currently doing or have recently endured, whether it be from a project for a customer, or in general, life at work. Some aspects that this pattern exemplified was the balance between being happy at what you do as a software developer, honing your skills and craft, and the amount you are getting paid to be financially well off.

At one point in the pattern, it gave very good examples that illustrate the point that there will be times as a software developer where you question your commitment to honing your craft or your profession.

“You hate your programming job and you’re motivated primarily by money. You find yourself focusing on climbing the corporate ladder over honing your craftsmanship. But you are also motivated by your reputation as a technologist, and this allows you to endure long enough for your job situation to improve.”

“You’re motivated primarily by your enjoyment of programming, but you’ve had a few months when you can’t feel the love. You are seriously considering abandoning the profession. Fortunately, you are also motivated by money, and you think that programming is your best option financially right now. You stick it out for the money and eventually your love for programming returns.”

I can picture myself being in these situations because of my concern for getting a well paid job. I know for a fact that money helps my motivation, however at the same time, I want to do what I love in the software development field, particular video game programming and development. In my mind, there will come times when it will be tedious and difficult while working, but with any job or career, work is work, and there can be times where I know I’ll face hardships and I will overcome them. Loving for what I do in my career will be the main reason for the longevity of my video game development career, and I’ve always known that since when I was a kid, I’ve had a passion for video games.  This pattern has opened my thinking on this particular career path and I agree with what this pattern has taught me about sustaining my motivation as a software developer.

 

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.

The Dangers of Complacency

In a field that continues to rapidly evolve, staying up to date with the latest and greatest tools and techniques is essential. Complacency is simply not an option if one wishes to remain competitive and relevant in the information technology field. Not surprisingly, however, there are certain tools that we become familiar over time, through repeated use and practice. There is nothing wrong with this, as familiarity with certain tools or techniques allows for more accurate estimations about work, and helps to limit risk. In Hoover and Oshineye’s Apprenticeship Patterns, they present a pattern that helps software apprentices deal with the complexities of complacency titled Familiar Tools.

In the Familiar Tools pattern, Hoover and Oshineye start out by acknowledging how valuable it is to have a set of tools that you feel comfortable using. Not only does this make you more valuable to employers, it makes the work easier and more valuable to the developer as well. From increased productivity to more accurate estimates, familiarity is important in the progression of a software craftsman.

Although the word is never explicitly mentioned, this pattern also seems to issue a warning about complacency. Hoover and Oshineye caution apprentices from becoming too set in a narrow range of familiarity, as that puts them at more risk for becoming irrelevant should the popularity or usefulness of those familiar tools fade.

This pattern was pretty easy for me to appreciate, as I already enjoy learning and improving through personal and professional development. Perhaps this desire to stay ahead of the curve is part of the reason that I became interested in the field to begin with. I have always enjoyed staying up to date with the latest and greatest gadgets, trying out beta builds, and experimenting with technology. Although the context is a bit different in the Familiar Tools pattern, the idea is very similar. The quote by Eric Hoffer that is included in this pattern also spoke to me, it is, “In a time of drastic change it is the learners who inherit the future. The learned usually find themselves equipped to love in a world that no longer exists.”

When entering the computer science program three years ago, it was repeated time and time again that the material that I would learn in college will likely be outdated by the time I am entering the workforce. While this is simply a fact of the computer science field, I feel that I am doing well at keeping myself informed and appreciate the efforts by my educators in keeping my education relevant and valuable in a rapidly changing world.

From the blog CS@Worcester – ~/GeorgeMatthew/etc by gmatthew and used with permission of the author. All other rights reserved by the author.

Nurture Your Passion

This pattern is very important to every young developer who wants to stay on track of his ambitions. As the writer rightly said, it is hard to protect your passion, let alone grow it in a very constrained environment. I know as an inexperience apprentice seeking to explore the industry of software development, I am going to face many problems not limited to doing what I will not like. For that reason, I will need to find something that interests me at work in order to survive the challenges that will arise. I think it might be challenging to find something as you are not working for yourself; your employer will have his predefined requirement and conventions that might conflict with your passion. One thing I am not sure it is properly address is the issue of doing something you love even though the writer offers some suggestions. According to Paul Graham, “to become a successful developer may be to work on what you like and to do something well, you have to love it”. I have an issue here because, not all your assignment at work will be what you will like to do. I understood to grow my passion, I will need to set clear boundaries within which I am willing to work. So if the work at hand doesn’t falls within my set boundaries, do I quit my job? In those situations, what do I do then?  I also strongly agreed with the writer about immersing yourself in some of the great literature of our field. I think this book will serve as a great reference tool to deal with most problems arising outside the classroom upon graduation as far as the patterns are concern. This book will be my dictionary to all kinds of situation that I might come across as I travel the journey in the software development industry.

I have seen this pattern as the most challenging to deal with among the entire pattern I have read so far. Even though it offers some strategies not limited to walking out of meetings that has become abusive and redirecting cynical conversation toward constructive topics or refusing to distribute code that doesn’t meet your minimum standards, your team members and even superiors whom you take directions from might develop the impression that you lack respect for them and the penalty can go as far terminating your employment.

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

Apprenticeship Patterns: The Long Road

In this section of Apprenticeship Patterns the authors discuss what a developing software professional can expect from his or her career choice in the long run. The talk about how becoming a software craftsman does not happen over night and if someone hopes to master the the craft of software development they should be aware that they are in for a life long journey of learning and self-improvement. The authors describe the context for this pattern by discussing how the values of modern society sometimes conflict with the the practices necessary to become a master in the software development craft. They talk about the values of people in modern society consisting of “overnight celebrities, rising stars, material wealth, and quick results.” However, in the field of software development “quick results” can often lead to poorly written and/or bug ridden code. Also, the authors make a point in describing the problem that exists here being that modern values might compel a developing software professional to take the highest paying job they can find and quickly race towards their first promotion in an attempt to stop programming and start managing other people and making more money.

While higher paying salaries are definitely a key factor in propelling individuals to take up software development, the authors suggest this shouldn’t be the main contributor when it comes to making career decisions. Their solution to this problem entails thinking ahead and keeping in mind what will bring you the most joy and the highest sense of achievement. At the end of this pattern, in the action section,  the authors provide a thought experiment in which they ask you to think about where you will likely be in 10 years and what you will be doing. They then ask you to do the same thing for 20, 30 and 40 years from now and write down all of your answers. By doing this you may be able to gain some insight on what types of jobs/positions will be best suited for your own personal goals. I thought this was a great exercise and I found this pattern to be quite insightful. I also definitely agree with the authors on the idea that modern values don’t usually align with successful software development practices. After reading this pattern I believe that I will have more confidence in making career choices in the future through partaking in the thought experiment and referring to my answers when I’m faced with difficult choices within my professional career.

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

Apprenticeship Patterns – Concrete Skills

One day you will find yourself at an interview with a software company for a programming position. You need to show the employer that you won’t be a wast of their time and that you can be useful on day one. In order to do this you must have a set of Concrete Skills to do basic tasks that the team needs to get done. You must sharpen and hone your concrete skills and prove to them that you can be helpful on day one.  Oshineye and Hoover say, “examples of concrete skills include writing build files in various popular languages, knowledge of various popular open source frameworks like Hibernate and Struts, basic web design, JavaScript, and the standard libraries in your language of choice.” They also go on to tell you that having a deep understanding of your first language will help you accomplish these concrete skills. Once you have your concrete skills, you can work on learning your way to a journeyman.

How do you grow your concrete skills? The authors suggest looking over the CVs of the people you look up to or the people who know the skills you want to learn. Jot down their skillset and work towards learning them. This way, you are learning relevant information and working towards helping the company. The authors also stress going through your own CV regularly and updating it.

I really liked this pattern because it is directly related to my situation. I feel as though an employer will have to take “a leap of faith” (as the authors say) and hire me relying on my concrete skills to at least help a little bit on the first day. I need to sharpen and hone my concrete skills so that I have something to show my future employer. I will especially be practicing making toy programs that I can bring to an interview to show off my skillset.

What skills do you need? Looking at the CVs of employees that are already working at the company would be a good start to generate ideas.

One thing to think about is that each company is a little bit different, they didn’t mention this in the pattern, but I think it would be useful. Having these concrete skills especially helps in small startups that need the workforce actually working all the time. On the other hand, most BIG companies take your skill set and begin to work on it with professional training. If you feel as though you need to build up a resume, training through a big employer will certainly help more than being confused on a startup team that doesn’t have time to train you.

 

 

From the blog CS@Worcester – Rookey Mistake by Shane Rookey and used with permission of the author. All other rights reserved by the author.

Post #24 – Reflection on the “Stay in the Trenches” Pattern

This week, I will be writing a reflection on the “Stay in the Trenches” pattern.  This pattern addresses developers who have been offered a promotion to a non-programming position.  I chose to reflect on this pattern because it is a scenario that I have actually seen other people face in the real world and that I believe I may face some day.  At this point in my career as an apprentice software developer, I am still very passionate about coding but I wonder if I will ever consider taking a position that pulls me away from it.

The advice provided by Oshineye and Hoover is helpful and aligns perfectly with my views toward my field.  They refer to 2 of their other patterns in saying that a promotion of this kind will test whether a person is willing to walk The Long Road and/or has Sustainable Motivations – the passion that I feel about programming, now, leads me to believe that I am a person that is willing to walk The Long Road and does have Sustainable Motivations.  They warn that taking a promotion is not necessarily a step down the right path, and that mastery fades when skills are not practiced.  Because I am an apprentice still on my way to becoming a journeyman, I need to practice programming as much as I can and not consider any other course of action.  Oshineye and Hoover’s advice to those who experience this problem is to negotiate with employers to find other ways of being rewarded.

By staying “in the trenches” and having the desire to continue working on implementation is a direct way to “Nurture Your Passion”, which is another pattern I have written a reflective blog post about and feel aligns very well with my way of thinking.  After reading about this pattern, I think I am somebody who does wish to stay in the trenches and nurture my passion, rather than take a promotion just for increased compensation.  I found this pattern pertinent and useful and I will carry it with me as I move forward as a developer.

 

 

 

 

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

PATTERN : Sustainable Motivations

Sustainable Motivations

The author opens this apprenticeship pattern by addressing all the intangibles that are often overlooked in the programming world. He talks about the challenges we, as developers encounter in our career. He addresses the issues of horrendous real-world projects that are often rigorous,  tedious and exhausting. It can grow from  frustrating at times to morphing into overly chaotic or constraining issues that are backed by a business man who only knows what the current trend demands. All through this, the author urges us to hold firm and ensure that our drive for mastery propels us to withstand the situation.

Personal Reflection

I was fortunate enough to be taking the CS-348 class so i got to witness the dynamics of a software development environment through one of our in class simulations and there i realized that the constant specification changes by the business man often can lead to stressful and frustration environment to work in but it is here that the author tell us ground our motivations to the walking the long road pattern. In that pattern, we are though to continue taking on task that build and molds our skills. So in the mist of all the chaos, we are expected to find a related source of interest in programming that will continue to carry us when the going gets real tough.

I personally feel like this is the hardest pattern to master because normally, programming is challenging so the only thing that keeps us going at it is our passion for coding/ developing software. Now should that passion be attacked, we have no more source of interest. But the author tells us to persist even when we have lost drive and find a secondary source that can fuel us through the tough time until our original passion returns. I do agree that it does get to a stage that being able to provide for you family comes into the equation so this rules out switching of area or quitting in generally and money often serves as the secondary drive that can propel us until we get our initial vision back. The life of a programmer is filled with many adventures, learning slopes and curveballs but finding joy in programming amidst the bad times deepens the love and passion to be great !.

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.

Pattern : Sweep the Floor

Sweep The Floor 

When reading this pattern, i was a little puzzled the first time but after a second read through i understood what the author was insinuating. No one hands over the most important tasks on a project to a graduate they just hired. That would be putting the future of the company in jeopardy. This is mainly because you do not know how competent a person is without seeing their actual work.

Summary

In this chapter, the author brings to light how apprentices can gain trust of their respective teams and build their way to becoming master craftsmen on the team. By “Sweeping The Floor” newcomers or  new hires are able to build a portfolio performing tasks that the other team members would  not like to do. And when performing these tasks, they are to do it with a sense of urgency and purpose. By ways of such means, you are able to build trust, contribute to the team and also demonstrate your level of competency and understanding of the  team tasks.  We often forget that before we get to celebrate the big victory, having multiple little victories builds ones self confidence and skills that would eventually contribute to the “big wins”. 

The author did mention the value of our college degree once we graduate and i think this is the most surreal thing i read from the entire chapter. Knowing that all the time and effort invested in acquiring my degree only goes to raise expectations on what i could potentially bring to the team but doesn’t solidify me as knowing how to develop a software. with this said, the only way to solidify and earn my teams respect as a  programmer is to create well organized code and programs when i work on the less impacting task i am assigned or i volunteer for. Of course “sweeping the floor” is hard when i have completed my degree in hopes of becoming a full time software developer but the key is that, i would still have an opportunity and by doing a tremendous job on assigned tasks, i will be able to make a case for my skills and earn the respect of my  team members. 

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.