Sprint 1 Retrospective

My software development class is structured to feel more like a real work environment. In this way, we practice completing tasks on schedule in a “sprint” format. This means each student is assigned a development group and communication is emphasized heavily. We began the semester by signing up and downloading the required tools.

We made sure everybody joined the same slack channel, so we could share information and update each other as we continue the project. On this slack channel, we are required to periodically enter what we have done, what we are doing, and any roadblocks we encounter in order to keep the rest of the team informed on our progress. Various slack channels are also set up so that we can ask questions to other groups who may have similar obstacles. Interestingly, we found that collaborating through the other channels was the most effective way to solve our recent issues.

We also used a website named trello.com to organize our project and condense it into workable tasks. This includes a product backlog for general goals, a sprint backlog for tasks and stories we aim to finish before the end of the sprint, a “doing” column for tasks that are currently underway, and finally a “done” column for completed tasks. We spent some time making sure the organization was set up correctly and that everybody was joined in on it. In class today, we prepared new objectives for the next sprint and archived old completed tasks.

In the first few days of this sprint, we also made a repository following the project we will be contributing to this semester, AMPATH/ng2-amrs. Everybody in our group cloned the project from the repository, so we each have the ability to view a local copy. Looking further into the README file, we gained an understanding of how to build, test, and access the server associated with the project.

Next we had to make sure we had a proper development environment to run the project. This included getting everybody the latest version of NPM, Gradle, Insomnia, open MRS, and an IDE of choice that runs typescript, for that I chose Jetbrains Webstorm with a student license. This task took us the most time and still is not finished, only one group member so far is able to run the project successfully. Some of the software we installed, namely Gradle and Insomnia, we may not end up using, so ultimately I think we can get better at limiting redundancies by further defining what is required to complete a task.

By the time our next sprint is over, we aim to have every member able to run the project, then we can start contributing to it. It seems that each group member has their own issues with starting the project, which will slow us down since we may have to work through new problems for each member. We also have sprint backlogs set up to become familiar with the programs Karma and Protractor to help us test the new angular code.


Why Doctors Hate Their Computers Summary


In the article link listed above, surgeon Atul Gawande describes his frustrations with a recently developed new software which he and many others must adapt to. Initially one might assume this person just isn’t good at using software, like your grandmother trying to send an email. However, professionals in the medical field are typically especially adept at technology, their patients lives depend on their ability to update themselves on the latest development in the industry. That being said, the problem must lie in an inefficient new system.

The earlier stages of the switch to the new software are especially problematic. Firstly, medical professionals in all areas are required to spend a lot of time at training sessions when they could be spending it for their patients, which costs efficiency right off the bat.

Next, as everybody learns how to use the system, multiple problems can occur. It can take hours for somebody new to complete a complicated task, or minutes for one who is experienced in it, so the most obvious option is to get help from the IT department. The system is also new as a software product, new software products contain unknown bugs and glitches. I assume there is a rigorous testing process for any new tech when patients lives are effected by them, still, the software can be found at fault in the early stages. Both of these scenarios contribute to hundreds of tickets flood the IT departments inbox. In response, the hospital hires more IT people to help but ultimately a backlog keeps issues in waiting. Some of these issues can be especially serious in the medical field.

These early problems are expected, with the assumption that after a few months the system will be seen as an improvement. In this case however, even after getting use to the system, Gawande and his colleagues notice setbacks compared to the old software. For example, it added the ability for everyone across the organization to edit the “problem list.” The list use to be a quick way for clinicians to assess their patients at a glance, now it is filled with redundant notes from each person who accesses it. The same diagnosis is listed three times by three different people, long descriptions make it difficult to read the few things that actually matter, all contributing to more inefficient overhead. Furthermore, filling out diagnosis sheets has become more time consuming with the addition of new required fields. Whereas it use to take one click to order a mammogram, now it takes three.

What can be done about these inefficiencies? The article elaborates by explaining the concept of the “tar pit.” This describes a state of software development where a program becomes so large, it must be rigorously defined and spelled out for every specific situation so that it can encompass each scenario the same way. Users find themselves slowed down by these specifics, but cannot escape them, much like a tar pit. The result is that professionals spend so much time working through the system, they spend less time actually doing their jobs.

