Category Archives: CS448

The Software Craftsman (Chapters 3 & 4)

Chapter 3 of the Software Craftsman book answers the question: what is a software craftsman? The book gives many definitions; the two that I like are:

  1. 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.
  2. Software Craftsmanship is about professionalism in software development.

The rest of the chapter is about the history of software craftsmanship and the software craftsmanship manifesto. The manifesto is sort of like a guideline of what software craftsmen ought to do.

  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.

Chapter 4 is about the attitude a software craftsman must have. Our careers are in our hands not in our employer’s hands. It is our duty to improve ourselves. I totally agree with this statement. I personally have access to O’Reily Safari Books and it a really good resource. There are many good video courses and live training courses. I signed up for the Design Patterns Boot Camp course that starts this Wednesday and I also watched Uncle Bob’s SOLID principles videos on his website. When I enter the professional world I plan to attend more live training courses.

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: (Chapters 1 & 2)

A huge point that Chapter 1 of The Software Craftsman discusses is what “seniority” is in a company and how it’s measured incorrectly a lot of the time in the workplace.  The chapter states, “There is a huge difference between having 10 years experience, and having 1 year experience repeated 10 times”.  That quote stuck out to me and made me think how true that is.  Just because you have worked somewhere a long time doesn’t mean that you have more knowledge then the person sitting next to you who worked half the time you have at that company.  The other main point this chapter talked about is something that I actually think about all the time. It talked about how developers should be able to keep up with the modern ways of working.  As a developer you need to keep up with the modern tools and equipment.  If you’re doctor was using medicine from 1990, and not upgrading his practices, you would be concerned.  That is how you should think as a software developer!

Chapter 2 discusses what it means to be agile, and how to solve the problems that come along with that with software craftsmanship.  The chapter stresses how you NEED to have a good balance between process-oriented and technical-oriented disciplines and methodologies.  It also talks about how you need to be able to work with your team as a whole.  I agree with this chapter that although being agile can be beenificial, it can also cause a lot of problems.  This is where you need to take your craftsmanship and apply it to help fix those problems.  Becoming more agile in computer science is a “game changer” as the chapter stated.  I now see how being agile in the workplace is very important and can change a lot.  I wish to take this knowledge and hopefully become more agile.

 

 

 

 

 

 

 

 

 

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.

Software Craftsman (Week 8)

This post will revolve around chapters 1 and 2.

Chapter 1 talks about the current status of software development. Now a days, as a programmer, writing code is not all you have to do in the work place. Now one must contribute to the company in many ways. The author also goes on to talk about the situation with seniority among developers. Though they may have more experience, the way they may do something could be so outdated, that a new programmer might be a better fit, because he/she is comfortable with the latest technologies and methods.

Chapter 2 talks about agile development. It begins with the author talking about the methodology of agile development. Companies who adopted this type of method, were back to their old ways, because they did not see the results that they had yearned for. The main reason for this as the author states is that the companies were not committing to the whole transformation. They were only committing partially which entailed in the crap code that were produced.

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

Sprint Review 3

Another sprint review in the books and it’s safe to say that our vision for our end goal of completing a module for the OpenMRS project is much more clear.

During this sprint, we have made contact with some of the people leading the project and they were kind enough to give us a list of issues that they would like for us to fix. The issues were located in the AMPATH Jira group and we got to select an issue to fix. Along with selecting an issue, we were also given a test server that we could use to incorporate our new code.

This sprint was not perfect, but we got through it. The first issue that popped up was with the test server not being loaded properly in the browser. As a team, we found a plugin called “allow control allow origin”, which allowed us to successfully connect to the server. After connecting to the server, we had to review the code given to us. Since the issue was given to us near the end of the sprint, we were unable to complete a module for it.

I look forward to the next sprint and I believe that our team is doing very well.

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

The Clean Coder (Week 7)

This blog post will revolve around chapters 13 and 14.

Chapter 13 talks about teams, projects and how it’s important to work as a team in order to accomplish a goal. The author believes that a “gelled” team is very valuable. According to the author, a gel team consists of each team member knowing the strengths and weaknesses of every member on the team. The gel team goes by a very common expression that goes like “Theres no I in team”. I think that a gel team is very important, because it makes you become aware of everyone’s weaknesses and strengths when tackling on a project. I see this as a good thing, because it will allow the team to collaborate and explain things which will lead into everyone being on the same page.

The final chapter talks about how just because you have a CS Degree, doesn’t make you qualified for the real world. Though an education at a university may teach you the basics and theories in programing, but it will never prepare you to what the real world actual has in store for you. He then talks about how having a mentor is critical to molding one into a good developer. I believe with this, because programming is not a very easy task, If one does not seek help, then he/she is not fulfilling their full potential.

 

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 (Chapter 1 & 2)

I am really excited that I am starting with a new book this week. The first chapter of this book is about what it means to be a software developer in the 21st century. I found it really funny when Sandro (the author) says that back in the 1990s if you wrote code that nobody understood, you were considered a senior developer. Wow! I wish that was still true today. I can easily write code that nobody understands; I even wrote a program that even I don’t understand when I look back at it today!

According to the author, seniority is relative. Having ten years of experience is not the same thing as having one year of experience repeated ten times.

To be a developer in the 21st century means that you must be proficient in many different technologies, wear many hats and be active in all phases of software development.

The second chapter of this book is about Agile. What is Agile? Agile is a combination of methodologies and techniques that can help teams and companies adapt to the changing nature of software projects and also reduce the risk associated with them. There are four goals of Agile which are summarized in the Agile manifesto and twelve principles behind the agile manifesto.

