Category Archives: Software Learning and Development

The Software Craftsman, Chapter 9 & 10

For this week, I read Chapter 9 Recruitment and Chapter 10 Interviewing Software Craftsmen, from the book title The Software Craftsman by Sandro Mancuso. Chapter 9 takes a look at the picking process of hiring the best developers. Best developer’s identification is that developer must be passion for the craft. Chapter 10 explains the interviewing process that works both ways, the interviewer (who represents the company) and the interviewee (potential hiring candidate) looks for compatibility with each other. The interviewer checks whether the candidate is best fit for the company and the interviewee try to find out whether the company is best fit for him/her.

Chapter 9 explains in detail on attracting software craftsmen to a company. It also walks the reader on a journey on how to craft a job description. I feel like this chapter is the best read for anyone who would like to recruit or looking for the best developer for his/her company or organization. After reading this chapter, I would recommend this sole chapter reading to anyone who carries out the recruiting or hiring process at a company or organization. I believe the author did a fantastic job on covering and perfecting attracting and putting out description for a target and ideal candidate for a job.

In chapter 10, author covers the interviewing part of the hiring process. One emphasis of the author that I liked was when the author explains asking questions in the interview. According to the author, interview should not be only the company asking questions from the potential candidate, but rather the question process should be from both sides. If the candidate is a craftsman, then he/she must have questions for the company too. This way the company and candidate will insures that they both are best fit for each other.

This was very informative read especially on the job description and interviewing.

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

The Software Craftsman, Chapter 7 & 8

For this week, I read Chapter 7 Technical Practice and Chapter 8 The Long Road, from the book title The Software Craftsman by Sandro Mancuso. Chapter 7 explains adoption of extreme programming (XP) like Test-Driven Development (TDD), pair programming, refactoring, simple design, and continuous integration. Chapter 8 explains how to approach job choice and what it takes to have a job/career where you would be happy.

In chapter 7, the author describes and explains all aspects of extreme programming. For example, Test-Driven Development (TDD), pair programming, refactoring, simple design, and continuous integration etc. The best thing that I learn from this chapter was when the author states “Being pragmatic is one of the best quality that a software craftsman can have.” This explains that professionals are not limited to following certain practices and processes where they would always receive optimum results. But rather, as professionals we need to keep looking and searching for ways of doing our jobs better and satisfying the needs of our customers. Whatever it takes, at the end of the day what matters are happy clients. We should follow any practice that we believe will give us this result and we should be accountable for whatever decision we make and always take responsibility for the outcomes.

In chapter 8, I like when the author breaks down job choice base on three criteria: autonomy, mastery, and purpose. Craftsman must look and consider these three things before choosing a job. I believe that this is a good criteria to have, but to be able to choose based on these criteria, individual needs to overcome a lot of obstacle and challenges. You need tremendous focus and determination in order to excel and expand your knowledge and skills.

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

The Software Craftsman, Chapter 5 & 6

For this week, I read Chapter 5: Heroes, Goodwill, and Professionalism and Chapter 6: Working Software, from the book title The Software Craftsman by Sandro Mancuso. Chapter 5 explains the need and urgency of when and how to say “No”? Chapter 6 explains the effects of technical debts on companies and stabilization of existing code, and improving it.

In chapter 5, author explains one of the hardest thing to say in general which is saying “No”. As a professional, one must have the courage to say “No” when he/she does not think that his/her client or boss is not being reasonable or does not understand the scope of what he/she is demanding. As a professional it is our duty to stand up for ourselves and make people around us aware of the entire situation as transparently as we can. Always, be clear and careful at your decision and commitments. Be sure what you have been asked and what you are committing is achievable. I believe saying “No” is one of the hardest thing about being a professional and I hope that I don’t have to be the first one to say “No” as I am stepping into the real world. I wish that I see my senior say it first then I will follow.

Chapter 6 was my favorite chapter because it talks about a topic most software developers and companies ignore to pay attention to once they complete a job or project. I believe for any successful software company or business needs to constantly work on its old code and try to make it better in order to increase its adaptability. Companies need to hire craftsmen to refactor its existing code. I like how the author puts in the book, “rather than construction, programming is more like gardening.” this quote explains that rather than keep producing new code every time, it is more efficient to make existing code better so it is more adaptable. It can save companies time, money, and maintenance in the long run.

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

