Monthly Archives: March 2017

Sprint 3 (2/23/17 – 3/7/17) Learning Reflection Blog

To be honest, out of the 3 sprints that we have already gone through, this sprint was probably the most unproductive. It might have something to do with the fact that this last sprint only consisted of about one user story; which was fixing the NGPOC-184 issue but nonetheless, it just didn’t feel as though anyone in our group (sadly, me included) made any progress. I think this might be because the class in general is too loose. We have to do check-ups on Scrum every other day but besides that, there is nothing forcing us to do the work. We could be saying we are doing something but there is no way of enforcing or checking that. For me personally I need to spend more time and focus on learning Angular 2 because its discouraging when I look at the code because it doesn’t all make sense to me.

From the blog CS@Worcester – Tan Trieu's Blog by tanminhtrieu and used with permission of the author. All other rights reserved by the author.

The Clean Coder chapter 13&14.

We have reached the final chapters of the book. The last two chapters talks about teams, projects, mentoring, apprenticeship, and craftsmanship. Even though these two chapters are very brief, there are a lot of important facts and key points that we can take into our careers.

The first chapter talks about working in teams that will sometime consist of programmers, project managers, analyst, and testers. The book explains a concept called “gel” where each members of the team learn each others weakness, strengths, and quirks. It can take a really long time a team to really gel. I can relate to this because i work in teams all the time during school and we don’t always work effectively during the beginning stages. This why a team working on short projects that requires a portion of your time never really learn how to work with each other efficiently. And this is why it is important to form the team before the project; the collaboration will be much more effective depending on the teams experience with each other.

The last chapter of the book starts with the fact that it easy to wiggle through the system and graduate with a degree in Computer Science. Nowadays, Most of the curriculum doesn’t really prepare students for what they will face in the industry. It is important to have a mentor with years of experience working as a software engineer that can teach us what to value and how to behave. This chapter separate programmers into three categories master, journey, and apprentices/interns.  Newly graduates should always start as interns or apprentices. From there they can learn, grow, and gain experience to work on complex projects.

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

Sprint 3 Reflection

In sprint 3 we got more involved with writing code for AMPATH. Basically, each group member tried to write the authentication module from scratch. I was able to write about 50% on my own but needed to do a lot of verification with the working module. This was about the level of knowledge for the whole group. Our definition of done for this task was to just do as much as we could on our own and use the working module for assistance as needed. We decided on this because we need to be moving forward with more meaningful tasks. Also during this sprint, the AMPATH developers added a new test server for us to connect to for running an AMPATH instance. This was very helpful because we were constantly having issues with the openMRS standalone and its server. The whole group was able to connect to the new test server pretty quickly and it has not given us any trouble since. The last major task for this sprint was creating our account and getting logged in to AMPATH’s JIRA system. This system is used for issue tracking and with an account we can assign ourselves to specific issues. Our group was assigned one issue so far but we weren’t able to nor did we plan to get to it this sprint. Overall our group had a successful third sprint. We were able to get the tasks we committed to done and our knowledge of the AMPATH code base has been getting stronger. The only thing our group needs to improve on is our daily scrums in Slack. We have great communication in class and everyone is doing their tasks but we are struggling to communicate our progress outside of class time. I believe in the next sprint communication will be easier because we will all be working on the same issue. Up until now our tasks have been individual so working together has only been necessary if we get stuck on something. In conclusion another strong sprint for TeamLoading.

From the blog CS@Worcester – Software Development Blog by dcafferky 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.

The Clean Coder Chapters 13 & 14 (2/28/17 – 3/7/17)

I can’t believe the book is finally done! I was kind of disappointed to know that there are no more chapters left in the Clean Coder book. I enjoyed reading it. For the most part, the last two chapters weren’t as “exciting” but there were a good amount of key values that I agree with in those chapters. One of the most important concepts I really want to emphasize is the idea that it is the responsibility of the masters and journeymen to teach the newer apprentices the correct ideologies and give them the experience they need to grow. That is the only way good software practice will survive; its if it is being correctly passed down from generation to generation. So in summary, what you learn in school and what you find in the real world are two completely different things and you need the right experience and mentor-ship to guide you through it

From the blog CS@Worcester – Tan Trieu's Blog by tanminhtrieu and used with permission of the author. All other rights reserved by the author.

The Clean Coder Chapter 11 & 12

Chapter 11:

This chapter gets into the topic of doing what you are supposed to do, and what you’ve learned to do, even under pressure. Your training and experience has taught you to be calm and decisive and use your time wisely. It is also controlling and avoiding this pressure so it doesn’t become a problem in the first place. I personally sometimes have trouble doing this because I am very driven by the deadline, being under pressure helps me complete my work on time and drives me to finish what I have to do. But I did read that it would be best to avoid situations of pressure, to try to spread it out over a longer period of time to lessen its stress. It also talks about commitments and how they shouldn’t be made if they seem unrealistic, and the risk should be shown to the business to they can manage it the right way. It also talks about how you should make sure that there are no messes in your code, and you keep it clean. Most of all, do not panic, because worrying about it will not help you in any way, just take your time and don’t rush your work and follow your disciplines. If all else fails, go to a team member.

Chapter 12:

This chapter talks about how most programs and software are made in teams and that it is more professional to work in teams rather than a loner. Collaboration is one of the most important parts of programming. Even though sometimes it might be hard to get along with someone who isn’t really in your social circle, and you might even like to work alone, be focused all by yourself with no one to bother you, it is much better to work with people because you see the same problem from different perspectives and be able to solve issues you might have missed working by yourself. But with advantages come disadvantages, you should always make sure you know what the people who pay you are thinking and what their goals are. Your most important needs are to meet the needs of your boss. This means you would have to know all that is going on around you and interact with managers, analysts, and other team members. It is important to support everyone around you and keep your business afloat, and to do this you need to deeply understand everything that is going on around you, including your short term and long term team goals. You should always make sure that the code you are writing is accessible to the whole team and not just you, everyone needs to be able to work on it and make changes, not just you, and that is how you learn from each other. Sometimes pairing is the most efficient way to solve problems or debug. I understand this because most of the times if I ever get stuck on anything I always go to someone for help.

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.

Retrospective Sprint 3

During Sprint 3 we were able to complete our small tasks, but upon approaching our first bug we ran into a problem where we could not locate the button. The problem description was not very descriptive and contains no images of the said button. There was a section with forms on the site that we were assuming contain the button (due to the name of the button having ‘form’ in it), however none of the forms would load on any of our computers or servers. We reached out to the product owner and received a response toward the end of the sprint where he provided a new server. With this new server we were able to load a form which corresponded with us finally being able to find the button. Using debugging tools in the browser we can easily find the code name of the button and the container allowing us to easily find the section of the code that we need to change. Sadly because of the delayed response and how much in class time we have we are going to have to push this item onto the next sprint.

From the blog CS@Worcester – Kyle Polewaczyk by kpolewaczyk and used with permission of the author. All other rights reserved by the author.

Clean Coder Chapters 13 and 14 (Week 6)

Wow! Finally in the last chapters of Clean coder, kind of emotional right? I’m still holding it in without spearing a tear from my eye. In the 13th Clean Coder chapter, the author talks about the value of teamwork and how the concept is incorporated into projects. The gel phase gets talked about where its the phase a team really gets to know each other so they can adapt and work together properly. The author goes on about the challenges of being a project leader, including the the point where every team needs enough time to gel so they can work properly together and get things done and keep it together for as long as the project or projects are in development.

I didn’t know that a typical team is around 12 people, i always wanted to know about how many are working within a project. Let alone i wonder how that many people get to know each other while working in the environment, probably go out to the bar or something. Teamwork is critical since working individually on a project is tedious so this is a great topic to touch base on.

The last and 14th chapter of The Clean Coder talks about teaching people how to code and giving them opportunities to guide the educated by working with them and giving them advice. The author first talks about meeting a student who is going for a masters in computer science and somehow managed to avoid coding, and then goes into saying that school can not teach you into being a craftsman.

While I do know people who aren’t really good at coding and are in the CS program, they at least work in a different field that does not include a lot of programming and just mainly testing and maintenance. Learning on your own is super beneficial and school will not really teach you that, they only teach you what you learn from google in a shorter amount of time really. It’s the adventure you go to on your own that counts.

From the blog CS@Worcester – Dan's Tech Rant by danbarbara and used with permission of the author. All other rights reserved by the author.

The Clean Coder (Chapters 13 & 14)

Chapter 13 is short and the chapter can be summarized as follows: teams are hard to build, it better to use the same team  for different projects rather than form teams around a single project.

Chapter 14 is about mentoring, apprenticeship and craftsmanship.  I found the Degrees Of Failure section funny. How does somebody go through a master’s degree in CS without knowing how to code? I was surprised to hear that there are CS master’s candidates who do not know how to code! Damn! !

The rest of the chapter was about mentoring, the importance of learning and what it means to be craftsman. I completely agree with the author that the process of becoming a software engineer must be more like the process of becoming licensed doctor. I also agree with the author on the idea of craftsmanship. I takes years of learning, practice and tutelage to gain true mastery of software development.

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

In chapter 13 of The Clean Coder, Martin goes over why teams should not be formed around projects. Instead a team should be put together with the objective being for that team to gel together and stay as a team for a long time. This makes sure that you have people that understand one another and can easily work with each other on multiple projects that they get. If this doesn’t happen, it may take longer for an makeshift team to get a project done rather than one that is already gelled. Martin also points out that it is also time consuming and expensive for a business to be constantly breaking up teams to work on different projects because of that fact. Again this just makes common sense to me. If you constantly have to predict how your teammates will act and never get into a rhythm, then you will be wasting time and effort on those predictions rather than getting your work done.

The last chapter of the book is directed towards those that are already in the field. Martin talks about how universities can only teach the next generation of programmers so much, and the rest falls to mentors that know what it’s like working in the real world. He talks about how, ideally, companies would know not to give recent graduates high level work that could possibly lose the company money. Instead there would be a hierarchy set-up that would make sure people with 10+ years experience would oversee people with less experience, and those people would train graduates on concepts and designs for a year before they are able to work on code. Even though this is technically in place – with project managers, older team members who over look younger team members, etc.  – there isn’t enough supervision and mentoring. I definitely agree with Martin on this point. While I have been learning a lot at college – about design patterns, different types of testing , etc. – I have not ingrained all of these teachings into how I program. I also know that there are tons of other things that I have yet to come across and learn because computer science is a huge field and I can’t possibly learn everything. Most of the stuff that I have absorbed has been from someone helping me personally with a project, or talking with a teacher or a professional on how to get some bit of code to work. This is why I think it is very important for people that are already in the field to remember to work and communicate with graduates, so that they can become better at what they do and, in turn, help the next set of graduates that come in.

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