Category Archives: CS448

The Software Craftsman ( Chapter 7 & 8)

Chapter 7 is about the usefulness of technical practices and how to convince your peers on using some of those technical practices. This chapter talks about many things that I don’t think are very useful at this point of my carrier.

Chapter 8 is about what motivates us and how to build a career. The first section of this chapter starts out with a story of the author ( I think). The author had a dream of working in London and he figured the way achieve that dream is to become a software engineer.  He did not speak English at the time and his skills set was pretty basic. He however did not give; he kept working toward his goal until 10 years later he finally achieved his dream. He became a software engineer working in UK.

The moral of the story I think is that nothing comes for free and mastering a skill of achieving a goal takes time and hard work.

And also a software craftsman must always look for three things when choosing a job: autonomy, mastery, and purpose.

From the blog CS448 – The blog about software by Sudarshan and used with permission of the author. All other rights reserved by the author.

The Software Craftsman: Chapter 5 & 6

Chapter 5 of The Software Craftsman basically talks about dealing with pressure and deadlines as a professional and not always being the “hero”.  As a software developer you aren’t a superhero and you don’t need to say yes to everything asked of you.  In fact, a huge point this chapter made was learning to say “no”.  This topic of saying “no” is something that we read about in the last book, The Clean Coder.  Although saying “no” may seem to be rude or unprofessional, it is actually the professional thing to do.  In the field of computer science, there is pretty much always something that needs to get done.  This doesn’t mean that you always need to be the one to do everything.  It is great to work to your full potential and get a lot done, but when you start saying you’ll do things you don’t have the time to do, it can get bad quick.  It is better to have good quality work rather then quantity.  Overall, I enjoyed reading this chapter.  Even though we already learned about this topic from the other book, I enjoyed reading the author’s personal stories on this matter.  He really went through hell trying to be the hero all the time, but luckily he came to his senses.

Chapter 6 discussed the issues with low quality software.  The author basically talks about how keeping up with the code base is very important.  Working code can easily turn into low quality and very bad code.  He discusses how many software developers will ignore the legacy code because they don’t want to deal with it.  However, that is a terrible attitude to have.  Putting off this problem is only going to create a bigger problem later on.  It is a much better idea to update the legacy code piece by piece so eventually the code will be working again.  This author made some very good points about working software and the attitude you should have towards it.  Personally, I would much rather just ignore legacy code and do something different.  However, this chapter made it clear that ignoring the problem is never the answer.  Keeping up with the code base and updating it with unit tests can make a huge impact on the overall product.  No one likes non-working low quality software.  From now on I will deal with situations like this piece by piece rather then facing a huge problem all at once.

 

From the blog CS@Worcester – Alex's Comp Sci Blog by alexsblog13 and used with permission of the author. All other rights reserved by the author.

The Software Craftsman ( 5 & 6)

Chapter 5 of the Software Craftsman book was a very good read. It gives some very important advise on what it means to be a software professional ( not software slave ). The thing that I found really interesting was the fact that the author of the book used to work for a company that had him start work at 5:00am in the morning and end at 8:00pm at night. And sometimes he worked so late he had to sleep in his car! All for what? Nothing! Absolutely nothing, but being branded a bad software developer.

Sandro Mancuso ( the author) wanted to be seen as the hero who saved the project, the man who made the impossible happen and a great software developer. Instead, he got the opposite and being blamed for the failure of the software project.

The rest of the chapter gives some good examples of what it means to be a software professional. Being a software professional means telling the truth and being honest on what can and cannot be done. Being a software professional means knowing when to say no to a feature request from clients. Software professionals have ethics, and a code of conduct.

Chapter 6 of the book is about what make good software. The author talks about the many things that the software developer must do in order to develop good code. Most of the ideas that the author talks about is from, I think, the Clean Code book.  So there is nothing really new in this chapter.

Overall, the message that I got out of this week’s reading is that a software developer is a professional. The chapters elaborate on what it means to be a professional. And a software professional is not a slave.

From the blog CS448 – The blog about software by Sudarshan and used with permission of the author. All other rights reserved by the author.

Sprint 4 Reflection

Another sprint down in the books and this was a pretty tough sprint. There was a major road block that was in the way with the progress of our issue. This road block was called spring break. During spring break, I did not work on our issue at all. Before our break, we were assigned an issue, but we were not able to fix it. Our team reached out to the AMPATH maintainers, but they did not reach back to us. Thus, we were then given a new issue. Since we were given a new issue a little before the end of the sprint, not much was done. However, a new sprint is coming and I’m excited to work with my team on getting this issue resolved.

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