The Software Craftsman, Chapter 3 & 4

For this week, I read Chapter 3 Software Craftsmanship and Chapter 4 The Software Craftsmanship Attitude, from the book title The Software Craftsman by Sandro Mancuso. Chapter 3 describes what Software Craftsmanship is? Chapter 4 put emphasis on the importance on how to keep learning and develop yourself over time?

In chapter 3, author defines a software craftsmanship. One of the definition that I liked was when the author stated that “Software Craftsmanship is about professionalism in software development.” This definition explains what software craftsmanship or field craftsmanship should be all about. Software Craftsman must care about his/her clients and help them achieve whatever they want to achieve, always try to make himself/herself better at his/her craft, learn from other in the field, share his knowledge and best-of-all mentor less-experience individuals in the field.

In chapter 4, author put focus on learning by yourself and make the right and wise decision for yourself. Just like in The Clean Coder book this author also suggests that you should never rely on your employer to give you all the training and resources in order to improve your knowledge and skills. You should take charge and responsibility for your own learning, and develop your skills by yourself over time. Author offers many useful strategies to improve and keep yourself up-to-date with the changing industry. I personally like all these suggestions from The Clean Coder book and have implemented some already.

Both chapters were very enlightening in order to be successful in the software industry. I have already plead to follow all these suggestions from the previous book.

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

Sprint 6: Reflection FantasticFive

Sprint 6 was the last sprint of the class so we came together as a team and try to work together this sprint. We picked APTS-306 issue and later, APTS-340 issue from the Backlog.

APTS-306 description was not clear so asked for more clarification. Here is the description of APTS-306 issue:

“Users are requesting if “Patient Newly Enrolled in Second Line” indicator can be added under list of indicators used in clinic dashboard and data analytics”

We contacted the assigned AMPATH developer to the issue on JIRA (Robai). She got back to us with a little explanation, but referred us to AMPATH developer (Brain) that was in-charge of that part of the project. Brain took about a week to respond and in his respond told us that APTS-306 has been handled by APTS-238 issue, APTS-238 issue was already solved.

We did not have much time to work on another issue, but still we searched Backlog for an easy fix issue. Sudarshan picked APTS-340 issue to be a good issue to be consider in the remaining time. Here is the description of the APTS-340 issue:

“When adding “HIV” treatment program when user selects “date enrolled” and “date completed” it throws the following error “date enrolled or date completed should not be in future””

APTS-340 issue was a bug that needed to fixed. Sudarshan asked for more details on the issue from AMPATH team. We got a respond and were told that this bug has been already handled by another issue.

Throughout Sprint 6, we attempted two issues: APTS-306 and APTS-340. Unfortunately, both issues were already solved by other issues.

Take away from Sprint 6 was that we worked as a team. We communicated and collaborated highly through Slack and in-person to work on these issues. Now, we feel much more comfortable working and trusting each other. I believe the reason is that through the process of working together in this class we found out a lot about each other’s personalities. Each other strengths and weaknesses. I feel like working in a team is much more challenging than working individually. I learned that responsibility on individual in working in a team is much higher than working on your own because when you are assigned a task in a team, your team counts on you to deliver that task in time. If you cannot deliver that task then entire team’s delivery process delays which does not only make you look bad, but the entire team is a victim of that judgment. This was a good lesson learn for getting into the real-world.

I just want to say that it was a pleasure working with all my team members and getting to know them. Best of luck guys!!!

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

Sprint 5: Reflection FantasticFive

Team members decided to pick our individual issues and if some members want to work together on an issue that is fine. Sudarshan worked on NGPOC-184 issue, Tan worked on APTS-225 issue, and me and Angelito picked APTS-305 issue from the Backlog to work on. Towards the end of Sprint 5, we picked APTS-214 issue while waiting for AMPATH developers’ response on APTS-305 issue.

