Monthly Archives: January 2017

The Clean Coder Ch. 5 and Ch. 6

In chapter five of Robert C. Martin’s The Clean Coder, his topic is Test Driven Development (TDD).  Last semester I took a course called Software Construction, Design, and Architecture, in which we practiced a bit of TDD.  I also took a class called Software Quality Assurance and Testing, and if the title did not give it away, was mostly about software testing.  With the benefit of those courses I do know a bit about TDD, and because of this, I can confidently say that Martin was spot on with this chapter.  The most important thing to take away from this chapter is Martin’s three laws of TDD.  The first is, “you are not allowed to write any production code until you have first written a failing unit test.” The second is, “you are not allowed to write more of a unit test than is sufficient to fail—and not compiling is failing.” Finally, the third is, “you are not allowed to write more production code that is sufficient to pass the currently failing unit test.”  The rest of the chapter is dedicated to explaining the benefits of TDD.  My suggestion is to try a simple program, and if you follow his three laws, you should be able to determine the benefits for yourself.

Chapter six was entitled “Practicing.”  The message of this chapter was, that to be a professional programmer, you must keep your skills sharp, and in order to keep your skills sharp, you must practice.  Martin discusses his experience with the Coding Dojo, and the activities associated with it.  Kata, Wasa, and Randori are three coding activities used to hone your programming skills.  Martin also suggests working on Open Source Projects or mixing up which languages and platforms in order to expand your knowledge.  I certainly believe that practicing is an important part of being a programmer.  Once you become an experienced programmer it makes sense to repeat older problems and try to hone your skills.  I, on the other hand, still consider myself a novice, and I think my time is better served expanding my knowledge as much as possible before I begin repeating past projects.

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

The Clean Coder Ch. 3 and Ch. 4

I continued reading The Clean Coder by Robert C. Martin this week.  This blog post centers around the content of chapters three and four.  The majority of chapter three is actually an article by Roy Osherove entitled, A Language of Commitment.  The main theme of Osherove’s article is the three parts of making a commitment, which are, “you say you’ll do it,” “you mean it,” and “you actually do it.”  Essentially he is speaking to following through with your promises.  Osherove also speaks to signs of noncommitment, such as using words like “need,” “should,” “hope,” “wish,” or “let’s.”  He says that a real commitment follows a structure like, “I will … by …”  At the end of the chapter, Martin summarizes Osherove’s points, and puts it in terms of professionals.  This chapter was pretty straight forward and I can’t say that I disagree with the message.

Martin entitles his fourth chapter “Coding” but if you were hoping to find some code, then you will only find disappointment.  This chapter centers mostly on when you should not write code, how you are probably using bad practice while coding, and how you should mitigate expectations.  Personally, I think a more proper title for this chapter would be “Negative Nancy’s Guide to Why You Suck at Coding.”  First of all, this chapter begins with a section called “Preparedness” but I do not see the relevance to the material in the section.  Martin describes the necessary elements of code, and then he talks about concentration.  He then describes a plethora of different distractions and advises the aspiring professional programmer not to get distracted.  On a side note, I found it interesting that Martin suggests that a programmer should put in eight solid hours a day instead of attempting to code for longer.  I found this interesting because in chapter one he suggests that you should commit at least 60 hours a week to your career.  If you only code for eight hours a day, seven days a week, that only equates to 56 hours.  For someone who claims to be a great professional programmer, I find his basic math skills lacking.

Well, I am now 76 pages into this textbook, only 109 more pages to go.  I’m not saying that this is the worst text I have ever read, and it has certainly given me something to write about, but I am certainly finding The Clean Coder to be far more idealistic than practical.

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

Asking Great Science Questions

NOTES FROM Asking Great Questions Dough Rose 1.Introduction One of the most important parts of working in a data science team is discovering great questions. To ask great questions you have to understand critical thinking. Critical thinking is not about … Continue reading

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

Introduction

Hi all my names is Angelito but you can call me Lito. I work full time at a car dealership and i love it. Looking forward to a great semester in this class; please checkout my blogs and feel free to leave comments and feedback.

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

Week 1 – Learning Reflection

This is the first installment of learning reflection posts for my capstone at WSU.  This week in class we formed groups to work on projects.  I am still figuring out what we will be doing exactly, we are very early in the process, but we started pulling resources.  This week I read up on OpenMRS and AMPATH.  I started reading through this book which I found on the OpenMRS website and gained some knowledge about the background and goals of the project.  As for AMPATH, I perused the website, and gained an understanding as to what they are trying to accomplish.  In all honesty, it seems like OpenMRS and AMPATH are noble endeavors, and I’m excited to get started on our own project.  I suppose the next step is to get together with our group and begin creating our product backlog, and start our first sprint cycle.  Unfortunately, this week was mostly spent on researching what we are getting involved with, and there was little physical progress.  Hopefully, next week will involve more direction and some real progress will be made.

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

The Clean Coder Ch. 1 and Ch. 2