Software progress trends like these have serious consequences, professionals in this situation are more likely to experience burnout. Burnout is a state of emotional exhaustion, depersonalization, and personal ineffectiveness, this is caused by the pointless bureaucratic work that professionals must endure with their daily career. This eats up much more time than they are willing to give up. In 2014, only a third of physicians stated their work schedule “leaves me enough time for my personal/family life.”

Individual Apprenticeship Patterns


Of the list provided above, I will go into detail summarizing specific patterns I find to be interesting or relevant.

I will begin with the pattern titled “Be the Worst.” The title is somewhat misleading, since the objective is actually to improve yourself at every opportunity. If you find yourself as the biggest fish in the software development pond, this pattern encourages you to find work in a bigger pond with bigger fish. Now, you can learn more from them and work your way up to being the biggest fish again, then repeat the process. From the standpoint of prioritizing knowledge above all else, this pattern makes sense, however, I don’t think I have the courage to follow it.

I can relate this to my current job at Best Buy. When I was first hired, I knew nothing about TVs, security cameras, and appliances also I didn’t know as much as I needed to about routers, car improvements, and drones. I struggled for the first few months as I awkwardly tried to give customers the answers I thought of on the top of my head. That period of employment sucked and I knew as I learned and practiced talking, I would get much better at it. As a result, my sales would improve, my job gets easier, and the customer buys something they actually need.

This pattern would encourage me to quit my job and go work at staples or another retailer where I knew nothing about the products, so that I may learn them all over again. This comes with great awkwardness, and the customers can always tell when I don’t know what I am talking about. This move seems absurd, certainly not worth it unless it came with a higher pay, to which I’d talk to my manager at Best Buy for a raise first. If this experience is like dealing with a new group of software developers, it would be a very difficult decision for me to leave my current group.

Another relatable pattern the article mentions is “Expose Your Ignorance.” This is about humbly accepting that you need help and actively seeking it despite looking stupid. It is very easy to feel ashamed for not having knowledge, based on the fear that it is very easy for people with knowledge to look down on those that don’t. Nobody really wants to raise their hand in class, a setting designed for answering questions, in fear of their question indicating they are ignorant. This is very destructive, very common behavior and overcoming it is necessary to learn more efficiently.

Apprenticeship Patterns Overview


I have been assigned to read the first chapter, and the introductions of the subsequent chapters two through six. My first take-away line from the first chapter is that this book was written for me, not for my boss or professor. I find this ironic, since I wouldn’t even know about this book if not for my professor assigning it to me. I understand the meaning is to read it for my own benefit above all else, which I agree with.

Martin Gustavson summarizes apprenticeship as having the attitude that there is always a better way to do things than what you produce. Does this mean that as soon as I believe I have produced something that I believe is perfection, I am now a journeyman? I feel like this definition is not very accurate.

The outcome of an apprenticeship depends on how much effort one wants to put into it, it is more my responsibility to succeed than my master’s/teacher’s. I’d like to add that having a good or bad teacher directly effects how much I am going to learn. In high school, I barely passed algebra 2 with a D, whereas in college, I got an A in calculus. Obviously there is a huge leap in difficultly of the two subjects, so why did I preform much better in the harder class? The main difference between the two classes (and the two outcomes) was based on the crappy high school teacher I had versus the professional college professor. That concept will repeat in an apprenticeship setting.

Chapter two’s introduction starts with an interesting story about a philosopher and a zen master. I found this passage particularly interesting. Every time the master tries to explain something, the philosopher excitedly interrupts him by expressing what he has learned or studied elsewhere. By interrupting the lesson, the philosopher misses out on information. The phrase “empty your cup” refers to the concept that you must come to new experiences with an empty mind in order to fill it with as much knowledge as possible. New learners especially have this problem where they rudely can’t listen and learn. I may be guilty of this, but at least now I am conscious of it.

Chapter three is all about the “long road” in reference to the endless journey of knowledge. It bothered me particularly when the chapter states the importance of long term goals over things like salary and leadership. If I understand this correctly, long term goals in this context only means more knowledgeable in a specific field, with the trade off being you wont make as much money. My long-term goal is solely to make as much money as possible.