The Software Craftsman Ch. 3 and Ch. 4

For this post I read chapters 3 and 4 out of Sandro Mancuso’s The Software Craftsman.  In these chapters Mancuso breaks down what he means by Software Craftsmanship.  First and foremost a Software Craftsman is a professional who is constantly learning new tools and techniques.  In chapter 3, “Software Craftsmanship,” Mancuso presents and explains the Software Craftsmanship Manifesto:

Not only working software,
but also well-crafted software

Not only responding to change,
but also steadily adding value

Not only individuals and interactions,
but also a community of professionals

Not only customer collaboration,
but also productive partnerships

The second piece of every part of the Software Craftsmanship Manifesto simply elaborates on the first piece.  This is very different from the Agile Manifesto which contains contrasting ideas.  In this way, the Software Craftsmanship Manifesto seems almost intuitive.  For example, take the first piece, “Not only working software, but also well-crafted software.”  The next logical step from working software is software that is well put together.  In TDD after you write a test, you write code that makes that test pass. Then you write another test, and more code to pass that test.  Refactor and repeat.  Using this technique you write not only working software, but as you progress, the software becomes well crafted.  So I guess I can understand someone feeling as though they need to lay out these guidelines, but as these techniques have developed over time, the aspects of the Software Craftsmanship Manifesto seem almost inevitable.

Chapter 4 is entitled “The Software Craftsmanship Attitude.”  This chapter is essentially a recap of The Clean Coder in its entirety.  Instead of going through all of the content of this chapter, I would like to refer you to my previous posts.  After reading this chapter, and without having read the rest of this book, I would think that simply reading this book would cover most of, if not all, of the pertinent information from Robert C. Martin’s The Clean Coder.  I think that the overlap is probably pretty substantial.

From the blog cs443 – TayNock's Blog by taynock and used with permission of the author. All other rights reserved by the author.

The Software Craftsman Ch. 1 and Ch. 2

Fitting that the last chapter in Robert C. Martin’s The Clean Coder was about craftsmanship, now we are reading The Software Craftsman: Professionalism, Pragmatism, Pride by Sandro Mancuso.  I’ve read the first couple of chapters of Mancuso’s book and I’m not sure if I like this book any more or any less than the previous one.  I suppose that is fortunate.

The first chapter was titled “Software Development in the Twenty-First Century” and this chapter is about as long as the title.  Chapter one was all of six pages long and served only as an introduction to the rest of the book.  Mancuso did discuss the idea of seniority in the field of software development and broached the topic of Agile, the topic of the next chapter.  There wasn’t really enough content to reflect on this particular chapter.

Agile!  I love it, I LOVE it.  I’ve read and heard so much about the Agile process in the past year, and aside from the fact that its the direction businesses are moving, it just makes sense.  I’m pretty sure I have blogged about Agile before, but if not, I’m happy to do it again.  Most importantly we need to include the Agile Manifesto:

We are uncovering better ways of developing software by doing it and helping others to do it. Through this work we have come to value:

  • Individuals and interactions over process and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

That is, while there is value in the items on the right, we value the items on the left more.

This is just a better way of handling projects.  Using an Agile framework, ie. Scrum, and keeping in line with the Agile Manifesto companies are able to produce software more quickly and with better quality.  Agile reduces errors, misunderstandings, and obstacles by introducing more communication.

From the blog cs443 – TayNock's Blog by taynock and used with permission of the author. All other rights reserved by the author.

Sprint 4 Retrospective

Sprint 4 was, I think, more productive than the previous Sprints. We actually got the NGPOC-184 issue solved. And I am thinking of picking one more issue to work on. So after this semester, hopefully, we as a team would have solved three issues.

The problem I had throughout this and previous sprints is that we are moving at a snail’s pace. The reason for that is we are all new to Angular and some of us are not able to learn Angular fast enough or not able to put in more time. It is very fustrating that we are moving so slowly. One issue in 2 months? Wow!!

From the blog CS448 – The blog about software by Sudarshan and used with permission of the author. All other rights reserved by the author.

Sprint 4: Reflections on Learning & Work Products

