Author Archives: proctech21

Sprint Retrospective Blog #3

This phase in our project is to put together all the pieces we have been implementing for weeks. It is the best part of our project because we have been working on something for months and finally we can see what it looks like after all. However, this realization would not come without many different adjustments to the program. Several pieces have played a role in the process, and all the teams have contributed to the final point. For my part, I have worked on more environment setups. For example, Learn how to use commitlint/conventional commits for the Application source codeEditcommitlintng: Issue worcester/cs/naturalization-interview-confidence-environment/General#13. is one of the resources that I have used to set up the files in a way in case it gets to push the files to the main branch and has a bad commit message it will fail the pipeline but if it gets to push to any branch other than main it won’t fail the pipeline but it will give you a warning. Since we were working on a collaboration that was essential to maintain a good environment for all. The syntax for the file code is echo “module.exports = {extends: [‘@commitlint/config-conventional’]}” > commitlint.config.js this will set the configuration. On top of commit messages, the Conventional Commits specification is a lightweight convention. It provides a simple set of rules for generating an explicit commit history, making it easier to build automated tools on top of it. Second, Learn how to add and remove VS Code Dependencies to a Docker imageEdit, Issue: worcester/cs/naturalization-interview-confidence-environment/demo-react#22. We wanted to know how to add or remove NPM dependencies in a Docker container used by React Native projects in this issue. Using VS Code to add dependencies:
Look in package.json for the extension ID and paste it alongside the required version. I have pulled the join working file from gitlab to run to test on the docker environment. After many tries, eventually, all dependencies were installed and the program worked properly.
In issue worcester/cs/naturalization-interview-confidence-environment/demo-react#45: Prompter Question pageEdit, in this issue I followed my opposition team member, which was assigned for that task. The goal for this issue was to create a page that will contain a list of questions that the prompter can choose from and read to the test taker. It should show all of the options in a card format. The full text of a card should be displayed on a new page once it has been selected. Find out what base image criteria isEdit issue: worcester/cs/naturalization-interview-confidence-environment/demo-react#52. As you can imagine, many people find it difficult to choose the right container base image. A base image is available for every major Linux distribution. For programming languages such as Python, Ruby, and Node.js, open-source projects provide their own base images. For services like MariaDB, Redis, Elastic, and MySQL, many open-source projects and vendors provide their own images. While programming languages and services aren’t technically base images, most people consider them to be so and factor them into their decision-making process when selecting standardized base images. This is why the container base image matters when we want to set the environment.

Overall, we had a better sprint due to modification from the previous ones. We have learned how to write issues properly. We had a more detailed plan for every issue. Communication, in general, became absolutely a cornerstone for our success. We have improved on planning. We have selected the topics based on the needs of the previous discussion. As we struggled in the past to break issues into small pieces, we were able to correct that and made a better reading board for everyone. I personally went over the issues on the board where if something is not cleared or detailed then I would ask questions related to that issue.
For the future we wish that we had time to make all the functionalities of the program work. Such as to be able to navigate in the app page by page. To be able to filter question by question from the main page without any difficulty. Finally, set all the functionalities on the app for user friendly. This project has been nothing but learning curve for all of us. Giving the fact that we did not have a blue print from previous example, we now leave a working project for the upcoming team that will be working to improve this application.

From the blog CS@Worcester – Site Title by proctech21 and used with permission of the author. All other rights reserved by the author.

Share What You Learn

It’s impossible not to overestimate the importance of having a generous spirit in your life. Take a look around you at the luckiest people, the ones you admire, the ones who seem to have luck fall into their laps on a regular basis. What is it that they do that makes them stand out? If it happens repeatedly, it isn’t just bad luck. They’re prepared, always working at their craft, alert, involve their friends in their work, and make others feel lucky to be around them if they’re anything like the fortunate people I know, said Twyla Tharp.

One of the most powerful aspects of apprenticeship is being a part of a community of individuals who value both independent learning and humbly sharing newly acquired knowledge. It opens up previously esoteric fields of knowledge and connects apprentices with mentors who speak their language. We have learned so many different patterns, which teach us a lot about how to become a better programmer, a better team member, a better listener, a better apprentice, a better notes keeper, a better communicator, etc… But what all that serves us if we don’t share any information with others that are coming after us. What does it represent to future generations if we don’t pass that information to them?

