Monthly Archives: January 2017

The Clean Coder, Chapters 1 & 2.

“The Clean Coder: A Code of Conduct for Professional Programmers” is the first book I am reading by the author Robert C. Martin. Going through the pre-requisite introduction portion of the book Martin noticeably states that this particular book is full of catalog of his errors from his 42 years of experience in software engineering field and a set of guidelines to avoid them. I am expecting a lot of takeaways form this book for my Capstone course and professional career as well.

Chapter 1: “Professionalism” discussions about the taking responsibilities and the various ways to be able to accomplish the responsibilities in regard of the true essence of professionalism. First part of chapter surrounds with the things every software professional should be familiar with such as Test Driven Development approach, QA process, code flexibility and so on. Of course these principles are important during the software development process. When the writer starts to talks about gaining credibility and trust through continuous learning, practice, collaboration, and customer service; things get excited. I agree with the writer how learning process is necessary for self-empowerment. Being up-to-date with the new disciplines and techniques is a must in Computer Science field. Similarly, practice help individual to refine and enhance our skills. Personal drive and team-building skills are valuable and necessary for developers striving for the top of the profession, but more is required. Though most developers bring a project to the table, pushing it through requires a strong ethic of customer service. Customer is critical because it establishes a path that helps make sure that the features you are developing are really going the address your customer’s need.

Chapter 2: “Saying No” focuses upon team work. Martin gives a clear vision of how to be a successful team player. He states a team player is not someone who says yes all the time. Sometimes the only way to get to the right yes is to be unafraid and say no. I completely agree with the thought that, “What we all have to realize is that saying yes to dropping our professional disciplines is not the way to solve problems.” It rapidly becomes impossible to control all aspects of all the projects within a large area of responsibility. It is critical to develop teams that can bring the necessary talents to bear without requiring your direct intervention.

 

From the blog CS@Worcester – Software Dev Capstone by osworup007 and used with permission of the author. All other rights reserved by the author.

Week1: Getting Started on Project