Sprint 4 of the semester got cut a little short because of spring break.  While I was in Cancun I can honestly say I was not too focused on the project.  Before the break, we were assigned our first issue, but none of us were able to reproduce the bug.  A few of my team members reached out to the AMPATH developers and we were able to get assigned a new issue.  We actually all had to take a step back and re-fork our whole project due to it being out of date.  When I did that, something got messed up because I currently cannot get the test server to go online.  I plan to get my personal issue resolved with the server within a few days.  Our new issue seems pretty simple and straight forward.  I look forward to working with my team to start fixing more and more actual issues with the system.  Hopefully this sprint will be much more productive because we will have a full sprint with no interruptions.

From the blog CS@Worcester – Alex's Comp Sci Blog by alexsblog13 and used with permission of the author. All other rights reserved by the author.

The Software Craftsman: Chapters 3 & 4

Chapter 3 of The Software Craftsman started off by discussing what exactly software craftsmanship is.  It gave the definition of software craftsmanship from a view different points of views such as; wikipedia, the authors personal definition, and a shorter more clean cut definition.  The chapter talked about how it is all about being professional when developing software which is something we have already previously learned in this class.  An interesting thing that this chapter discussed that I haven’t seen too much in previous chapters of this book or even in the whole Clean Coder book, was the history.  It gave in-depth information of the software craftsmanship movement and all the history you could possibly know behind it.  It was interesting to me to learn about historical details on where exactly this idea of software craftsmanship stemmed from.  Finally, the chapter covered the software craftsmanship manifesto.  The manifesto consisted of 4 major points:

  1. Not only working software, but also well-crafted software.
  2. Not only responding to change, but also steadily adding value.
  3. Not only individuals and interactions, but also a community of professionals.
  4. Not only customer collaboration, but also productive partnerships.

My favorite of the four was, number 1, “Not only working software, but also well-crafted software”.  This a very important point that every software developer needs to be aware of.  Just because a program may work, doesn’t mean it is crafted the way it should be.

Chapter 4  was about the attitude that a software craftsman should always have.  The chapter went through and mainly gave tips on how to improve yourself as a software craftsman.  Some of the advice that I personally took a lot from is always keeping our self up to date, practicing and balancing your work and personal life.  The topics of keeping yourself up to date and practicing are two things that I have seen a lot throughout this course.  It is clear that these two things are extremely important to any professional, but especially one dealing with technology.  Technology is advancing everyday and it is each individuals responsibility to keep up with it throughout their career.  Work-life balance is something that nearly everyone has to deal with at some point.  It is crucial for me as a soon-to-be software developer to start practicing different techniques to find the best work-life balance that works for me.  This chapter mentions a technique called the Pomodoro Technique.  This technique basically says that you should separate your work into 25 minute intervals.  It is proven that working in small intervals can maximize your creativity.  I am willing to give this technique a shot, even though I am not too confident it will work well for me.  I tend to be able to focus for a long period of time when I get into a groove.  If I was forced to stop myself when 25 minutes is up, it may set me back.  However, it can’t hurt to try.  Who knows I may find out that this is perfect for me.

From the blog CS@Worcester – Alex's Comp Sci Blog by alexsblog13 and used with permission of the author. All other rights reserved by the author.

The Software Craftsmanship (Week 8)

This blog post will revolve around chapters 3 and 4.

Chapter 3 starts of with a more in depth explanation of what the title of the book means (The Software Craftsmanship). In the book, the author gave his take on what being a software craftsman is.

 Software craftsmanship is a long journey to mastery. It’s a mindset where software developers choose to be responsible for their own careers, constantly learning new tools and techniques and constantly bettering themselves. It is about putting responsibility, professionalism, pragmatism, and pride back into software development.

I like the part where the author had stated that a a software developer chooses to be responsible for their own careers. I believe that if you want to be a good developer, one should constantly be learning and keeping up with the trends and technologies.

Chapter 4 talks about what kind of attitude a software craftsman should have. One of the most important thing in this field is to be responsible. You as a developer must keep your self up to date with technology trends in order to stay relevant. The author then goes on to give us some tips on how we can keep up with the trends.

  • Reading books, blogs, technical websites
  • Keeping a blog to document and track progress

The last thing that the author talks about in this chapter is about time management. As we grow older, we find that time is not on our side. The author reminds us that there is always time to practice. We just have to limit our time with certain activities.

 

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