This is the reason I decided to write about this pattern at the end of my blogs because it will serve and stay as a landmark for me to remind myself about the importance of sharing with others. Share What You Learn will also allow me to gain a better understanding of how to share with others. In order to share with others, you have to be disciplined and be an example of doing the right things. 

As Twyla Tharp said; it is important to share your thoughts with an audience, no matter how small, you become a part of a larger world. When you put a few thoughts on a topic in a newsletter, you start to wonder nervously if anyone will notice. What are they going to say? Is it possible that he said something stupid? An audience is a group of people. The written word is a declaration of membership in that community, as well as a willingness to make a meaningful contribution to it.

From the blog CS@Worcester – Site Title by proctech21 and used with permission of the author. All other rights reserved by the author.

Record What You Learn

Noone should ever undervalue the power of writing in general. As the quote says you may lose sight of your larger goal. Writing, on the other hand, allows you to take a step back and consider a problem. Even the most enraged rant necessitates some level of thoughtfulness on the part of the writer. This is something that everyone should be thinking about. Why do we need to take notes? How does taking notes to help us to achieve a goal? Let’s take a look at some ways that taking notes helps to appear in some situations and make things lighter to the extent that they empower us to achieve greatness.

Atul Gawande said in his quote that I will paraphrase like this: Something should be written. This is not meant to be a threatening suggestion. Whether you’re writing five paragraphs for a blog, a paper for a professional journal, or a poem for a reading group, it doesn’t matter. Simply put, write. It is not necessary for what you write to be perfect. It only needs to include a few minor observations about your surroundings.
It’s also important not to overlook the power of the act of writing. As Atul stated, he didn’t start writing until he was a doctor. However, once he became a doctor, he discovered that he needed to write. Medicine is more physically demanding than intellectually demanding, despite its complexity. It can be a grind in medicine because it is a retail business, and doctors provide their services to one person after another. You may lose sight of your larger goal. Writing, on the other hand, allows you to take a step back and consider a problem. Even the most enraged rant necessitates some level of thoughtfulness on the part of the writer.

Record What You Learn is one of my favorite patterns because it gives me a better sense of my situation. I have to admit that one of my major weaknesses is taking notes or record keeping. I always think I will be able to remember everything at the time that information is being processed. Never thought in a million years that I would forget about it. What I think is the most upsetting about the way I have been when it comes to recording is when I have a wonderful thought, and I don’t take the time to put it in writing. Before I know it, It’s gone from my mind. Take out a paper notebook and begin jotting down your thoughts and ideas about what you want to do is the way to go. Make sure to date your notes. Why do you need to reference it to other sources? When you’ve done with your notes, keep using the same notebook for the other things you’ve learned in the same way.

From the blog CS@Worcester – Site Title by proctech21 and used with permission of the author. All other rights reserved by the author.

Sprint Retrospecitve Blog 2

We have made good progress in the second sprint, which was our objective to build on top of what we already did in the previous sprint. We have seen some results, but it could have been a lot better if we had changed some of the methods. 

  1. Plan in advance what to discuss for the future sprint discuss
  2. The detailed plans for every issue,
  3. Better communication in general 
  4. Think about the big picture 
  5. Break issues into small pieces
  6. Daily stand up to need to be more prepare
  7. Documentation needs to be clear and sample.
  8. How do we use time in class more efficiently 
  9. Go to detail and ask questions related to the issues and find the solutions. 

Since we’ve agreed that we need to improve what we do and how we do it, I’ve decided to narrow it down and be more specific about what we need to do to achieve the results we want. 

This sprint focused on the effectiveness of our abilities to work as a team. Since we already had a good idea about how we wanted our platform, we wanted to focus on the mechanisms of the way to work as a team. We had so much overlapped work between one another. For example, duplicates, comments, and misdirections to interpret others’ ideas caused a massive delay, which impacted us from making meaningful progress. Identifying the cause of the problem will help us prepare for the future. There is a list of the things that we think should be implemented to make the team more efficient. 

First, clarify the vision: You must first understand what you are trying to achieve before deciding how to solve a problem. Clarification is essential for teamwork to be successful. For this reason, we should write down our vision for each sprint. Detailing the issues will help us weigh the issues properly and break them down if necessary. We will be able to tell if the steps you’re taking will help us achieve our vision and if our problem-solving efforts were successful if we write down our vision. This step will be a great advantage in resolving the issues.