During week1, I did not do much. The biggest tasks that I achieved were, first of all, the creation of group. I ended up in Sudarshan’s group with four other team members (including Sudarshan). We picked our team name: FantasticFive (#coolestname). I signed up for slack account and Tan made a group channel for our group so we can communicate with each other outside class.

I also start researching to learn about the OpenMRS project at http://openmrs.org/

From the blog Software Learning and Development – Site Title by hhussainsite 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.

Capstone Project: Week 1 Reflections

This was the first week we began working on the Capstone project class. This week we didn’t do too much in the line of actual development so I don’t have too much to talk about. However, we did form the teams that we’d be working with for the entire semester. Myself and a group of my friends were lucky enough to all be paired together. We’ve done some group projects before and know each other’s work ethic and what we need to do to push each other. I really enjoy working with these teammates as well, so that helps immensely when you’re about to spend the next 3 months with them working on a project.

We are going to be working in the Ampath project that is part of the OpenMRS group project. I have looked into the OpenMRS project prior to this class but never took the dive to begin developing for them. I am incredibly excited to have an opportunity to work with a code base as large as this one. This will be the first time I really dive into a project that I haven’t worked on or seen previously and will be working with someone else’s code quite a bit and that will be a new experience as well. The project we will be working in using Angular2 which is a javascript framework that I have done small personal projects in but haven’t done anything to this scale so I am incredibly excited to be getting this experience as well.


As a side note apart from school, I have been brushing up on my Angular2 skills by following this scotch.io tutorial as well as learning Ruby during some of my extra free time. I am enjoying Ruby as a language however, I find developing in PHP to be my comfort zone and ruby syntactically is a bit different. I find myself forgetting to close if statements with end as well as my loops. I am sure this is something I will get used to but it will take time!

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

The Clean Coder: Chapters 1 & 2

The Clean Coder, this is my first book by Uncle Bob (Robert C. Martin) that I’ve read. Clean Code was on my list of “to read” books along with many other great books for programmers and developers. I had been working through Godel, Escher, Bach: An Eternal Golden Braid, albeit at a sluggish pace and that is a great book as well. However, I read through the first two chapters of The Clean Coder this week and it is simply amazing. It’s a breath of fresh air from all the other “coding” books. What’s most interesting about this book is the fact that, at least with these first two chapters, the ideas extend far beyond just software development. His ideas of professionalism will essentially make any type of career better.


Chapter 1 began by talking about Professionalism. Uncle Bob’s main point in this chapter to strive towards professionalism was taking responsibility for our problems. He elaborated on this and really pushed the point of “Do No Harm”, and by this he meant strive create working and easily maintainable code. Obviously this is what we all strive for as programmers, but he went a step beyond that and began talking about making the responsibility of “perfect code” ours and ours alone. Don’t leave it to the QA team to find and report bugs, take that on yourself. Don’t leave it up to someone else to refactor your code to make it more extensible, do that yourself. I really appreciated this point, because sometimes I find myself slipping into the mindset of, “I don’t need to take care of that, it’s someone else’s problem. Even if I don’t have the answer 100% I should do my best to help the person reach the solution faster.


Chapter 2 talked about Saying no. This is something I personally struggle with. I am the kind of person who generally can’t tell people no – especially my bosses. I was bread with the mindset, from an early age, that when your employer instructs you to do something, do it. Now not to say this is a bad mindset by any means, but in the real world this can seriously hurt your career and your companies future.

My first major piece of “Software” the I ever attempted at building was a simple front end for a database that also had some data crunching abilities. I also had to design and build out the database. My company is not a software company but an environmental engineering firm so no one really had a clue about building software/coding. Fairly straight forward and easy to build project, for a Senior in his CS degree program. However, when I started this program I was in my first year as a CS student. At this point I had written small programs in languages like Java or Python, but each of these programs did simply CLI type functions and nothing too complicated. I think the most interesting thing I had done at this point was a Fibonacci calculator that used recursion and memoization. I hadn’t approached any problems that essentially required an architecture that used a front end as well as needed data persistence. I had no idea where to begin but I dove in anyways. I told my boss it was going to take 3 months or so to build something like this. I was going to work non-stop over the summer on this project to get it done. The end of the summer came and I felt I barely had anything done. I was probably half way done with the feature sets that had been requested but felt I was on a roll. When my boss asked when it wouldn’t be done, I responded with the fact that I was “unsure”. I wasn’t sure what more bumps I was going to hit along the way because I had no experience at this. He gave me three more weeks and he wanted it done. I said okay.

I got all the features done is this program and it’s still being used at my company today. But I get requests constantly to fix some bug because I didn’t have time to test it. Because I didn’t tell my boss “No I can’t finish it in three weeks”, I was left with an embarrassing piece of work that I always afraid to show people due to my unprofessionalism during the development of that project.


In summary, I am extremely excited about going through this book and being able to apply what I read to not only Capstone project but also to my day to day work life. I think that not only developers should read at least the first 2 chapters of this book but anyone who builds a product for a customer.

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

The Clean Coder Chapters 1 & 2

In Robert C. Martin first chapter of The Clean Coder: A Code of Conduct for Professional Programmers, he talks about what it is to be a professional. Professionalism, in Martin’s view, consists of two things: responsibility and accountability. To emphasize these aspects, Martin goes over what should be done as a programmer to make sure you’re working as a  professional. First he talks about how you should take responsibility for your code. If there are bugs, you should know about them, and take responsibility for them. You should not rely on QA to find your bugs, and apologize to them if they do find any. Make sure to always test your own code and know that it works. Also always automate your tests so that you can run them whenever they are needed. Never harm the structure of your code, but don’t be afraid to update it to make it flexible. Also keep learning for your career and not for your employer. This means take time to do task like read up on current practices, software, and anything that is relevant to your field. Also learn new languages, help people that are new to the field, and find ways to practice your expertise with other professionals. Martin also states that being a professional as means understanding humility and that means knowing when to apologize for a mistake they have made.

In his second chapter, Martin goes over why it is important to say no when you are in a professional environment. He goes over that confrontation is a part of being a professional and, if you continuously give into demands to satisfy your boss or yourself, it can lead to terrible outcomes. In this context, saying no is more to make sure that you don’t give false hope to your employer, overburden your team, and produce trash code. Martin also points out that it is better to stand up and say something about a bad situation rather than say nothing and let things fall apart.

I thoroughly agree with everything in the first chapter. This type of thinking about how to code, making sure it works, and take responsibility for what you have done has been repeated through so many of the previous classes that I’ve taken. I also agree with Martin on the fact that you should always use time outside of classes/work to practice or read up on items that are related to your career. I personally found the second chapter more relevant to myself because I have been put in a position where it would have been better for both myself and my employer to have said no. Luckily at the time I wasn’t working in the computer science field, but for a small company. The owner would continuously ask me to start jobs, which I would agree to, and then add on more work on top of that. It got to the point were I was never able to finish one project because I could not say no to the additional work they wanted done. This eventually burned me out to the point of dropping all the projects and then quitting the job. Now I know that saying no is not giving up, but making sure that you keep your projects, and yourself, on track.

From the blog CS WSU – Techni-Cat by clamberthutchinson and used with permission of the author. All other rights reserved by the author.

Reflections Week 1

During this week we were put into groups and asked to join the courses Slack team and to make a channel for out group. We also learned about Scrum and how we should be working on our upcoming project in the Scrum fashion. Using the Scrum way of working together I think will help us to stay motivated and organized. I then researched OpenMRS and AMPATH, we will be working on projects within AMPATH. While working on this project we will be using Angular 2, so I did some research about Angular and looked up some helpful tutorials that I can use later to help start the learning process for this language. The Scrum way of working together I think will be a valuable skill that I can take away from this course and apply to my professional career.

From the blog CS@Worcester – Software Testing by kyleottblog and used with permission of the author. All other rights reserved by the author.

The Clean Coder 1 & 2 Week 1

In these chapters the difference between a professional and nonprofessional are looked at. Professionals take responsibility for their work and pay the price if a mistake is made. We all want to be professionals, but not all of us want to pay the price. Standing behind your code is another topic, be prepared to apologize, if you sent out your code and there was a bug, don’t hesitate to apologize and take responsibility. Also always be learning new things, outside of what your employer has you working on, this will help your career in the long run.

Another topic discussed was about when you should say not and not be afraid to say no. Many people feel the need to say yes to their superiors or colleagues to avoid an awkward conversation. To be the most professional you should be honest and upfront about your work and how long it might take for it to be completed. It is better to end up in an argument with your boss about a late finish date than to lie to them and say it will be done earlier knowing you cannot reach that date.

These chapters were very helpful to me in terms of how to react and how to work well in a professional work environment. One of the biggest that stood out to me is the right time to say “no” to your boss or co-workers. If you believe something is not achievable then you should have no hesitation to say no that wont be able to be accomplished.

From the blog CS@Worcester – Software Testing by kyleottblog and used with permission of the author. All other rights reserved by the author.

Intro Software Development Capstone

This is my first post of the Software Development Capstone. We will be working in teams to try and produce something worthy of production. This should be some great experience working in a team and learning some new skills like angular 2.

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

Week1: My First blog post

This is my very first post. I am very excited to start blog about my learning and making software in collaboration with team members.

From the blog Software Learning and Development – Site Title by hhussainsite and used with permission of the author. All other rights reserved by the author.