Category Archives: CS448

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.

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 1: Reflections on Learning and Work Products

Just finished week 1 of my senior year capstone.  This week we started off by getting an overview of what the class is.  We learned about SCRUM and actually did some hands-on learning with that.  We were given a theoretical problem and then each took a role as either the customer, developer, or monitor in order to solve the problem.  This was interesting to me and I learned a lot, especially because I had never even heard of SCRUM before.  I really enjoy doing hands-on activities rather then listening to a lecture.

The big thing accomplished this week was being put into our groups that we will be working in all semester long.  Although the process of picking teams was a little shaky, it all worked out in the end.  We informed that we will be writing in Angular this semester.  I have never used Angular before, so I am beginning to work through some tutorials to get a grip on how the language works.  The only thing we have done as far as the actual work we will be doing is we were given the information to start looking through the openMRS project.  We were told we will be focusing on the AMPATH project specifically, so I have been reading up on that.  AMPATH delivers health services, conducts health research, and develops leaders in health care for both North America and Africa (mainly Kenya).  I am very excited to work on the AMPATH project, because it is for a good cause and it is a project that helps millions of less fortunate people who deserve the proper health care.

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.

Week 1: The Clean Coder

Week 1 of CS448 I was assigned to read Chapters 1 & 2 of the book, The Clean Coder.  A quick summary and my thoughts on both of the chapters:

Chapter 1 discussed what it means to be a professional and some ways to achieve be one.  A huge point the chapter touched on is that a professional takes responsibilty for his or her mistakes.  An example the chapter gave was, a nonprofessional who allows a bug to slip through to the product delivered to a customer would shrug it off and move on.  A professional on the other hand would be writing a company check for $10,000.  Some of the major points that the chapter gave to developers that stuck out to me were; they should be testing every single line of their code, they should always make sure to test the whole system before shipping it to a customer (not just the features recently fixed), and that they should be keeping up to date with all of the latest stuff.

Chapter 2 discussed how you should say “no” to a manager, boss or even a customer in the workplace.  The chapter went through and gave different scenarios, using dialogue, where someone was asked to have a certain task done by a certain time, which just simply wasn’t possible.  A good tip that the chapter gives is that you should never lie boss just because you cannot get done what he/she wants in time.  You need to be assertive and let them know respectfully that you will need more time, and what you CAN have done by that time.  In one example in this chapter, a woman named Paula is asked by her manager Mike to be done with the work in 6 weeks.  Paula tells him over and over again that the team will need atleast 8 weeks and there is no way they have it done sooner.  After going back and forth a few times, Mike says “OK, Paula, but I bet you guys can work miracles if you try.”  Mike basically wasn’t taking no for an answer.  He went on to promise the customer that they will have the demo in 6 weeks.  That was an example of the wrong thing to do on Mikes part.  You should NEVER make a false promise and tell someone you will have something done for them if you can’t.

My initial thoughts when beginning the reading was that I was a little bit relieved.  This book isn’t your average boring text book, which was I was expecting it to be.  It’s actually a pretty easy and interesting read.  The book engages the reader and explains things in a way that you can relate to.  Chapter 1 was interesting to me because I never really thought of the term “professional” in the context they described it as.  I just thought if you are in the workplace .. you are considered a professional.  However, I learned that this is not the case at all.  There is a lot that goes into be professional, and chapter 1 opened my eyes to that.  Chapter 2 was my favorite of the two.  I personally have had the problem where I didn’t know how to tell my manager I couldn’t get something done in time.  In the past I have just said, “Ok, I will have it done”, then last minute broke the news even though I knew from the start I couldn’t do it.  I will definitely use what this chapter taught me in the future and say no the right way.  Overall, I enjoyed reading this book for week 1!

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.

Reflections, Week 1

