Attention to Detail and Lessons from Bug Resolutions

Over the past few weeks, I dedicated my time to identifying and resolving bugs and errors in the recently developed feature. Mr. Peter provided me with a list of critical bugs that surfaced during production, requiring immediate attention to ensure the application runs smoothly and error-free for users.

Some of these bugs were unforeseeable, but others resulted from my oversight. This experience taught me the importance of meticulous attention to detail and comprehensive testing across various scenarios. Most of the issues originated from the Module, such as a problem where the comboBox of an entity in a view page failed to display any address information. I resolved this issue by including the address in the Context and mapping it to the UI.

Furthermore, enhancements were implemented to improve the user experience. One concern involved the lack of a clear indicator for obsolete data on the entity view page’s user interface. It was crucial for users to distinguish between outdated and current information. To resolve this issue, I introduced a new column in the view list. Additionally, I modified the entity’s comboBox by setting the Obsolete status to false, guaranteeing that only the most recent entities were displayed. Later, Mr. Peter noticed that I had employed GetAwaiter().GetResult in a section of my code, causing asynchronous operations to be blocked and their results fetched synchronously. This synchronous blocking of asynchronous code can significantly impair performance, especially in applications requiring swift responsiveness. Consequently, Mr. Peter suggested transitioning to using await asynchronous and incorporating Loading Bar dialog. This change ensured that users were kept informed about the loading process, eradicating the frustration of waiting for an unspecified action.

Throughout the process of resolving these bugs, I encountered a significant challenge related to parent-child relationships. Even after deleting data, the parent name persisted when navigating to the next set of data. Initially, I attempted to solve this issue by creating a new list, intending to refresh the data. However, this approach did not address the root cause of the bug. It was only after Mr. Peter explained the underlying issue that I realized my mistake. I had failed to fully grasp the nature of the bug and hastily attempted a solution without a complete understanding.

From this experience, I learned the importance of approaching problems with a deeper understanding before attempting solutions. Rushed attempts to fix issues without fully comprehending the underlying complexities can lead to ineffective solutions and wasted effort. It emphasized the significance of thorough analysis, seeking guidance when needed, and acknowledging the continuous learning process in software development.

Feature Testing and SQL Script Generation from Latest Migrations

Last week, as a continuation from the previous week, Mr. Peter demonstrated the process of generating certificates with expiration dates a few months from now. These certificates were meant to replace the old ones and could only be used in a designated location. Unfortunately, a portion of the code contained an error, possibly due to a minor oversight. In the initial hours, I made efforts to identify and resolve the bugs. Regrettably, I’m uncertain about the source of the problem and how to rectify it, leading me to revert back to the previous certificate system and moving on to the next task.

Transitioning to the next task, I was tasked with identifying any issues in a new feature introduced by Mr. Peter. After multiple tests, so far, there are no errors in this feature. Consequently, I proceeded to the subsequent task, which involves cleaning up the data. While I was in the process of establishing the basic CQRS pattern on the application side and adding a button in the module side, I received another assignment to uncover bugs in another part of the application system. Prioritizing this task is crucial since it also aligns with the cleanup initiative.

Reflecting on last week’s progress, I also learnt something new: generating an SQL script from the latest migration. Initially, I believed I had to perform this task using SQL, but Mr. Peter guided me in the correct approach. To generate an SQL script from the latest migration, I first ensured that the EF Core CLI was installed in the migration folder. Next, I listed the migrations that had been created and inserted a command to generate the SQL script for the most recent migration.

Identifying and Resolving Bugs in New Feature

Last week, I was assigned the task of identifying bugs in a new feature introduced by Mr. Peter. Initially, I began by familiarizing myself with the feature, exploring various functionalities, and observing how data submissions were handled. Later in the day, Mr. Peter provided me with a guided tour of the feature, which significantly improved my understanding of its intricacies. With a clearer picture in mind, I delved into the testing phase, aiming to uncover as many bugs as possible to ensure a smooth and error-free production process.

I documented the bugs I discovered on a Trello board in the form of a checklist. Most of the issues were related to the user interface (UI). Mr. Peter then suggested to mark the list of errors with the ones I intended to address. I selected a few and left aside the remaining errors that I wasn’t confident in resolving.

Around mid-week, Mr. Peter tasked me to replace a dependency I had been using with its source code. This step was crucial for debugging and resolving the identified bugs. It took me a while to replace it because I encountered a few problems after doing it and needed some time to figure them out. 

Subsequently, I began tackling the smaller bugs on the list. However, during one of my attempts to fix an issue, Mr. Peter supplied valuable guidance on a different approach, pointing out the root cause of the problem and to reconsider my approach, which turns out resulted in a simpler and more sensible solution.

Towards the end of the week, Mr. Peter demonstrated how to generate certificates that would expire in a few months, replacing the old ones and ensuring they were used in only one designated location. Unfortunately, a part of the code had an error, possibly stemming from a minor oversight. However, as the week came to a close, I had to postpone addressing this issue until the following week.