Apprentiship blog

Yellow phase, Merge sort

December 17, 2018

This could be my last post, I find out tomorrow if I have improved enough to continue my apprenticeship at holidayCheck. So the first part of this blog will be over viewing the areas assigned for improvement and how I approached each.

Structure

Expectation: Have a list of activities written down (e.g. in calendar) and sticking to them daily.

Originally I tried, using github projects, then jira. I was on jira when this improvement plan was imposed. It was recommended that I move my planning board to Office tasks which is easier to use. First I made the backlog with a ticket for each category, each ticket had a check list for each subcategory from a self improvement form we where given. From there I was selecting a topic from the check list and refining it in to a task or the board and checking it of when the task was complete. Today I found out that this was the wrong approach and that I should be create tickets from the items all at once, sort them by priority and refine them later.

Communication

Expectation: Actively communicate with your team members

Admittedly I’m a quiet person by habit, but we defiantly communicate. One method that I tried was to ask more detailed questions about the activities my team members mentioned during our daily stand-up, an other activity I did was asking the people around my their thoughts on certain topics. Asking for my mentors help when creating / refining the tickets mentioned about is another. Those where the more successful instance where I communicated. Other not so successful instance would include my failure of a lighting talk, I think that was a more knee jerk reaction form being told what would happen if i didn’t improve.

Collaboration with others

Expectation: Marc needs to work more closely with the group.

Aside from pairing and other activities, we are mostly pursing our own individual interests with learning different languages. The common programming language we use is JavaScript, which is fine for for me and some of the others, so we mostly use this during katas. An other instances of collaboration that is still in the works is a project that adds additional features to an existing project. The time frame for this project allows for more group meetings and casual discussion to find out what direction the project is going to go. At the moment though the other members of the apprenticeship are joining departments with in the company and while I’ve been instructed to stick to the improvement plan.

Results

Expectation: 1: Join katas, 2: Write more blog posts with more effort, 3: Try other ideas and reflect on them, 4: Jira board – tickets, see them completed one by one over time.

Joining katas, I’ve been attending more katas even starting a few outside of the regular morning session. As for blog posts, I moved where I keep my post my blogs to here and changed the writing style. Previously I was using the blog as a method to read and write about a topic in the self improvement sheet. Now I use the blog to keep track of my day to day activities, what I have learned and reflecting on those acclivities. Trying other ideas and reflecting on them, there has been a few suggestions which I’ve tried and most of them have worked out, using office tasks, host my blog on a different platform, keeping track of what I’ve done during the day by writing short notes, treating my mentor more as product owner and asking them to assist with refining tickets, asking people questions rather than typing them in to google… all of which have worked. finally jira board tickets, I had over a hundred of these before I move to office tasks and I didn’t want to repeat my mistake on jira where I created to many to keep track of so I’ve been working on tasks a few tickets at a time that where taken from the backlog refined and updated as I went along. There has been some progress within this respect although some tickets continually grow every week.

That sums up the progress I’ve made with the improvement plan, now on to where I left of from Friday with merge sorting.

Merge sorting

What’s a merge sort?

Merge sort, is a specific algorithm for sorting items by comparing them to each other what makes a merge sort different from say a bubble sort is that the items are divided into two groups, left and right. this is done recursively until both left and right side have only one item in them, then those two items are compared and merged together in the right order. so 4,1 8,5,3,6,9,0 becomes two pairs of 1,4 and 5,8 and 3,6 and 0,9 these are again merged together so 1,4,5,8 and 0,3,6,9 and finally merged sort again to 0,1,3,4,5,6,8,9.

Initially I spent a lot of time getting segmentation faults from the tests and debugging these was time consuming as I didn’t understand what was causing the error. Turns out after several attempts and even referring to the answers in the book to find out where I was I going wrong I found that I had made a mistake in the test, by having a result being the result of a merge sort on it’s self, before it was created. After this was discovered I spent some more time retracing my steps to find the source of other errors and eventually it worked, by that time I had tried to write a merge sort three times so I was glad to the tests running and failing as they should, and eventually I got them passing by removing a subroutine from the header file that I had declared so I could test it. So the big learning today was to check the tests test the right thing and the right time.

Best, Marc


Written by Marc McIntosh Find him on github