I spent this week learning JavaScript and Angular 2. I found a nice website that has video lessons on JavaScript (https://javabrains.io/topics/corejs); I listened to almost all of the videos.

I found learning Angular 2 quite annoying. I have become so used to Java that it is going to take me some more time to really get used to Angular 2. After searching for a while, I found a channel on youtube about Angular 2 that I liked (https://www.youtube.com/playlist?list=PL6gx4Cwl9DGBYxWxJtLi8c6PGjNKGYGZZ). I watched the first few videos and plan to watch the rest by end of this week.

I also plan to learn TypeScript this week; from what I have learnt TypeScript is a super set of JavaScript and adds features like class based object orientation and type checking to JavaScript and it is also really important in Angular 2.

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 (Week 1)

This was my first time reading this book, and so far, i’ve throughly enjoyed it. Prior to reading the book, I took a stab at what kind of book this would be. Based on the title, i figured that the book will touch base on the qualities of being a person who appreciates their craft. After reading the first two chapters, this book does just that. It explains in details of how one should go about on being professional. One of my favorite lines from the book is on continuous learning.

Would you visit a doctor who did not keep current with medical journals? Would you hire a tax lawyer who did not keep current with the tax laws and precedents? Why should employers hire developers who don’t keep current?

I found this quote to be quite thought-provoking, because i’m a believer that learning is never done. Learning is a life long process and that I too, would hope my doctor would be up to date with his medical journals, and if I have a tax lawyer, that he/she would keep current with the tax laws and precedents. The same thing goes for software developers. The industry is currently changing and concepts that you may have grasped and think you know well, might not be relevant in future frameworks. For example, after doing a little reading about AngularJS two, a javascript framework, migrating from AngularJS one to the newer version won’t be a walk in the park. Things that will work in AngularJS one won’t work in the newer version.

The second chapter touches base with the idea of saying “no” in the workforce. When you are first starting out, you want to excel and meet every expectations and demands that are laid out by your boss. You do so by doing your work to the best of your ability, but when you are given a project with a lot of features to include and you know that father time is not on your side, it’s hard to say no. You end up saying “yes” just to keep everyone happy. By everyone, you mean everyone, but you. This then could result in you being burnt out and have completed it(but did a crappy job), or more commonly, you’re boss and the customer isn’t very happy because you promised x, y and z, but could only deliver x. It’s important to say no, because it could prevent all of the headaches and unwanted meetings with angry customers wondering why something isn’t finished.

 

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

Reflection (Week 1)

All throughout the Fall semester I’ve been mentally prepping myself up for this moment. Now that the time has come, I’m filled with a plethora of mixed emotions (mostly excited). As a Computer Science student, I’m required to take a software development capstone class, AKA CS-448.

Week one has officially ended and i’m very excited to see how the rest of the semester will play out. On the first day of class, we were put into a SCRUM team for an activity where each person on the team had a job. The job consisted of 2 customers, 4 developers, and one monitor. Prior to this activity, I had no idea about SCRUM and its significance, but after the activity, I had a better understanding of this type of framework. After the quick and fun intro to Scrum, we were then placed into teams of 6 where we will be working on features for the OpenMRS project but specifically the AMPATH section.

OpenMRS is the leading open source enterprise electronic medical record system platform. Initially, the community that consisted of volunteers from many different backgrounds started out to fix a database system in a single clinic in Kenya. Over the years, the community of the OpenMRS grew exponentially, ergo allowing this software to expand to other clinics.

If you want to read more about this, heres the link:

Read More

 

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, Chapter 1 and 2 (Week 1)

I read the the introduction, chapter 1 and chapter 2 of the The Clean Coder by Robert C. Martin. I found the introduction funny because the author basically quit the job he did not like while he was making $7,200 a year and and a few months later got the same job back for $6,800 ! I guess the lesson to learn here is the importance of wisdom.

The second and third chapters were about professionalism and when to say no to something (how to be a professional). Being a professional means that you care about the product you build and take responsibility for any problems that may arise. The author explains that to be a professional you must not create bugs in your software and if you make an error, you must apologize. Never release any code that you know to be faulty. And the software you write must be flexible.

The author also talks about the importance of learning. It our responsibility as professionals to make sure we are marketable. We have constantly to learn and strive to improve ourselves.

I found the second chapter interesting. The author explains why it is important to say no to a request by your boss and why not to use the word try. I think following this idea is hard in practice. What if you boss insist you complete something within a certain time limit (which is not possible)? It is very easy to just comply, but it is hard to say no given the fact that your boss has the authority to fire you. But I guess being a professional is not easy, you have to put the software that you produce over everything else.

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

Clean Code – Chapter 1 and 2 (Week 1)

I read the first 2 chapters of this book almost 16 months ago and I did not quite understand the significance of clean code back then. This week I decided to listen to the video version of clean code (available in SafariBooksOnline). The video version made it much easier to understand and I had a few good laughs.

In the first chapter Uncle Bob explains why clean code is important. He tells us the story of Sword Inc, a software company that failed because they produced bad code. When code is not clean the productivity of the development team decreases as time increases. The reason for this loss of productivity is that the developers build a mess as they develop the product. And the software product eventually fails becuase when the management demands new features within a certain deadline, the development team is not able to deliver because they just can’t.

The management tries all sorts of things (like increasing developers) to improve productivity, but nothing works. According to Brook’s law, adding more man power to a late project makes it later.

Finally the management turns to the developers for a solution. The developers solution is to redisgn the entire system! Management does not want to do this since it is expensive. The mangement however, after some time, decides to do it. But even this would not solve the problem. Eventually the company would loose customers because when they replace the new product for the old (more feature rich) product, customers leave for better products.

The only way to solve this problem is to stop running away from it and clean the mess.

So what is bad code? You know that a software systems contains bad code if it is rigid, is fragile, lacks seperability and is opaque. Uncle Bob goes on to explain that bad code is the fault of developers not management, not anybody else.

The second chapter is all about making your code more readable with the help of better naming strategies.

I can relate to this chapter and the Sword Inc company failure. Last semester I wrote software for a class project. Since we only had a limited amount of time and a bunch of requirements to fulfill, I rushed through the development process. As a result of my rushing, the code lacks the properties of clean code. If I had to use the code again or implement a new requirement, I would be lost.

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