512nzcu0wfl-_sx258_bo1204203200_

This past week I read the first two chapters of The Clean Coder by Robert C. Martin.  The first chapter’s main focus is on professionalism.  Martin defines professionalism as a “marker of responsibility and accountability,” (8).  He then proceeds to explain what he means by that statement, and he describes what he believes makes a programmer a nonprofessional.  In chapter two Martin describes in detail an aspect of being a professional.  He stresses the importance of saying “no” when a programmer is asked to complete tasks in unrealistic timeframes.  He provides numerous situations and describes why some ways of handling the situation of saying “no” are better than others.

So I am 43 pages into reading The Clean Coder, and I must say that Martin definitely has a very strong opinion concerning his topic.  To an extent I would say that I find it overboard and at times even condescending.  The thought that an employee is only a professional if he or she would pay ten thousand dollars back to the company for an error just seems unrealistic.  Additionally, I can’t imagine an employee keeping his or her job for very long if he or she kept saying no to their employer when asked to complete an assignment.  I understand that I am oversimplifying Martin’s point, but at the same time, you must make adjustments and compromises in order to fulfill demand, even if that means not testing every piece of code that you write.  Hopefully I find some more realistic information in the later chapters, because as it stands, I find Martin’s writing to be far too idealistic to be useful.

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

Week One Reflections

This week was mostly set up processes. We choose teams with an interesting voting strategy which seemed to work except that someone had dropped the class and there was an odd number of students in the class. Then we chose a team name by having everyone pick a letter and then finding a some what coherent word with those letters.

We then set up a slack for our group. Slack is a group chat room that allows users to post links and information. I have not specifically used slack but I have used discord. Discord is similar to slack but also has a voice chat option. It is a very good way to keep the entire group updated.

Then we learned what we could about the project we would be working with. OpenMRS is a client server application that allows people with little programming knowledge to build medical records. This system is very useful in developing countries and countries without the necessary funding. AMPATH is one of these record systems that is based in Kenya and helps with all kinds of needs. For the OpenMRS Platform they use Spring MVC and Java EE, and for their ORM they use Hibernate. And front end stuff they use Angular 2.

I am excited to learn more about Angular 2 because at my internship there is a group working in Angular 2 and they are doing new things in the industry.

From the blog CS@Worcester – Conundrums In Computing by patrickgrahamblog and used with permission of the author. All other rights reserved by the author.

Clean Coder, Chapters 1 & 2

The fist chapters title is professionalism. In part one the author states that the difference between a professional and a nonprofessional is taking responsibility for your mistakes. Part two is a detailed story of when the author did not take responsibility at first and it came and bit him in the butt later. Part three the author elaborates on taking responsibility and that as a professional you should strive to write perfect code and learn from the bugs. Also state in this section is that software should be like clay always changing and flexible. The next section is Work Ethic and something the author says at the beginning of this section is that it is not your employer’s responsibility to make you marketable. The author ends the chapter by stating that if you are going to be a professional then you should strive to know a large amount of your profession.

The second chapter focuses on the actual aspects of saying no and why you should. He details that if you know a project will not be done on time then you should say no to the manager who is pressuring you. By saying no you are stating that this cannot happen in this amount of time. In the end this situation helps everyone find a compromise and doesn’t lead to some catastrophic or terribly broken prototype getting launch into production. It helps everyone to say no.

One of the things in theses chapters that speak to me the most is when he states that it is not your employers job to make sure you are marketable. I believe that this trap is equality easy to fall into as a student. If you expect your teachers to constantly keep telling you to practice coding or to read your books then you will be failing yourself and your future career. I think that I might have fallen into this trap and now because of it I feel as though my skills are no  up to par. I will have to work hard to resharpen my skills. I have been in the situation of saying no to an aggressive manager before but the author has some interesting reasoning on how saying no helps both parties more than just agreeing and saying yes, even though you know it simply cant be done.

From the blog CS@Worcester – Conundrums In Computing by patrickgrahamblog and used with permission of the author. All other rights reserved by the author.

The Clean Coder Chapter 1 & 2

While in my capstone, we are also expected to stay up with the chapter readings in The Clean Coder. I’m sure that I am going to end up learning a lot of things from our readings, especially how to behave in the professional environments we will all soon be present in.

Professionalism:

This first chapter helped me realize how “professional” is a loaded word. It really all depends on you. You could be working straight out of your basement and still have your work considered more professional than someone working with a team of developers. It all comes back down to the quality and effort put into your work, and your accountability/responsibility. Obviously it is impossible to make code that has zero imperfections and no bugs but that doesn’t mean you can’t take responsibility for your imperfections. You need to start being held accountable for your errors and to make them as minimal as possible, even though it is impossible to error less, you can only try to make it as close to zero as you can, but remember that might need to apologize but don’t keep apologizing and making the same mistakes as if you didn’t learn anything from it.  Most of all, practice and stay up with knowledge, learn the new techniques coming out and keep up with the times except sticking with old techniques. Keeping with the old ways will hold you behind and continuous practice is the only way that you will improve your craft.

