Reflection: Sprint 5

It took couple of days to trace down our new issue ‘APTS-296’. We all, as a team, had difficulty of tracing through the code. The main hindrance was the huge code base of the OpenMRS project.

We finally were able to fix the issue, and ran it successfully on the AMPATH test server 2. But the thing we are currently getting suck in order to push our changes is the module we modified is not a part of ng2-amrs src code. It seems to be using a 3rd party npm-plugin which is located under ‘node_modules’ outside of the src code folder.

We must ask AMPATH developers if we could override the npm modules, if yes, then how.

The Software Craftsman: Chapters 5 & 6

Chapter 5 “Heroes, Goodwill, and Professionalism” discusses about learning how to say ‘No’ at the right time and how to be a professional.

At the beginning portion of the chapter, author Mancuso talks about his job in a big multinational company. He was intimidated by the skills of the developers on the team. Since his co-coworkers seemed much better than him, he used to feel like he had to prove himself. At that time, he used to work as an architecture. His team worked very hard for the project. They wanted to show what were they capable of. They wanted to be heroes. Eventually, they realized that they were not acting professionally because they never said ‘No’.

Later on, in the chapter, author teaches us ‘how to say No’. He states we need to say ‘No’ to our clients when they ask us for something we know is not going to work or that is not going to be done by a certain deadline. He makes it clear that every ‘No’ should be followed by a list of alternatives.

After reading the chapter, the biggest takeaway for me is to act professionally. I will not commit to anything that I could not do it. I will be honest with myself, with my team-mates, and with my managers and customers.

The next chapter “Working Software” revolves around the reasons behind why working software is not enough and the impacts of bad software.

Author makes analogy of garden and compares it with code. If we don’t look after our code constantly, the code starts to deteriorate as changes and new features are added. Bad design choices, lack of tests, and poor use of languages and tools will make the code rot faster. He states, as the quality of the code decreases, the amount of time to implement a new feature, fix a bug, or make a change increases. The lower the quality, the higher the number of bugs, and the harder it is to test. The lower the quality, the less robust and reliable the application becomes.

Furthermore, Mancuso talks about the concept of invisible threat which basically means bad code is invisible to everyone besides the developers. Other members of the team only realize that something is wrong when it is too late. That means it’s the developers responsibility to look after the quality of the code.

Moreover, author talks about legacy code towards the end of the chapter. He suggests when looking at legacy code, instead of moaning and getting frustrated, we should try to understand it and make it better, constantly applying the Boy Scout rule of making it better than how we found it.

I absolutely agree that code needs to be well managed over the course of time. We developers need to apply different tools, techniques, and methodologies to keep our code base up-to-date with the latest platform. Also, we developers are the first one to know then something wrong seems to happen with our code. I should fully take responsibility to fix the code in time, and keep the project move forward while keeping it clean.


Reflection: Sprint 4

To be honest, we didn’t had significant progress during this sprint. One of the reason was that we had a spring break during this cycle, and the other one is, we waited long enough to the get clarification on our issue. Regarding our NGPOC-183 issue, we tried to reach out developers on JIRA as well as on Slack we but didn’t got any reply.

Therefore, we ended up assigning new issue named APTS-296. The issue is “Add 24 and 36 Weeks Under Week Control in Return Visit Forms”. As of now, we as a team, got a strong understanding of this issue and know what need to be fixed. Hopefully this one shouldn’t take long.

We are in progress towards making our first change.

The Software Craftsman: Chapters 3 & 4

In chapter 3rd “Software Craftsmanship”, Mancuso talks about the origin, history, and definition of Software Craftsmanship.

In short, Software Craftsmanship is about professionalism in software development. It’s a mindset where software developers choose to be responsible for their own careers, constantly learning new tools and techniques and constantly bettering themselves. Software Craftsmanship is all about putting responsibility, professionalism, pragmatism, and pride back into software development.

Software craftsmanship concept was originated around 1999. The Manifesto officially formed in 2009 values four main points: well-  crafted software; steadily adding value; community of professionals; productive partnerships.

This chapter in overall was helpful to understand the history behind the Software Craftsmanship. Now I know, what are the issues of Agile Manifesto and why we need to adapt Software Craftsmanship Manifesto to overcome the issues.

The 4th chapter, “The Software Craftsmanship Attitude” covers how we can own our careers, keep ourselves up to date, practice, and discover the things we didn’t know.

Mancuso argues that we have to figure out how to stay up with the latest and how to rehearse. Our industry moves, possibly, faster than any other industry. Languages, frameworks, practices, and processes are all constantly evolving. Keeping up to date and constantly getting better at what you do is key for a successful career as a software craftsman. We must figure out how to utilize our time well. The day we quit learning and rehearsing is the day we begin losing control of our professions. The more learning and abilities we have, the less demanding it is to claim our professions, that implies we can pick where, when, and for whom to work, and the amount to charge for our services.

I do check various tech related blogs and websites to keep me up to date. I think what do less is practice writing the code. I need to practice how to write quality code. When practicing, I should focus more on the various techniques that I am using, and try to be more efficient.


The Software Craftsman: Chapters 1 & 2

The very first chapter titled “Software development in twenty-first century” discusses about what seniority really means and the new reality faced by developers in the twenty-first century. Seniority is transient and relative, there is no such thing as a senior or junior developer.

Mancuso argues seniority is not just about composing code or being exceptionally acquainted with a dialect or system. Developers need to know how to address clients, automate tests and deployment, and settle on mechanical decisions that may influence the whole business. Companies are looking for developers who, besides being great at writing code, can also help in many other areas of the business. Time has changed now, developers need excellent communication skills.

Furthermore, the author discuses about the scale of projects. Today, we rarely see an application that does not integrate with other applications. Modern applications are built using many technologies, with multiple integration points, and developed in an iterative way.

Personally, I used to think people in computer engineering and science field doesn’t need to verbally communicate with other, but I was wrong. We, coders, need to have skills to talk. I took public speaking class on last year. It went well. I am good at speaking, but since I moved to US just a year ago, I do have accent problem. So, I will be trying to work on my accent in coming days.

The other thing, I learnt from this chapter, is to integrated bunch of meaningful services and features right into a single software/app. I will be planning boarder while designing the UI/UX of the app, so that users, don’t need to quit the app which increases the audience engagement.

The second chapter “Agile” revolves around the definition of Agile, as well as the Agile Manifesto and the problems that many organizations face when adopting Agile.

Agile is a combination of methodologies and techniques. It is all about all about quick and short feedback loops. The Agile disciplines and methodologies is divided into two main groups:  process-oriented and technical-oriented. Process-oriented directly affect how teams and organizations work, collaborate, and organize. Whereas, technical-oriented disciplines are more specific to the challenges of developing, growing, maintaining, and delivering the software itself. Similarly, Agile Manifesto is about individuals and interactions over process and tools.

Furthermore, the author discusses the agile transformation era, the agile hangover, and the partial transformation. He states during Agile adoptions, many companies tend to pay a lot of attention to Agile processes but totally neglect technical practices. Improving the process without improving technical excellence is pointless. For a full Agile transformation, companies need to embrace Software Craftsmanship.

I think different project management and software development methods such are Agile and Scrum are of course needed, but we need to make sure that everyone’s in the project can fully utilize the methodologies and different facilities that they offer in order to achieve excellence.

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.