I would rather rich and dumb than smart and poor, depending on your definition of “dumb.” The book seems to define “dumb” in this context as “not knowing as much about programming as you could” which I can live with. As long as I am smart enough to be a good person, I would rather make more money. Overall, I think this book prioritizes knowledge too much, knowledge is the means to wealth and power, not the other way around.

Chapter four is about not becoming comfortable as the smartest person in your development group. If that happens, the book encourages leaving that group and becoming the dumbest person in a different group, then working your way up again, which makes sense and is agreeable.

Chapter five reiterates that perpetual learning is important no matter what your skill level. It covers prioritizing a reading list and continuously learning as much as possible.

Chapter six is related to five in that you must maintain your own learning. Once you graduate, you don’t have assignments or due dates to keep you on track. Beneficially, this means you also don’t have to learn anything you don’t think is relevant/interesting.

Early Testing



This week I read the post from the site linked above. It talks about effective quality assurance strategy in the early stages of a project. Uncaught bugs or fundamental flaws in the foundations of the software life cycle can result in setbacks for the later stages. Ultimately, it is more efficient to test early and test often than to spend resources going back to fix an early issue. If this is the case, sometimes the best solution is to rewrite many built features of a software project just to change the foundation, which is the worst case scenario in a time crunch environment.

There is a balance to be achieved between spending enough time testing early as to not create fundamental mistakes, and spending too much time testing without devoting enough resources to producing a working prototype. Software projects are typically planned on a time based release quarterly, half-yearly, or yearly, depending on the size of the project and the goals in mind. Because time is of the essence, defects need to be organized based on severity, time allocation, and expected collateral impact for the rest of the code.

This cycle can be broken down into steps; the developer creates, the tester tests the creation and ranks severity, the developer responds by fixing the most important issues, and the tester evaluates the fixes. Ultimately, this cycle never ends as long as they are employed. Constantly, there are new features and new bugs, and it is impossible to discover every bug from every new feature, the product is never defect free. In this way, testing is especially important in the early stages of development since it plays better into the long term which we expect to never end.

Now that I’ve summarized why and how early testing occurs, the final segment of the site reviews the primary targets for early testing. To begin, stakeholders determine which features will be the most effective by generating the most revenue, complying with standards, catching up to a competitor, or succeeding a competitor. These selected new features are the focus of early testing since they usually involve many lines of code with a high possibility of intersection. QA and development leaders both need to work together when working on these high priority features in the early stages of development. This collaboration must be stressed as especially important to the work efficiency of the entire project.

Holiday Season Quality Assurance


This week, I listened to PerfBytes Black Friday, Hour 4 at the link provided above. This podcast is centered around the business practices of major retailers and how that reflects on the work of IT departments. Especially right after thanksgiving, retail companies see a huge spike in consumer activity with black Friday and the holiday season, which results in a big strain on eCommerce.

They begin a practical assessment of retail websites by scoring the load times and response requests over time. They discovered that some retailers don’t put enough resources into their websites. Olight is a manufacturer of flashlights whose website scored a D, which is unacceptable from a consumer standpoint especially around black friday and the holiday season. For comparison, they also scored a competing website, Maglight, which performed the same or worse in all areas.

Clearly, these shopping websites were not up to par with the expected performance and don’t seem to have an interest in upgrading. Major online sellers like Amazon and Home Depot also sell these products but with a much more marketable look and feel to their web pages. This test proves that these manufacturers should invest more in their website and might make more revenue by selling directly rather than paying a margin to the dominating online retailers. The need for quality assurance exists, but there also exists a trend from not well known companies like Olight and Maglight to let bigger shopping websites carry the majority of their sales for them at a cost. In this way, it may seem not worth the effort of upgrading a website.

Next the hosts go over ways to better communicate performance engineering between multiple departments especially around high traffic times of the year. Typically, the conversation starts with cost estimates going by a specific plan for that year. The priority for business leaders higher up the corporate chain is to cut costs as much as possible, however, cutting the IT departments budget results in drastic sales consequences. The best way to cause change in the industry and prevent these risks is to better communicate cost.