The course has given me a chance to explore the idea that I am craftsman who will spend the next decade or two honing my skills. We have learned that it is important to remember that this "journey" is not a race, but an adventure where the goal must be hone our skills as well as maintaining the motivation to keep heading down the path.
The course came at a perfect time in my education, namely the part where I would be forced to consider what the next step in my career would be. I am currently applying and interviewing for jobs, and the course has definitely made me add a few additional criteria to consider when the time comes to compare job offers. Most important of all, to me, is to consider whether the work environment and the work itself will allow me to focus on the journey. I am now much more interested in considering how much effort the company will allow me to put into staying up-to-date on new technologies and events in the business. Will they enable me to attend conferences where I can mingle and network with likeminded, and learn from peers? I am also considering the learning the company can offer me within the office; especially from the people I will be working with.
I have also realised that software engineering skills have the same "needs" as instrumental skills (and many other categories), in that it takes deliberate and focused training to efficiently further my skills as a craftsman. By purposely challenging myself and my ignorance, I will learn a lot more in much less time than if I blindly practiced the skills that a journeying developer requires.
Finally, the course has not only made me look forward to this journey, but it has also made me aware that I _am_ on a journey. I had not taken the time to consider the career- and life-path I chose when electing to become a software engineer by trade, and it is crucial for me to now deal with the consequences of this choice.
How do I know that I made the right choice to become a software engineer? I know and look forward to it being a long journey!
In this course, I planned to hit two birds with one stone. I focused on learning Android, and at the same time, got acquainted with some of the apprenticeship patterns suggested in the “Apprenticeship Patterns”[1]. In this report, I want to point out three patterns that enhanced my software craftsmanship skills, and plan to use it in my future career.
First, I followed the “Rubbing Elbows” pattern with my colleague Ibrahim AlShehri to learn the Android platform together. We challenged each other with tricky questions and pointed out helpful learning resources. Additionally, we pair-programmed a mini project that was an asmack-based Android chat client. The result was delightful as the pattern helped us to shorten the learning curve considerably, and applied our knowledge in a real Android application.
In one of our readings[2], I learned that practicing deliberately has to be accompanied with finding a mentor to supervise my work. I read about the “Find a Mentor” pattern, and started to search for one. My colleague Ibrahim happened to know a senior Android technical team leader working in T-Mobile. We kindly asked him if he could guide us during our learning process. He happily agreed and we started to meet with him regularly on a weekly basis. His guidance and input were extremely valuable and helpful. He pointed out some concepts that a newbie in Android would not grasp without the help of an expert. We are very grateful to him with his help. In my career, I plan to seek out a mentor who is willing to supervise my work and guide me in the right direction. I know that I will be very fortunate if I find one.
“Practice, practice and practice” is a pattern that focuses on solving the exercises over and over again, while not repeating the mistakes encountered in the previous attempts. I followed this when developing the Katas, or programming assignments. It helped me to think about various techniques and methods to solve the problem. I felt that my latest version of the code was near perfect, and my peers agree when I showed them the code. Moreover, and more importantly, I started to develop the habit of following Test Driven Development (TDD) in Java. I never followed TDD in Java before this class. The later assignments displayed my proficiency in TDD, and I feel confident now not to write code until I write a test against it. Although I studied TDD in detail and full-depth in a previous class, it is this course where I truly learned TDD and started to adopt it.
Finally, the most important lesson I learned is that software craftsmanship is very expensive. Taking that trip from apprentice to journeyman and master is certainly a lifetime journey, but fortunately, it pays off by writing world-class software and elegant code. I am happy and proud to take that journey, and will try my best to resist the mouth-watering offers to stop it.
Being a brand new offering, Craftsmanship was a very interesting class. It came at quite an opportune time for me. I've been itching to improve my Ruby and Rails skills, but have not been able to find time for it between my schoolwork and other chores. Craftsmanship offered a great way to learn more about Rails.
Working on an actual project for Todd was a great experience. I got to build something very cool, and at the same time, participate in the community and learn more about Rails, NoSQL, etc. This actually reinforced my initial desire to become a profressional Rails developer.
I really enjoyed solving problems in Ruby on Rails for the Hibiscus project, and know I would definitely enjoy doing the same type of thing for a company that creates web application products.
Having never worked before, I was not sure what I really wanted to do. In school, I've explored a lot of things. I've learned about algorithms, CPUs, embedded systems, signal processing, web development, circuit design, and much more. I've finally decided that I want to do web development professionally. Besides the fact that Rails is fun to work with, I really enjoy the community behind Ruby and Rails. It's a pretty large community, and everyone is friendly and helpful. There are many events and participating in them always means I get to learn something.
This is an exciting field to be in right now, and I can't wait to get out there into industry!
Masters in Software Engineering at Carnegie Mellon has exposed me to a wide array of software development practices and amongst them, I feel Test Driven Development and DRY are the most important ones. Before taking the Craft course, I felt like I didn’t have enough practice in the above mentioned principles. However, over the span of the last six weeks I see improvement in the way I code and write test cases. Although I haven’t reached my goal yet, I feel like I’m in the right track. I write test cases before I code for the most part ( sometimes I feel a little lazy and write a method before writing test cases for it) and I follow DRY religiously. Furthermore, I feel the need to improve on my software development craftsmanship more than ever before.
I have always been interested in arts. Frankly speaking I didn’t end up being a painter because I felt like I can’t make a decent living from it. Craft course has made me realize that programming is an art, too. Writing efficient, readable and bug free (well, almost) programs takes a lot more than just writing a program to get the job done (this is what I was used to in my bachelors). In ten years, I see myself as a person who is still improving / practicing these (TDD, DRY, efficient code) skills no matter where I’m working. My best case scenario would be to open my own company where I will have the luxury of practicing / improving my programming principles and at the same time earning a decent living. Also, the urge to become a teacher has increased in me.
I wanted to be a computer science teacher teaching foundations of Artificial Intelligence. However, now I’m seriously considering in becoming a teacher in Software Engineering. There weren’t any teachers that emphasized on looking at programming as an art during my bachelor years. I think that under graduate students will greatly benefit from learning the art of programming because that is where the foundations of programming are taught.
To sum it all up, Craft of Software Development has significantly influenced my goals career wise. In ten years I see myself having my own company where I will have the luxury of practicing my craft and teaching college students about the art of Software Development.
I have always been confused about what I really want to do in my future career. There might be some fuzz ideas like, the job must be fun, I would like to work on something that matters, I want to work on something that affects how people interacts with each other, etc. However, I never really think thoroughly about the question “what would you be like in next ten years?“ This course actually force me to consider the problem and having noticed being a craftsman is a lifetime journey, I now have a more clear vision of my future career.
There are several situations I can think of about career,
1) Paid to work on something that you are excited about. (Best case, but you will get bored anyway)
2) Paid to work on something boring but have some free time to do something interesting.
3) Paid to work on something boring and the work occupy most of your time. (Worst case)
All these three situations have one thing in common though, that is you will get bored eventually. So to me, when choosing a job, the awesomeness of a company’s projects is not the only criterion you need to consider. You also need to think about how well the company will support you to be a craftsman on new technologies and how much resource it will provide you to explore the new areas.
One important thing I noticed during the course is that no matter how appealing the work might be at the beginning, people’s interests are always changing. That’s probably why so many interesting open source projects are shifting their owners. Just like software requirements, changes in human interests are also inevitable. The only way to keep excited about your work is to be craftsman of your new interests. Craftsmanship is about constantly learning and adapting to your new interests.
Moving back to the course itself. The concept of craftsmanship is quite natural to me and to people who cares about self-growth. All those patterns in the apprentice book are great summary of what you should do in order to fully master certain technology. Nonetheless, the book itself is not enough to make me actually implement those patterns. There is a gap between the book and the reality. Given the book, I do not think I will continue working on my leaning plan for 7 weeks. There will always be something, which interrupts me from finishing the breakable toy or stops me from doing the “Practice, practice, practice”. The course actually fills that gap, it provides great guidance and reasonable time constrains to implement the patterns. Most importantly, the course provides me the experience of being a craftsman (finding mentors, keeping journal along the path, and be persistent). This experience is extremely helpful when encounter similar situation in the future.
Many things are easier to say than do. Craftsmanship is definitely one of them. Realizing that the craftsmanship is a life long journey and understanding that every craftsman will have a different road, I am now more confident to explore the new areas facing in the future.
I have been interested in learning the android framework for some time but never done anything other than the hello world example. I used to attribute this lack of progress to not having enough time. In the requirement class, we learned that one of the challenges the requirement team faces is to find what the user really needs rather than what he thinks he want. I think it is applicable here. While i thought i want more time, i realized that I actually need motivation. I believe this course helped me to be self-aware about how i actually learn new things and how to improve on that.
I started with finding a mentor for my learning journey. I was lucky to know someone who is an expert in the area of android framework and was willing to assist. He suggested that the best way to start is to develop a simple chat app so i get a good exposure to the android APIs. I found it useful to have a goal to focus my learning activities around. Throughout the course, he continued to provide guide and tips which have been very help-full when i get stuck on something. In addition, having regular meetings with the mentor to report the progress and demo the app was a good source of motivation to invest efforts in implementing my learning plan.
Another source of motivation was teaming up with Asem. Asem has the same goal i have and hence i found it to be an interesting learning experience as each of us challenged, motivated and helped the other one.
Despite that i enjoy learning new technologies and sharpening my software development skills, i usually end up learning what i need for the current project or work assignment at my work. Now, i believe i have a better self-awareness on how to fulfill my passion and expand my horizon. At the end, i would like to share this great quote; “Knowing others is wisdom, knowing yourself is Enlightenment.” - Tao Tzu.
This class has taught me how little I know about my field and my career, but it has taught me the value of learning on my own. This is the first class I've taken where the curriculum is largely self-driven, with only a couple set goal posts along the way, and although this may seem unstructured, it forces you to rely on your own desire to grow. In some ways, it forces you to grow your own desire to grow. As someone on the verge of starting a career in this field, I've come to realize how important this hunger for growth is. Technology will inevitably change, and if you have no desire to adapt to that change, you will be left behind.
I used this class as an opportunity to learn something I feel will carry value for years to come, that being mobile/smartphone development skills on the iPhone platform. The decision to learn Objective C and iPhone development was made because I feel that my career would benefit from learning how to develop for these types of systems. There is a shift in the computing paradigm from traditional computers to mobile devices, and while not all smart phone devices are iPhones, this would nevertheless be an important opportunity for me to break into this growing field.
My experience throughout this class was driven by my own desire to learn a new language and to make something I can actually use in my day to day life, but also because I like when my efforts are rewarded with some concrete product I can feel proud of. Working for weeks on an algorithm doesn't appeal to me as much as working on an application I can share with others, and hopefully when my skills improve and when I graduate beyond apprenticeship, my skills can produce something useful for people around the world. This class has taught me how to keep this desire alive, how to practice my skills, and to look for a job that allows me to keep pursuing these goals.
I was familiar with the notion of craftsmanship, being part of a business family. My first job was for my dad's company as his driver, for my dad believed that to run a company it is important to know how things work from the grass root to the very top.
When Martin (Martin Radley) asked me during my admission interview about my career goals in the next 10 years, I answered, "I want to own a software company" but I was never sure of how I was going to achieve this goal, until I took this course.
This course helped me to create a road map to my ulitmate goal. When I compare my knowledge of software before I took this course to what I know now, I feel I was very naive and clueless. I read two very interesting books during the course duration : Apprenticeship Patterns and Beautiful Code. I came across interesting software craftsman ideas like : expose your ignorance, share as you learn, kindred spirits and breakable toys. These readings exposed me to a whole new dimension of software development. The knowledge I acquired during this time has had great impact on my career goals. I believe it would take me 8-10 years more to complete my craftsman journey and will directly affect the career choices I make during this time.
This course also provided a very good platform to interact with fellow classmates and share outcomes of each kata. This helped me view a problem from different perspectives. Sometimes, I failed to implement a kata in the first pass in which case, these discussions helped me to solve the problems. So, whether I failed or passed, I had something to learn from either experiences, which was the best thing that I liked about this course.
The craftsmanship course at CMU West aims at sharpening the skills of programmers in specific domains. Importantly, it is the upto the student to choose this domain, and leverage the most of the time given to him/her. Providing such felxibility to students in graduate course is, according to me, immensely important.
I have gone through some very crucial realizations over the period of this course, and I shall aim to incorporate these learnings in my career hereafter:
1) We write code not just for machines, but for humans too. Complexity is the enemy, and a programmer should be mindful of this fact while writing every line of code.
2) Get your code reviewed by friends, or if possible by veterans.
3) Do not EVER hesitate to consult friends for solutions. (We, programmers, can save hours!)
4) Practice, Practice, practice ...
These are important things I have realized after opting for the Craftsmanship course. Also, it gave me a chance to interact with professionals/mentors, and apply some of their daily routine practises in my working style (like code review tools, documentation techniques, etc.).
I am to implement all that I have mentioned above in my carrer, and hopefully someday I would be able call myself a good programmer.
The idea of software engineering being a craft and looking at ourselves as craftsmen, was a big shift in my thinking. Previously in my career I usually did just enough or learned just enough to complete the tasks that were assigned to me. I never thought about concepts such as practice practice practice, be the worst, kindred spirits, etc. The idea of deliberate practice was also new to me. It made me realize the value of putting a lot of thought behind your practice. These ideas have undoubtedly changed the way I foresee my career in the years to come. Now I realize that I should keep acquiring the skills needed to become a better craftsman and engage in continuous practice. So I plan to continue pursuing the goals I set for myself during this course and also keep adding to that initial list of goals as I continue my journey.
The authors of ‘Apprenticeship Patterns’ discuss about staying on the technical track (or being craftsmen) for life. While I fully enjoy being a programmer and writing code, it is too early to know whether I’ll be doing this for the whole of my career. It is far too early to decide what my preferences and priorities might be in say ten years time. I believe in making a full commitment to improving my skills as a software craftsman, but at the same time I would like to keep my options open. I believe the challenge would be to strike a balance between being a craftsman and moving up the heirarchy to other roles that involve more responsibility.
The craft class has not influenced my career goals or my current perception of my career, however the class has been a great help in helping mold my programming abilities. I am certain that because of this course and the training I did during it, I will be a better programmer for the rest of my career. The fact that the course has not affected my career ideas has no bearing on the course itself; I just am not 100% certain of what I want to do with my career yet and what kind of environment I want to work in. I am debating whether or not I want to work at smaller up and coming company, most likely doing web development, or a more established company, doing lower-level programming (which I tend to get more gratification out of). One of my objectives in this class was to learn more about C++, which is a language right in the middle of my potential career paths (as I see it). I thought this was useful because It fills in the void for me, not having much experience with middle-level languages.
I really enjoyed the exercises, discussions, and readings and found them thought provoking. They have indeed made me think about my career, but I have not narrowed my career focus to the point where the readings can be applied to my case (I really don't know what I want is the problem...).
Comments
Chris' affected understanding of his career
The course has given me a chance to explore the idea that I am craftsman who will spend the next decade or two honing my skills. We have learned that it is important to remember that this "journey" is not a race, but an adventure where the goal must be hone our skills as well as maintaining the motivation to keep heading down the path.
The course came at a perfect time in my education, namely the part where I would be forced to consider what the next step in my career would be. I am currently applying and interviewing for jobs, and the course has definitely made me add a few additional criteria to consider when the time comes to compare job offers. Most important of all, to me, is to consider whether the work environment and the work itself will allow me to focus on the journey. I am now much more interested in considering how much effort the company will allow me to put into staying up-to-date on new technologies and events in the business. Will they enable me to attend conferences where I can mingle and network with likeminded, and learn from peers? I am also considering the learning the company can offer me within the office; especially from the people I will be working with.
I have also realised that software engineering skills have the same "needs" as instrumental skills (and many other categories), in that it takes deliberate and focused training to efficiently further my skills as a craftsman. By purposely challenging myself and my ignorance, I will learn a lot more in much less time than if I blindly practiced the skills that a journeying developer requires.
Finally, the course has not only made me look forward to this journey, but it has also made me aware that I _am_ on a journey. I had not taken the time to consider the career- and life-path I chose when electing to become a software engineer by trade, and it is crucial for me to now deal with the consequences of this choice.
How do I know that I made the right choice to become a software engineer? I know and look forward to it being a long journey!
Effect of Software Craftsmanship on Asem's Career
In this course, I planned to hit two birds with one stone. I focused on learning Android, and at the same time, got acquainted with some of the apprenticeship patterns suggested in the “Apprenticeship Patterns”[1]. In this report, I want to point out three patterns that enhanced my software craftsmanship skills, and plan to use it in my future career.
First, I followed the “Rubbing Elbows” pattern with my colleague Ibrahim AlShehri to learn the Android platform together. We challenged each other with tricky questions and pointed out helpful learning resources. Additionally, we pair-programmed a mini project that was an asmack-based Android chat client. The result was delightful as the pattern helped us to shorten the learning curve considerably, and applied our knowledge in a real Android application.
In one of our readings[2], I learned that practicing deliberately has to be accompanied with finding a mentor to supervise my work. I read about the “Find a Mentor” pattern, and started to search for one. My colleague Ibrahim happened to know a senior Android technical team leader working in T-Mobile. We kindly asked him if he could guide us during our learning process. He happily agreed and we started to meet with him regularly on a weekly basis. His guidance and input were extremely valuable and helpful. He pointed out some concepts that a newbie in Android would not grasp without the help of an expert. We are very grateful to him with his help. In my career, I plan to seek out a mentor who is willing to supervise my work and guide me in the right direction. I know that I will be very fortunate if I find one.
“Practice, practice and practice” is a pattern that focuses on solving the exercises over and over again, while not repeating the mistakes encountered in the previous attempts. I followed this when developing the Katas, or programming assignments. It helped me to think about various techniques and methods to solve the problem. I felt that my latest version of the code was near perfect, and my peers agree when I showed them the code. Moreover, and more importantly, I started to develop the habit of following Test Driven Development (TDD) in Java. I never followed TDD in Java before this class. The later assignments displayed my proficiency in TDD, and I feel confident now not to write code until I write a test against it. Although I studied TDD in detail and full-depth in a previous class, it is this course where I truly learned TDD and started to adopt it.
Finally, the most important lesson I learned is that software craftsmanship is very expensive. Taking that trip from apprentice to journeyman and master is certainly a lifetime journey, but fortunately, it pays off by writing world-class software and elegant code. I am happy and proud to take that journey, and will try my best to resist the mouth-watering offers to stop it.
[1] “Apprenticeship Patterns”; Dave Hoover & Adewale Oshineye; O’Reilly Media; Oct. 2009
[2] “The Making of an Expert”; K. Anders Ericsson, Michael J. Prietula, and Edward T. Cokel; Harvard Business Review; Aug. 2007
Craftsmanship and Career
Being a brand new offering, Craftsmanship was a very interesting class. It came at quite an opportune time for me. I've been itching to improve my Ruby and Rails skills, but have not been able to find time for it between my schoolwork and other chores. Craftsmanship offered a great way to learn more about Rails.
Working on an actual project for Todd was a great experience. I got to build something very cool, and at the same time, participate in the community and learn more about Rails, NoSQL, etc. This actually reinforced my initial desire to become a profressional Rails developer.
I really enjoyed solving problems in Ruby on Rails for the Hibiscus project, and know I would definitely enjoy doing the same type of thing for a company that creates web application products.
Having never worked before, I was not sure what I really wanted to do. In school, I've explored a lot of things. I've learned about algorithms, CPUs, embedded systems, signal processing, web development, circuit design, and much more. I've finally decided that I want to do web development professionally. Besides the fact that Rails is fun to work with, I really enjoy the community behind Ruby and Rails. It's a pretty large community, and everyone is friendly and helpful. There are many events and participating in them always means I get to learn something.
This is an exciting field to be in right now, and I can't wait to get out there into industry!
Vinay's Career change
I have always been interested in arts. Frankly speaking I didn’t end up being a painter because I felt like I can’t make a decent living from it. Craft course has made me realize that programming is an art, too. Writing efficient, readable and bug free (well, almost) programs takes a lot more than just writing a program to get the job done (this is what I was used to in my bachelors). In ten years, I see myself as a person who is still improving / practicing these (TDD, DRY, efficient code) skills no matter where I’m working. My best case scenario would be to open my own company where I will have the luxury of practicing / improving my programming principles and at the same time earning a decent living. Also, the urge to become a teacher has increased in me.
I wanted to be a computer science teacher teaching foundations of Artificial Intelligence. However, now I’m seriously considering in becoming a teacher in Software Engineering. There weren’t any teachers that emphasized on looking at programming as an art during my bachelor years. I think that under graduate students will greatly benefit from learning the art of programming because that is where the foundations of programming are taught.
To sum it all up, Craft of Software Development has significantly influenced my goals career wise. In ten years I see myself having my own company where I will have the luxury of practicing my craft and teaching college students about the art of Software Development.
Ian's final report
I have always been confused about what I really want to do in my future career. There might be some fuzz ideas like, the job must be fun, I would like to work on something that matters, I want to work on something that affects how people interacts with each other, etc. However, I never really think thoroughly about the question “what would you be like in next ten years?“ This course actually force me to consider the problem and having noticed being a craftsman is a lifetime journey, I now have a more clear vision of my future career.
There are several situations I can think of about career,
1) Paid to work on something that you are excited about. (Best case, but you will get bored anyway)
2) Paid to work on something boring but have some free time to do something interesting.
3) Paid to work on something boring and the work occupy most of your time. (Worst case)
All these three situations have one thing in common though, that is you will get bored eventually. So to me, when choosing a job, the awesomeness of a company’s projects is not the only criterion you need to consider. You also need to think about how well the company will support you to be a craftsman on new technologies and how much resource it will provide you to explore the new areas.
One important thing I noticed during the course is that no matter how appealing the work might be at the beginning, people’s interests are always changing. That’s probably why so many interesting open source projects are shifting their owners. Just like software requirements, changes in human interests are also inevitable. The only way to keep excited about your work is to be craftsman of your new interests. Craftsmanship is about constantly learning and adapting to your new interests.
Moving back to the course itself. The concept of craftsmanship is quite natural to me and to people who cares about self-growth. All those patterns in the apprentice book are great summary of what you should do in order to fully master certain technology. Nonetheless, the book itself is not enough to make me actually implement those patterns. There is a gap between the book and the reality. Given the book, I do not think I will continue working on my leaning plan for 7 weeks. There will always be something, which interrupts me from finishing the breakable toy or stops me from doing the “Practice, practice, practice”. The course actually fills that gap, it provides great guidance and reasonable time constrains to implement the patterns. Most importantly, the course provides me the experience of being a craftsman (finding mentors, keeping journal along the path, and be persistent). This experience is extremely helpful when encounter similar situation in the future.
Many things are easier to say than do. Craftsmanship is definitely one of them. Realizing that the craftsmanship is a life long journey and understanding that every craftsman will have a different road, I am now more confident to explore the new areas facing in the future.
Ibrahim's Career
I have been interested in learning the android framework for some time but never done anything other than the hello world example. I used to attribute this lack of progress to not having enough time. In the requirement class, we learned that one of the challenges the requirement team faces is to find what the user really needs rather than what he thinks he want. I think it is applicable here. While i thought i want more time, i realized that I actually need motivation. I believe this course helped me to be self-aware about how i actually learn new things and how to improve on that.
I started with finding a mentor for my learning journey. I was lucky to know someone who is an expert in the area of android framework and was willing to assist. He suggested that the best way to start is to develop a simple chat app so i get a good exposure to the android APIs. I found it useful to have a goal to focus my learning activities around. Throughout the course, he continued to provide guide and tips which have been very help-full when i get stuck on something. In addition, having regular meetings with the mentor to report the progress and demo the app was a good source of motivation to invest efforts in implementing my learning plan.
Another source of motivation was teaming up with Asem. Asem has the same goal i have and hence i found it to be an interesting learning experience as each of us challenged, motivated and helped the other one.
Despite that i enjoy learning new technologies and sharpening my software development skills, i usually end up learning what i need for the current project or work assignment at my work. Now, i believe i have a better self-awareness on how to fulfill my passion and expand my horizon. At the end, i would like to share this great quote; “Knowing others is wisdom, knowing yourself is Enlightenment.” - Tao Tzu.
Cliff's Final Report - Career
This class has taught me how little I know about my field and my career, but it has taught me the value of learning on my own. This is the first class I've taken where the curriculum is largely self-driven, with only a couple set goal posts along the way, and although this may seem unstructured, it forces you to rely on your own desire to grow. In some ways, it forces you to grow your own desire to grow. As someone on the verge of starting a career in this field, I've come to realize how important this hunger for growth is. Technology will inevitably change, and if you have no desire to adapt to that change, you will be left behind.
I used this class as an opportunity to learn something I feel will carry value for years to come, that being mobile/smartphone development skills on the iPhone platform. The decision to learn Objective C and iPhone development was made because I feel that my career would benefit from learning how to develop for these types of systems. There is a shift in the computing paradigm from traditional computers to mobile devices, and while not all smart phone devices are iPhones, this would nevertheless be an important opportunity for me to break into this growing field.
My experience throughout this class was driven by my own desire to learn a new language and to make something I can actually use in my day to day life, but also because I like when my efforts are rewarded with some concrete product I can feel proud of. Working for weeks on an algorithm doesn't appeal to me as much as working on an application I can share with others, and hopefully when my skills improve and when I graduate beyond apprenticeship, my skills can produce something useful for people around the world. This class has taught me how to keep this desire alive, how to practice my skills, and to look for a job that allows me to keep pursuing these goals.
Rahul's Final Report - Career & Course Takeaways
I was familiar with the notion of craftsmanship, being part of a business family. My first job was for my dad's company as his driver, for my dad believed that to run a company it is important to know how things work from the grass root to the very top.
When Martin (Martin Radley) asked me during my admission interview about my career goals in the next 10 years, I answered, "I want to own a software company" but I was never sure of how I was going to achieve this goal, until I took this course.
This course helped me to create a road map to my ulitmate goal. When I compare my knowledge of software before I took this course to what I know now, I feel I was very naive and clueless. I read two very interesting books during the course duration : Apprenticeship Patterns and Beautiful Code. I came across interesting software craftsman ideas like : expose your ignorance, share as you learn, kindred spirits and breakable toys. These readings exposed me to a whole new dimension of software development. The knowledge I acquired during this time has had great impact on my career goals. I believe it would take me 8-10 years more to complete my craftsman journey and will directly affect the career choices I make during this time.
This course also provided a very good platform to interact with fellow classmates and share outcomes of each kata. This helped me view a problem from different perspectives. Sometimes, I failed to implement a kata in the first pass in which case, these discussions helped me to solve the problems. So, whether I failed or passed, I had something to learn from either experiences, which was the best thing that I liked about this course.
Craftsmanship Course
The craftsmanship course at CMU West aims at sharpening the skills of programmers in specific domains. Importantly, it is the upto the student to choose this domain, and leverage the most of the time given to him/her. Providing such felxibility to students in graduate course is, according to me, immensely important.
I have gone through some very crucial realizations over the period of this course, and I shall aim to incorporate these learnings in my career hereafter:
1) We write code not just for machines, but for humans too. Complexity is the enemy, and a programmer should be mindful of this fact while writing every line of code.
2) Get your code reviewed by friends, or if possible by veterans.
3) Do not EVER hesitate to consult friends for solutions. (We, programmers, can save hours!)
4) Practice, Practice, practice ...
These are important things I have realized after opting for the Craftsmanship course. Also, it gave me a chance to interact with professionals/mentors, and apply some of their daily routine practises in my working style (like code review tools, documentation techniques, etc.).
I am to implement all that I have mentioned above in my carrer, and hopefully someday I would be able call myself a good programmer.
Isuru - Final Report
The idea of software engineering being a craft and looking at ourselves as craftsmen, was a big shift in my thinking. Previously in my career I usually did just enough or learned just enough to complete the tasks that were assigned to me. I never thought about concepts such as practice practice practice, be the worst, kindred spirits, etc. The idea of deliberate practice was also new to me. It made me realize the value of putting a lot of thought behind your practice. These ideas have undoubtedly changed the way I foresee my career in the years to come. Now I realize that I should keep acquiring the skills needed to become a better craftsman and engage in continuous practice. So I plan to continue pursuing the goals I set for myself during this course and also keep adding to that initial list of goals as I continue my journey.
The authors of ‘Apprenticeship Patterns’ discuss about staying on the technical track (or being craftsmen) for life. While I fully enjoy being a programmer and writing code, it is too early to know whether I’ll be doing this for the whole of my career. It is far too early to decide what my preferences and priorities might be in say ten years time. I believe in making a full commitment to improving my skills as a software craftsman, but at the same time I would like to keep my options open. I believe the challenge would be to strike a balance between being a craftsman and moving up the heirarchy to other roles that involve more responsibility.
Rob's final report (update)
The craft class has not influenced my career goals or my current perception of my career, however the class has been a great help in helping mold my programming abilities. I am certain that because of this course and the training I did during it, I will be a better programmer for the rest of my career. The fact that the course has not affected my career ideas has no bearing on the course itself; I just am not 100% certain of what I want to do with my career yet and what kind of environment I want to work in. I am debating whether or not I want to work at smaller up and coming company, most likely doing web development, or a more established company, doing lower-level programming (which I tend to get more gratification out of). One of my objectives in this class was to learn more about C++, which is a language right in the middle of my potential career paths (as I see it). I thought this was useful because It fills in the void for me, not having much experience with middle-level languages.
I really enjoyed the exercises, discussions, and readings and found them thought provoking. They have indeed made me think about my career, but I have not narrowed my career focus to the point where the readings can be applied to my case (I really don't know what I want is the problem...).
Post new comment