Monthly Archives: March 2017

The Clean Coder Chapters 11 & 12

This week i read chapters 11 and 12 in The Clean Coder by Robert C. Martin.

Chapter 11 is about pressure in the workplace. As someone who has not yet had a full time programming job this is not something that i have a ton of experience in so this chapter was extra interesting. I’m sure even assignments due in a small time frame cannot compare to the pressure of programming in a full time career under  a time restraint. The first tip that the author suggests is avoiding pressure altogether whenever possible. This goes back to one of the main points of the entire book, which is not committing to things that you are not one-hundred percent sure of. If there is no way to avoid the pressure, then the best way to go about it is to maintain your discipline throughout the pressure. He discusses how disciplines you abandon in times of pressure are not really your disciplines at all if you do not believe in them enough to maintain using them when it matters most. Maintaining your disciplines, remembering not to panic and communicating with your team are the best ways to get through a high pressure environment in the best way possible.

Chapter 12 is about Collaboration. At the beginning of this chapter the author goes on to describe the average programmer, someone who most likely does not enjoy working with people and much prefers machines. Although as he also said this is not all programmers, i completely agree and most of the time this is me to a tee. Working with other people causes so many complications. However as he also says not working with others can be catastrophic. As much as we would like to just sit by ourselves work on our own code and not have social interaction, that is just not possible and for good reason. He talks about something called collective ownership which is  a very good concept to have in my opinion. This means that as a team you take collective ownership for all the code in your department, not just the code that you have written. This creates a much better quality code, and helps people to work much better. Robert also talks about pair programming and how rewarding of an experience it can be and i could not agree more with this as well. Pair programming is an opportunity to learn so much from someone with more experience or to pass on your experience to someone who is new. Not to mention it can help you get past roadblocks in your code.

From the blog CS@Worcester – Computer Science Journal by jtassone93 and used with permission of the author. All other rights reserved by the author.

The Clean Coder Chapters 11 & 12

This week i read chapters 11 and 12 in The Clean Coder by Robert C. Martin.

Chapter 11 is about pressure in the workplace. As someone who has not yet had a full time programming job this is not something that i have a ton of experience in so this chapter was extra interesting. I’m sure even assignments due in a small time frame cannot compare to the pressure of programming in a full time career under  a time restraint. The first tip that the author suggests is avoiding pressure altogether whenever possible. This goes back to one of the main points of the entire book, which is not committing to things that you are not one-hundred percent sure of. If there is no way to avoid the pressure, then the best way to go about it is to maintain your discipline throughout the pressure. He discusses how disciplines you abandon in times of pressure are not really your disciplines at all if you do not believe in them enough to maintain using them when it matters most. Maintaining your disciplines, remembering not to panic and communicating with your team are the best ways to get through a high pressure environment in the best way possible.

Chapter 12 is about Collaboration. At the beginning of this chapter the author goes on to describe the average programmer, someone who most likely does not enjoy working with people and much prefers machines. Although as he also said this is not all programmers, i completely agree and most of the time this is me to a tee. Working with other people causes so many complications. However as he also says not working with others can be catastrophic. As much as we would like to just sit by ourselves work on our own code and not have social interaction, that is just not possible and for good reason. He talks about something called collective ownership which is  a very good concept to have in my opinion. This means that as a team you take collective ownership for all the code in your department, not just the code that you have written. This creates a much better quality code, and helps people to work much better. Robert also talks about pair programming and how rewarding of an experience it can be and i could not agree more with this as well. Pair programming is an opportunity to learn so much from someone with more experience or to pass on your experience to someone who is new. Not to mention it can help you get past roadblocks in your code.

From the blog CS@Worcester – Computer Science Journal by jtassone93 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.

The Software Craftsman: Chapters 1 & 2

Chapter 1 covers the topic of software development in the 21st century. Basically the author is introducing the overall theme of the book in that today’s developers are expected to be software craftsman. Just being able to write code isn’t good enough, a developer needs to have the ability to contribute to the business in as many ways as possible. The author also points out what seems to be a flaw that seniority among developers is earned by years of experience instead of knowledge. He argues that developer’s experience can be so different across technologies and industries that just years of experience should not indicate seniority. In conclusion the author is preparing the reader to learn how to become a software craftsman like he mentions.

After reading chapter 1 there’s not too much information yet but I think the author made a couple good points. The first one being that he basically demoted himself from architect to developer for the simple goal of being happier. I think it’s important to remember that in order to be successful you need to be happy above all else. I don’t think maintaining a job you are completely dissatisfied with is sustainable. I also agree with the author’s thoughts on seniority. While years of experience definitely holds value, someone with proficient knowledge of a subject shouldn’t be thought of as junior just because they haven’t developed for as many years.

