Working together

This week we were welcome at Funda, located in Amsterdam, who builds a website for buying and selling properties in The Netherlands. We were coming for a workshop where we had to create a small feature for their website in 2 hours using the SCRUM method.

The assignment

We were divided into several small teams of about 8 students, and each team had to create a unique feature for their website. After 2 hours we would all come together to see what everone has made. Sounds simple, but you have to keep in mind we all worked on the same repository, and surely merge conflicts would pop up. I was part of team one where we had to add a feature to search houses using the address. Our introduction at Funda Lars Douwe Schuitema briefs us about our assignment

The session

Our task wasn't really difficult per se, but we only had 2 hours to create this feature and most of us had no experience using the Vue framework. So the real challenge was to work together as efficient as possible to get the task done.

The SCRUM method

To guide the SCRUM process as good as possible, one teammember was assigned as SCRUM master. He had to make sure everyone had a task to complete and streamline the process with other teams. Our SCRUM master was Bas. He already had experience with SCRUM, but did find it difficult to give everyone a task. I also have some experience with SCRUM but I also couldn't see how everyone would get a different task. What is especially difficult here is that you don't know everyone expertise yet.

We first made issues on the SCRUM board to see what tasks will need to be completed. We discovered that it was better to split the team into to groups, because many of us had no experience with Vue so it was better to group us with someone who had. I initially also joined the Vue team, but I had little to no input on it, because I didn't know the framework. Instead I chose to help out the CSS team with creating a dynamic and responsive dropdown menu. Here you could filter on place name.

Submitting changes

During the end of the session our menu was completed and the Vue team also completed their task as well. I worked closely with Roy who had some basic CSS experience, but lacked some understandering in certain area's. For example, he didn't know where absolute positioned elements would `break out` to (To the first relative positioned parent).

When trying to push our changes to Github we were introduced to an evil linter that wouldn't allow us to push our code without making changes to how the list would populate with the data. The problem here was that the linter wouldn't accept certain characters, but when we left them out we got a syntax error, completely breaking our code. Our coach also couldn't give an appropriate solution in time and so our part of the code didn't make it to Github.

Bringing it all together

After the two hours we were all invited back to big screen where we would present our feature. Only half of our feature made it to Github, but other teams had some problems as well. Other teams also failed to put their code on Github, got merge conflicts they couldn't resolve or got some other git related issues. Despite all of this all teams got something done, although sometimes only part of the assignment.

My thoughts on this workshop

The real challenge of this workshop wasn't to create a feature as fast as possible in my opinion, but to work together with mutliple teams on a single project in a short amount of time. I personally like that idea, but I think the time constraint was a bit of a bottleneck for this workshop.

Working on a project you've never seen the code from before and is build with a framework you don't really know is challenging enough for two hours. having to also work as a team, assign tasks to each individual team member, creating features for the website and having to deal with Github all were a bit too much. This could've easily been a workshop that lasted for the entire day and I think we would have learned more from that.

If we had more time

  • We could have mapped out the scope of the assignment and create a proper planning.
  • Our SCRUM master was talking to other teams to learn from other teams how they were handeling it. He almost didn't spend any time with the team itself.
  • We could've fleshed out our individual tasks more and we could better assign tasks to better fit someone skill level.
  • Having clear tasks for everyone also means you can try to attach deadlines to it. This workshop could've been better if we learned how to deal with this and how we could collaborate to still reach the deadline when time run out, given the short timeframe this could've been improved by just adding an extra hour to the workshop.

Conclusion

I think we did well during this workshop, all things considered. Our assignment was completed succesfully, however we couldn't push 50% of it because of the evil linter. If we had more time, we might have been able to fix it. I've struggled a bit at first to have something to do, but ultimately teamed up with Roy and delivered our feature (almost) successfully.

Next up

  • Playing with CSS

  • View

Lecture by Sanne 't Hoofd