Of the twelve, I think the second principle is the most important: welcome changing requirements, even late in development. This principle I think is why we use Agile and is the most useful. In the traditional waterfall approach to software development, all of the requirements are gathered and the system is designed based on the requirements before any implementation or testing is done. And so if there are any new requirements, it is very hard to incorporate them into the existing design and would usually cost more time and money. All of these are avoided in the Agile approach to development; since the build software iteratively over small periods, we are able to catch any mistakes early on or incorporate new requirements easily.

The rest of the chapter goes on to explain why Agile has not worked at certain companies.

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 3: Reflections on Learning & Work Products

This sprint was the most successful yet.  I think we are all starting to really get the hang of things in our group and daily scrum meetings each week.  We are now at the point where we have been assigned issues from AMPATH and are diving head first into the openMRS code.  My big obstacle this week was trying to figure out why it was saying I had the wrong login credentials for the AMPATH standalone server.  I realized half way through the sprint that I was stuck on the issue for too long, so I decided to go to my teammates for help.  In a few days, one of my team members actually found the solution to the issue.  All I had to do was switch my web browser to google chrome and download a plugin I was missing.  The lesson I am going to take from this sprint is to not spend too much time getting stuck on something without asking for help.  It is always a good idea to try and figure out a problem by yourself but if it’s coming to the point where it is taking you a little too much time, you should always ask for help.  This semester is pretty short, so I don’t want to waste any time that I could be focusing on something else.  This next sprint I plan to get more done then I did this sprint.  I am not completely satisfied with the amount of work I accomplished this sprint and wish to improve.

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 Clean Coder Ch. 13 and Ch. 14

This week I read the final two chapters of Robert C. Martin’s The Clean Coder.  These chapters were not very long and only covered a couple topics.  In fact I only took away two points from chapter 13 on “Teams and Projects.”  These two topics were on the “Gelled Team” and “Velocity.”  A quick overview on Martin’s “Gelled Team” is a group of about twelve programmers, testers, analysts, and one project manager, who have worked long enough together to develop a symbiotic relationship.  I have worked closely with a few students during my time at WSU and we have certainly developed something close to what Martin described.  I know how these students think and work, and it aligns well with my process.  Martin describes “velocity” which my group and I have been experimenting with and adjusting as we figure out how much work we can accomplish over our sprints.

Chapter 14 was entitled “Apprenticeship, and Craftsmanship” which focused on the idea that school does not prepare programmers for the field.  To be honest I am concerned that I have not accrued enough knowledge to be an effective programmer in the field.  Martin suggests a system in which there are Masters, Journeymen, and Apprentices, where the more experienced teach the less experienced.  I like this idea, where for the first year, the Journeymen teach the Apprentices, and over time the Journeymen become Masters who orchestrate the entire process.  Martin also discusses the idea of Craftsmanship, which he calls “a mindset of values, disciplines, techniques, attitudes, and answers,” which are handed down from the experienced to the inexperienced.

Well that wraps up, The Clean Coder.  Stay tuned for more posts starting next week on a whole new text!

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

Learning Reflection – Sprint 3

I was studying the ngpoc-184 issue and I figured there are basically two modules that we need to work with: clinic-dashboard and main-dashboard. I also found a few questions in stack overflow useful in helping us develop the feature requested. We did not do anything else during this sprint.

I wish we could move faster as a team and take on more issues, but everyone else is still learning Angular 2 so we can’t move any faster.

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 Clean Coder (Chapters 13 & 14)

Chapter 13 of The Clean Coder discussed the importance of being able to work in a team, the right way.  Having the ability to work well in a properly formed team is very important in life, and especially as a computer programmer.  This chapter talks about something the author calls, a “gelled team”.  A gelled team is basically the idea that all team members will learn each other’s quirks, strengths, and weaknesses; which will then lead to the team beginning to “gel”.  As a team you need to work together and be aware not only of yourself, but also everyone else on your team.  There is no “I” in team!!  This chapter goes on to talk about how a good team will take the time needed to “gel” so they can progress and get as many projects done as smoothly as possible.  A gelled team is not formed around a specific project.  The author describes a gel team to have the ability to “accept many projects simultaneously and will divvy up the work according to their own opinions, skills, and abilities.”  I agreed with this chapter and agree 100%.  From my personal experience, being in a team that works well and fluently together has always been a much more successful experience then being in a team where everyone is kind of off on there own, and not communicating with one another.  It was interesting that the author talked about the idea of not forming a team based off of a project, but forming a team based off of being able to finish anything.  I really liked that idea, and it’s something that I personally have not seen in the workplace.  In my software engineering internship, the teams were mostly formed around a specific project.

The last and final chapter of The Clean Coder is chapter 14.  The final chapter of this book definitely summed up a huge aspect of what it truly means to be a computer programmer.  The whole point this chapter made was that school can of course teach you the theory of computer programming, but it will never teach you the discipline, practice, and skill of being a craftsman.  School is very helpful in getting the main idea of what you will need to be doing as a computer programmer.  School will teach you a lot of technical things like design patterns, algorithms, and how to code in general.  It is very important to know these technical and theoretical things as an engineer.  The chapter goes on to discuss that after we graduate from school and our on our way to the workplace, we are now the new mentors and guidance for the next generation of computer programmers.  When you are in the workplace you need to have the knowledge to be able to mentor the younger developers coming in.  As computer programmers we need to realize this is our job and soak in all we know now so we can later guide others.  You should pass your craftsmanship down to the younger people so they too will have the knowledge we have.

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.