Second, Define the issue. Writing a vision statement gives everyone a basic understanding of what needs to be done. but it’s more concerned with what happens after the problem is solved than with the problem itself. That’s why it’s critical to write an issue statement that clearly defines the problem. We have seen issues that had nested issues, this should be a brief statement that describes the problem and explains why it is important to solve the problem. After all, how can we solve a problem if you don’t know what it is? 

Third, defying the context of the issues. Consider whether a business problem affects multiple individuals or functions within our project as a team, or if it only affects specific issue lines that we are working on. To be able to identify how to increase the performance of our work will help us to determine the best course of action. We felt that we need to better in this type of context. Learn how to write proper issues and better execution as a team.

From the blog CS@Worcester – Site Title by proctech21 and used with permission of the author. All other rights reserved by the author.

Sweep the Floor

I had the opportunity to participate in a formal summer program to learn how to make simple websites. When I was twenty-two years old, I was hired and brought me back every summer and winter vacation during college. I didn’t know anything about how to make a website when I started my first project. For fun, I wrote some code to make small programs and scripts. There were few places where I could add value to the company’s operations when I first started my website for that program. I couldn’t build a website, and I couldn’t possibly teach people how to do so.

Many of the successful Programming leaders were hired by the company to teach a PHP course at the time. Since I was not good enough, I decided to start working on other tasks. I’d also set up the computers, install the appropriate software for the exercises, and clean up the space. These duties helped me gain confidence in my ability to contribute to the team and the firm. Even though I was having difficulty learning to code, I was still able to contribute with specialized talents and duties that required less competence.

As I was continuing working on the program, I was gradually given more technically difficult jobs. They were, however, frequently the ones you’d allocate to the lowest man on the totem pole. Moving servers, setting out backup methods, and updating material on the website are all tasks that need to be completed. These assignments allowed me to achieve little triumphs at a time when it was difficult to achieve them by creating code.
Playing the part of a typical program taught me humility and respect for experienced trainees. I decided to choose to sweep the flooring partner because it resonates with everything in my previous job experience.

It’s true when Paul Pagel described young apprentice like One of the pillars of a successful apprenticeship is humility. Humility, when combined with ambition, will keep you focused and moving in the right route. You risk prematurely declaring your apprenticeship complete and missing out on critical lessons if you don’t have them. Perhaps you’re pleased with a large project or subsystem you’ve completed and believe it demonstrates that you’ve progressed to the level of journeyman. Perhaps. Have you, on the other hand, delivered something important across several platforms? How much more would you learn if you attempted to learn a new language? The natural tendency of any ambitious apprentice is to attempt to beat the clock and become a journeyman as soon as feasible.

From the blog CS@Worcester – Site Title by proctech21 and used with permission of the author. All other rights reserved by the author.

Learn How You Fail

According to Atul Gawande, Software is not a product, it’s a medium for storing knowledge. Therefore, software development is not a product-producing activity, it is a knowledge acquiring activity. Knowledge is just the other side of the coin of ignorance, therefore software development is an ignorance-reduction activity.

The value of failure-based learning is undeniable. Organizations that excel at it, however, are extremely rare. This disparity is not due to a lack of desire to study. Managers in the vast majority of the companies such as pharmaceutical, financial services, product design, telecommunications, and construction firms; hospitals; and NASA’s space shuttle program, to name a few—were genuinely interested in helping their companies learn from failures and improve future performance. They and their teams had spent many hours on after-action evaluations, postmortems, and other similar activities in certain circumstances. But, time after time, we noticed that arduous efforts yielded no tangible results. The reason for this is that those managers were approaching failure incorrectly. 

As a former manager myself, I always thought about what my boss would say if I did not meet all the requirements left out for me to accomplish in a tiny window. I overstress myself to succeed, and by trying too hard, I kept getting crashed over and over until I realized that was not the best approach. I never got the results that I was looking for with that mindset. Failure is hard to accept because we usually associate it with a negative aspect instead using it to learn and produce success for tomorrow. As I was told if you never fail, you don’t know what success is. 