Chapter 2 covers the topic of Agile development. The author gives a general idea and history of the methodology. Basically Agile was created by the most influential developers in the early 2000’s to address both process and technical oriented disciplines. These disciplines would ensure developers built the right thing and built that thing right by getting the most feedback as possible through quick and short iterative work cycles. Agile completely changed the development world and gave control to small teams who played all the roles of software development following the 12 principles of the Agile Manifesto. While the Agile takeover massively improved communication in business, it ultimately led to the Agile hangover as the author calls it. Companies were using Agile only as a process improvement and maintained their sub-par technical disciplines. Before long, companies who had adopted Agile development were back to their old ways and not seeing the results they expected. The author blames this on the companies only committing to partial transformations and neglecting to improve their technical disciplines. The author concludes saying that software craftsmanship and the Agile methodology can work together for best practice. While Agile will improve upon the development process, software craftsmanship will promote better technical practice and doing more for the client.

After reading chapter 2, my thoughts of Scrum have been reconfirmed. As one of the most popular Agile implementations, Scrum has taught me the importance of constant feedback and changing demands to work in the most efficient way possible. I can definitely see how the Agile hangover was destined to happen. Focusing on the development process was a great idea but lower level disciplines of writing good code should have been enforced before if not alongside the adopting of Agile techniques. This really shows that no method or technique can outweigh bad code or lack of technical discipline. Having seen the effects of only focusing on improving processes I do wonder if Agile coaches and professional training seminars are better equipped to address the importance of technical improvement alongside Agile development for optimum results. In summary Agile development is a great technique for a development team but must be accompanied by correct technical practice through software craftsmanship.

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

Reflection: Sprint 3

Finally we completed our 3rd sprint. The good news is I was finally able to fix the “Unable to start OpenMRS”. It was to do with the path with spaces problem. Just removing spaces from the folders where the standalone was extracted fixed the issue. On the other hand, the not so good news, is we don’t need OpenMRS standalone anymore since we got AMPATH test2 server to work on.

Moreover, this week we got chance to to take part in online conference with developers of AMPATH. It was exciting to listen about the improvements and changelogs they did with the project.

The main task for the sprint was to get connected to  AMPATH JIRA system and fix NGPOC-183 issue. The bug behind the issue was “After login it allows free text when selecting location and saves successfully.” But when we tried to reproduce the issue, any free text such as ‘blablabalba’ did not saved that it a location. One of our team mate has posted for more classification. We haven’t received a reply yet. In the mean time, I am going through the AMPATH code, particularity the modules that has to do with our issue.

 

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

The Clean Coder: Chapters 13 & 14

Chapter 13 “Team and Projects” discusses about team management and its formation. Martin suggests it is better to form persistent teams that move together from one project to the next and can take on more than one project at a time. He conveys the concept of a gelled team. The team members begin to frame connections. They figure out how to work together with each other. They take in each other’s characteristics, qualities, and shortcomings. In the long run the group starts to gel. Ultimately, a gelled team plan together, solve problems together, face issues together, and get things done.

I sense more confident in my work while I am working with the same person over and over again. We get to know each other opinions, skills, and abilities. It’s better to know the person with whom we are working at a personal level. It helps to form friendships.  When managed properly, I feel teamwork always is a better way to work.

The next and the final chapter of the book “Mentoring, Apprenticeship, and Craftsmanship” revolves around some of the key information that we might face in the real world after being a CS graduate. I feel this was the perfect chapter to end the book. Martin believes in adapting a program of apprenticeship rather than just learning the theory of computer programming in schools. Furthermore, author also introduced a system of masters, journeymen, and apprentices. He summarizes after apprentices knows know design principles, design patterns, disciplines, and rituals; if the masters agree, then the apprentice becomes a journeyman.

I do feel it’s all about years and years of hard work and experiences. Once we stepped into CS field we should always be learning and be willing to grow our skills.

Ultimately this post brings to the end of the series. Looking forward to read another exciting book.

 

 

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

Week 5 Reflections

Well this time
around the sprint seems to be getting more comfortable as far as us
working as a team and getting things done as well as discussing what
needs to be done and who will be doing what and the likes. It has
been a rather uneventful sprint in my opinion as we did some waiting
on the folks at ampath to figure out what they wanted us to do and
came up with 4 issues in the Jira board for us. That was actually
pretty cool to see an issues board and to see how it operates as I am
sure that when I get a job in the field I will be using something
similar. We had a roll of for who would get what issue because our
team and another wanted to work on the same issue. We lost and got
our second choice, NGPOC-185 in which there is a concern over logging
out when you are in the middle of filling out a form it doesn’t
save the data you had in the form and they would like a modal to pop
up asking if you would like to save or not. I have been going over
ampath code as well as documentation(Angular) to learn about where
the issue is and how to implement a fix.

I gained some more
knowledge this time writing the login and auth modules. It was a bit
of my own and a bit of looking at the code when I needed to, bu I
feel more comfortable with Angular, not like super but confident I
can actually do stuff with it now. I have also been going through a
book on Angular 2 by Pablo Deelman called “Learning Angular 2”
courtesy of ACM. It is good book so far and basically covers
everything needed for Angular including testing. It should help me
gain more experience with the language.