In the beginning of Sprint 5, I had lots of work due in my other classes. During Sprint 5, I needed to turn in lots of assignments and had to take three exams. I had managed to focus on this class while taking care of my other classes. Me and Angelito picked APTS-305 issue from the Backlog to work on. In the process, Sudarshan also helped us. The issue description was:

“ users suggested having an additional column of order type in  lab orders under Data Analytics ” Patient Requiring Viral Load Test” The additional column to display  order type e.g Viral Load,  DNA PCR and CD4”

So, we thought it is just a simple touch to the code. All we had to do was make a column with a name “Patient Requiring Viral Load Test”. We made the column and were done in just 15 minutes, but the simplicity of the issues was too good to be true. So, we decided to confirm it from the AMPATH team. While Angelito communicated with the AMAPTH developer; Sudarshan and I went on and picked another issue (APTS-214) from the Backlog.

APTS-214 issue description was:

“Currently user does not get any message to be sure that the locator map has been saved successfully and also the user can clear any existing map without a warning message that the changes made is not revertible.”

We needed some help on this issue. So, Sudarshan asked for more explanation on APTS-214 issue from AMPATH team.

We had a respond back on the APTS-305 issue from the AMPATH developer and she said that there was another ticket (APTS-229) issued on this same issue, and it has been solved by APTS-229 ticket. We had to dropped this issue.

Also, we had a respond for APTS-214 issue too. AMPATH team suggested that this issue needed to be taken care in another sprint. For now, we need to hold-on on this issue. We had to discard APTS-214 issue too.

In Sprint 5, we attempted four issues: NGPOC-184, APTS-225, APTS-305, and APTS-214. Sudarshan successfully pushed NGPOC-184 issue to the AMPATH repository and was accepted after some obstacles. Tan is working hard on APTS-225 issue. Me, Angelito, and Sudarshan worked on issues: APTS-305 and APTS-214, but we had to dropped both of the issues because one was already solved and the other was too early to implement or work on.

Sprint 5 turned out to be a pretty good sprint for our team because first, we got to solved the NGPOC-184 issue. Second, we acted more like a team than individuals working at the same table. Third, our communication had gotten so much better than the beginning of the semester. I believe our team is really “gelling” together. I am proud of all my team members. Go FantasticFive!!!

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

The Software Craftsman, Chapter 1 & 2

For this week, I read Chapter 1 Software Development in the Twenty-First Century and Chapter 2 Agile, from the book title The Software Craftsman by Robert C. Martin. Chapter 1 explains how the software developers have evolved over the years and what it means to be a developer of the 21st century. It also focuses on the measurement of seniority in the field. Chapter 2 flashes light on delivery of software projects technique known as Agile. Author explains the meaning, purpose, adoption, ups and downs of what it means to be Agile. Author also mentions his contribution, suggestions and experience with Agile system.

One of the interesting fact that I noticed in chapter 1 was how the definition of seniority in the computer programming world has changed. In the beginning era of the author in the field, seniority was measured based on your understanding and writing of complicated code. If no one understood your code; you were automatically considered a senior. In the 21st century, seniority is not measured just by writing good code and be familiar with a language or framework. In the modern era, with seniority comes more responsibilities. Modern developers are expected to participate in all aspects of software development and business. Developers responsibilities includes speaking to customers to find and help them with their needs and wants, watching out for the best interest of the business, taking part in designing, producing, testing, and deploying software process, estimate time and costs, presenting to clients, and many other places that will result in greater customer satisfaction and successful company/business. In simple words, developer is no longer a person sitting in a cubicle and writing code with no involvement in other business activities.

In chapter 2, author goes through the software delivery technique known as Agile. Author makes it very transparent since the beginning of the chapter that Agile is not just one thing, but rather, it is a combination of methodologies and techniques. To understand the full motive of Agile, I personally liked how the book explained the two main groups of Agile. First, process-oriented discipline, which focuses on how the teams and organizations should work, collaborate, and organize. The purpose of process-oriented discipline is to keep focus on what is important and valuable to the business. Second, technical-oriented discipline, which focuses on the challenges of developing, growing, maintaining, and delivering the product/software. The purpose of technical-oriented discipline is to focus on the quality of the product/software. These two groups explained the agenda of why a business would adapt to Agile from their previous practices.

 

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