As Phillip Armour, in his paper “The Five Orders of Ignorance,” As I paraphrase it; Continuous learning can either be a blessing or a curse. Learning a new skill may be excruciating, especially when done under duress and with no supervision. However, the software developer, like the athlete who must deal with bodily fatigue after intense workouts, must deal with the mental dissonance that comes with learning something new. That discord might be viewed as a positive indicator of growth. On the surface, self-reflection, detecting failure through feedback loops, and discovering your deficiencies all appear unpleasant, yet these patterns are helping you lessen your ignorance. The alternative is to concentrate solely on what you already know, but this is not the path to mastering software craftsmanship; rather, it is the path to specializing in a single field. 

From the blog CS@Worcester – Site Title by proctech21 and used with permission of the author. All other rights reserved by the author.

Create Feedback Loops

A feedback loop is a continuous process in which you listen to and speak with each other or to another party then make changes based on repeated assessments. It entails beginning with humility, understanding that there is always space for development. It does not matter what level in the process can relate feedback to others can help solve many different problems or at least take the process in the right direction.

If you have an effective feedback loop, you’ve established a culture in which learning, growing, adapting, and curiosity is key to your growth plan, and no one makes decisions based on assumptions or hunches.


As I am paraphrasing what he said here. He didn’t have a strong understanding of the Oracle framework and how things were intended to work when he eventually got to writing on the main project. Because my immediate seniors rarely gave me comments, he ended up adopting code written by a senior on another team as the basis for the patterns in which his code was written. Despite his continual questions, he had no notion of what he was doing was correct. After a while, he realized that the way he was going about things wasn’t the best way to go about making apps, so he asked the guy he’d cloned why. He was fortunate that we were still in the “research” stage of our development process, which allowed him to repair the code he had written.

This reading is a perfect example of that happening every day in our interactions. I like this pattern because it touches a lot of great points that establish between the two parties. Feedback is great, either reinforcing or balancing feedback should be delivered in a way that creates a parallel to help improve in development.

As it says in the create feedback loop; Feedback that is reinforced pushes you to do more of something. The feedback that is balanced pushes you to do less of something. A system can be kept generally stable by combining the two types of feedback and making several modest modifications. Apprentices who succeed learn to establish conditions in which they may obtain data about whether they need to do more or less of an activity promptly and frequently. This frequently entails learning to express yourself and listen without interrupting.

From the blog CS@Worcester – Site Title by proctech21 and used with permission of the author. All other rights reserved by the author.

Expose Your Ignorance


People that hire you to work as a software developer rely on you to know what you’re doing. Recently graduates have no prior knowledge in the subject matter. What is the best way to start a career? Well, Expose your Ignorance by Apprenticeship Patterns by Dave Hoover and Adewale Oshineye have shared light on how these scenarios frequently happen in the real world. This chapter Gives guidance and ways to overcome those situations when it becomes absolute.

It’s important to know who you are. Not only knowing you are on a personal level but most importantly in your ability to learn and adapt to a new environment. This book is enjoyable, and all the patterns are great to read and give a deep dive into what we think we are comparing who we are. Reading a quote from Dave Hoover about A “NOT KNOWING” STANCE.” Explaining the difficulties as a professional and trained to be an expert, sometimes can find rabbit holes that require a different state of mind and honesty. There is a phrase from Dave quote that resonates with me is when he said “Your instincts tell you to hide your ignorance, to feign expert knowledge, but this only stunts your growth and inhibits the work you are trying to accomplish.” How often do we find ourselves in this situation? I can personally talk for myself. I have been exposed in the past for not knowing who I was but, rather, what I wanted to become. Doesn’t liking something such as to perform on a task does not make you qualify for something else or vice versa because you want to work on some projects does not make you expert knowledge. 

The pattern “Expose you Ignorance” is one of the most important patterns because it gives us a way of rethinking about ourselves. Sometimes we often try to impress the product owners, shareholders, clients, or the team members that we work within by saying things to please them instead of being honest. Knowing who you are can lead to honesty, will eventually set a framework for you in the future. People will respect you, they will want to be in your team, they will probably learn from just helping you and creating a better environment.

From the blog CS@Worcester – Site Title by proctech21 and used with permission of the author. All other rights reserved by the author.

Sprint Retrospective Blog Posts

Our team was assigned to create an app for  Naturalization Interview Confidence Environment. In this project, we have six team members. We had divided into a group of two to facilitate and make the project a lot faster and smoother. We have decided to create tasks and prioritize them based on the requirement of the job. We started with six epics and produced 40 issues for the first sprint. To better understand the basic functionalities of the app, we decided to create some basic demos as a test that will serve as a blueprint and what will be the best approach for implementation.