Saying No:

One of the most important parts of being a professional is knowing when to say “no.” Even if you are talking to your boss about a due date, a professional speaks truth to power and knows when when to say “no” to their managers, only slaves are not allowed to say no. Laborers look for people who can tell them “no.” They need to be told “no” in situations where something really can’t be done on time or any other problems arise because if someone didn’t have the guts to say so and does not end up reaching up to par with the progress he told his boss that hew would be done with, it could lead to a larger scale and even worse disaster than before. Not lying to anyone you work with is the best thing you can do. Communicating is important even when something can’t get done on time rather than just for problems. Trying to defend your position and explaining the “why” in the situation could help even more. Rather than just passing for whatever your boss or coworker might tell you to do, you need to explain to them that it might be impossible to do what they want rather than false promises which they believe blindly. Offering to “try” to finish a project before you think you can finish it is a lie and a commitment to succeed when you might not be able to, which just ends up putting a burden on you.

From the blog CS@worcester – CS Blog by Gautam by csblogbyg and used with permission of the author. All other rights reserved by the author.

The Clean Coder Chapters 1 & 2 and Week 1

The Clean Coder, Chapters 1 & 2
After reading the first 2 chapters I felt like I had read my
own experiences over the past twenty something years. I wasn’t a programmer or
in anything to do with computers, but the more I read and learn about this field
the more I find that even though I was doing something different, a lot of the same
issues happen no matter where you are.
In the first chapter on professionalism he talks about how
it is easier to be a nonprofessional because they don’t have to take
responsibility for the job they do. That got me to thinking about the term. No
matter what job or jobs I have had I always tried to do them as a professional.
I think the term work ethic could be used to describe professionalism as well.
You get out what you put in. I felt like I had been in similar situations as I
read the chapter. He seemed to go through something everyone must go through at
some point in life. I enjoyed how he learned from his errors and passed wisdom
on. The lessons learned from releasing the product without properly testing and
it went south. This was all to save face and look good because it went out on time,
but then the backfire. Though you think you are saving time, in the end you
lose time and man hours when if it had of been done right the first time a lot
could be prevented.
I like his take on the do no harm function as well. We can’t
be perfect, but we must be responsible for our imperfections and should always
be trying to get our error rate approaching zero and expect QA to find nothing
wrong. If that is the thought process you should genuinely be surprised when
they do find a flaw. I have been in the situation where I half assed something
to get it done on time and was not surprised in the least when it failed.
Wasted time and hours when I should have just done it right the first time.
I really felt like his work ethic and knowing your field hit
the nail on the head as well. They gave me something to try and think about. I
like the time breakdown. It humbled me actually when he was talking about the
first 40 are for the employer and 20 aside for me. I had never thought of it
that way and it humbled me. He set up some very realistic ideas on how to
utilize time. As far as knowing the field, I feel like I have a lot to do. I
know I am just getting started, but I didn’t realize just how much there is to
just know for the basics. I picked up a copy of the gang of four design
patterns books to increase my learning on that end and plan on just plucking
away each day to increase my chops.
Overall I gained a great deal from chapter one and plan on
reading it again. I wish I had come across this sooner.
Chapter 2 and saying no brought back many memories as well.
I think a lot of people in general have issues with saying no and want to just
get along and cause no waves. I am one of those, well was. I do not like to say
no because it is uncomfortable for sure, but that was because of the way that I
said no. I usually offended someone because I didn’t think before I spoke. I
have changed. He makes some great points on how to and not to approach
situations. His role playing scenarios were ones I have been a part of myself
to some degree. I was one of those people that used to say I’ll try and had
never thought boss would think of that as a yes I can get it done on time. It
makes sense though because I’ll try is like beating around the bush.  Overall there were a lot of good points that
can be used no matter where or what job you are doing. I am sure that once I
get into the field that I will be practicing my version of saying no and this
book will come to mind.
Week 1 learning
I am still trying to process everything that I have gone
over this week and am still in the process of going over it. The first couple
weeks of the semester are the hardest for me. I try to make a schedule of my
time so I can manage everything. I am excited for this one though as it is my
last undergrad semester and a long time coming. I have been going through some
Angular 2 tutorials to get a grasp on how it works, and using the node package
manager and other tools. I think it is going to be a lot of fun to learn and
use and I hope to become proficient with it.
The Open MRS project is overwhelming to me so far, but that
is I guess because I am just getting into what it is all about. I tried the
demo and like the functionality and can’t wait to get my hands dirty. I think
it is great that so many folks are collaborating on this records system that
can help so many people around the globe. I am eager to get started in this
journey and hope that whatever we do this semester has an impact in the years
to come. I know I am going to have a lot of challenges, but I welcome them with
open arms.

From the blog format c: /s by c-braley and used with permission of the author. All other rights reserved by the author.