There really isn’t
much more I can offer, but next sprint looks like it will keep us
fairly busy as we should have the issue solved and implemented and
apparently there is a list of other issues for us to tackle now so
things are starting to get rolling along. Until next time….

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

Week 5 Reflections

Well this time
around the sprint seems to be getting more comfortable as far as us
working as a team and getting things done as well as discussing what
needs to be done and who will be doing what and the likes. It has
been a rather uneventful sprint in my opinion as we did some waiting
on the folks at ampath to figure out what they wanted us to do and
came up with 4 issues in the Jira board for us. That was actually
pretty cool to see an issues board and to see how it operates as I am
sure that when I get a job in the field I will be using something
similar. We had a roll of for who would get what issue because our
team and another wanted to work on the same issue. We lost and got
our second choice, NGPOC-185 in which there is a concern over logging
out when you are in the middle of filling out a form it doesn’t
save the data you had in the form and they would like a modal to pop
up asking if you would like to save or not. I have been going over
ampath code as well as documentation(Angular) to learn about where
the issue is and how to implement a fix.

I gained some more
knowledge this time writing the login and auth modules. It was a bit
of my own and a bit of looking at the code when I needed to, bu I
feel more comfortable with Angular, not like super but confident I
can actually do stuff with it now. I have also been going through a
book on Angular 2 by Pablo Deelman called “Learning Angular 2”
courtesy of ACM. It is good book so far and basically covers
everything needed for Angular including testing. It should help me
gain more experience with the language.

There really isn’t
much more I can offer, but next sprint looks like it will keep us
fairly busy as we should have the issue solved and implemented and
apparently there is a list of other issues for us to tackle now so
things are starting to get rolling along. Until next time….

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

Week 5 Reflections

Well this time
around the sprint seems to be getting more comfortable as far as us
working as a team and getting things done as well as discussing what
needs to be done and who will be doing what and the likes. It has
been a rather uneventful sprint in my opinion as we did some waiting
on the folks at ampath to figure out what they wanted us to do and
came up with 4 issues in the Jira board for us. That was actually
pretty cool to see an issues board and to see how it operates as I am
sure that when I get a job in the field I will be using something
similar. We had a roll of for who would get what issue because our
team and another wanted to work on the same issue. We lost and got
our second choice, NGPOC-185 in which there is a concern over logging
out when you are in the middle of filling out a form it doesn’t
save the data you had in the form and they would like a modal to pop
up asking if you would like to save or not. I have been going over
ampath code as well as documentation(Angular) to learn about where
the issue is and how to implement a fix.

I gained some more
knowledge this time writing the login and auth modules. It was a bit
of my own and a bit of looking at the code when I needed to, bu I
feel more comfortable with Angular, not like super but confident I
can actually do stuff with it now. I have also been going through a
book on Angular 2 by Pablo Deelman called “Learning Angular 2”
courtesy of ACM. It is good book so far and basically covers
everything needed for Angular including testing. It should help me
gain more experience with the language.

There really isn’t
much more I can offer, but next sprint looks like it will keep us
fairly busy as we should have the issue solved and implemented and
apparently there is a list of other issues for us to tackle now so
things are starting to get rolling along. Until next time….

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

Week 5 Reflections

Well this time
around the sprint seems to be getting more comfortable as far as us
working as a team and getting things done as well as discussing what
needs to be done and who will be doing what and the likes. It has
been a rather uneventful sprint in my opinion as we did some waiting
on the folks at ampath to figure out what they wanted us to do and
came up with 4 issues in the Jira board for us. That was actually
pretty cool to see an issues board and to see how it operates as I am
sure that when I get a job in the field I will be using something
similar. We had a roll of for who would get what issue because our
team and another wanted to work on the same issue. We lost and got
our second choice, NGPOC-185 in which there is a concern over logging
out when you are in the middle of filling out a form it doesn’t
save the data you had in the form and they would like a modal to pop
up asking if you would like to save or not. I have been going over
ampath code as well as documentation(Angular) to learn about where
the issue is and how to implement a fix.

I gained some more
knowledge this time writing the login and auth modules. It was a bit
of my own and a bit of looking at the code when I needed to, bu I
feel more comfortable with Angular, not like super but confident I
can actually do stuff with it now. I have also been going through a
book on Angular 2 by Pablo Deelman called “Learning Angular 2”
courtesy of ACM. It is good book so far and basically covers
everything needed for Angular including testing. It should help me
gain more experience with the language.

There really isn’t
much more I can offer, but next sprint looks like it will keep us
fairly busy as we should have the issue solved and implemented and
apparently there is a list of other issues for us to tackle now so
things are starting to get rolling along. Until next time….

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