As each group got ready to take their responsibilities to work on certain specific tasks, it was essential for us to map several demos such as react native, ionic framework, and flutter.

Individual requirement.

I had a chance to work on the Ionic framework, which I shared with another student to develop a strategy to create a user-friendly app. As Apprenticeship Patterns describes in several chapters, learning new technologies requires a lot of wisdom. I had to pretend that I was not a Computer Science Major because I never had an opportunity to be exposed to that type of technology in the past. I had to spend hours on youtube to watch videos and then tried to connect the dots on my own demo ionic framework project. I was not sure what I was doing, but, unfortunately, it never ended up working and put a full stop to it.

What is Ionic, and where does it fit in our project?

Ionic is a mobile app development framework for HTML5 that focuses on hybrid apps. Small websites operating in a browser shell in an app with access to the native platform layer are known as hybrid apps. Hybrid apps have several advantages over pure native apps, including platform support, development speed, and access to third-party code.

Consider Ionic to be the front-end UI framework that takes care of your app’s overall look and feel as well as UI interactions. Like “Bootstrap for Native,” but with support for a wide range of native mobile components, smooth animations, and attractive design.

Ionic, unlike a responsive framework, comes with native-style mobile UI elements and layouts that you’d find in a native SDK on iOS or Android but didn’t exist on the web before. Ionic also provides some unique yet powerful techniques to create mobile apps that outperform standard HTML5 development frameworks.

Because Ionic is an HTML5 framework, it requires a native wrapper such as Cordova or PhoneGap to execute natively. We strongly advise you to use Cordova for your apps, and the Ionic tools will also use Cordova.

However, I could not get it working on the OS model, which was a big problem for our design since all types of users will need to access the application through either android or os. Even though I had to stop working on that demo, I have learned a lot of new tools that helped create that demo app. Overall, we decided to go with react native demo because it gives us the ability to connect to both android and os models. This sprint helps us lay out the basic principle of the project and how to move forward to the next one.

From the blog CS@Worcester – Site Title by proctech21 and used with permission of the author. All other rights reserved by the author.

Chapter 3: Walking the Long Road

This chapter has talked about how to start your career with low expectations if none at all. For example, Gustav Mahler, musician and composer has talked about the life of Dave in his career. As I paraphrased like this: Dave had his own cubicle and, despite having even less experience than he does today, he kept a stack of certifications by his desk. The stack began with a Perl “master” certification from Brainbench and grew to include certificates demonstrating he had completed multi day trainings in C, J2EE, Vignette, and ATG Dynamo. This modest stack of pseudo parchment comforted him (and his organization) that he was in control of his situation. He’d been “schooled.”

Meanwhile, through and the comp.lang.perl.* newsgroups, Dave had begun to expand out and communicate with the broader developer community. It was in these groups that he met some of the best Perl hackers he’d ever met. The hackers’ knowledge was intimidating, especially because Dave could tell that they were still learning and learning quickly. It seemed to him that he had just begun to scratch the surface of what it took to be a great software engineer. His stack of training certificates gradually vanished beneath a greater mound of scratch paper and printouts of book drafts and lessons during the next few months.

Dave was captivated by the learning process after observing and interacting with a couple of these excellent hackers. Periodically, he’d catch a glimpse of the hackers’ expertise and be either disappointed or inspired—discouraged by how little he understood yet inspired by the force of these hackers’ abilities. He got into side projects and started reading everything he could get his hands on.

The more Dave knew, the clearer it seemed that he still had a long way to go. Over the next few years, he had the wonderful opportunity to work with some excellent software developers face to face. Even though these extraordinary people were miles ahead of him, Dave saw that they were all on the same path.

The Long Road

There are many different patterns that resonate to me, but The Long Road is the best one to me because it explained what type of expectations you should have when you want to be a master software craftsman, but your ambitions are at odds with what others expect of you. Rather than gradually improving your skills, conventional wisdom advises you to take the highest-paying job and the earliest promotion you can get, to stop programming and move on to more important work. Accept the possibility that you will be perceived as odd for what you desire to become. Second, maintain a long-term perspective. Prioritize learning and long-term growth prospects over money and traditional ideals of leadership throughout your apprenticeship.

From the blog CS@Worcester – Site Title by proctech21 and used with permission of the author. All other rights reserved by the author.