TL;DR
This is my learning experience from my first Software Crafters Montreal Virtual Meetup. There were nine participants.
I about this meetup through one of the blogs that I follow. The meetup was online, and it was six hours behind my time zone, which was acceptable for me. In every crisis, you can find something useful. For software developers and testers, this is a new possibility of virtual meetups from all corners of the World.
I had two motives for attending this meetup:
- See one instance of an online meetup. What is the technical setup for this online meetup?
- Expand my knowledge of software development.
Technical Setup
The primary tool was Google Meet. You sign in with Google accounts, and you are in. You see and hear other participants, and there is a screen sharing feature. Chat did not work for me (Google, where are your software testers)! I was able to see the Chat window, but there was no input text with the send button for me. Other participants did not have that issue. There was a Slack option as a backup that I used.
We should also sign into the MetroRetro tool. That tools give you a whiteboard, and you can create post it on it. There is an essential feature for voting on the proposed post its topics.
The Meetup
The structure was as follows. We first had Lighting talk sessions, 5 minutes max., where you could post a topic in Chat. Then you shared your screen and present it. Daniel presented his home project SnackMachine. He explained how Entity framework (Microsoft ORM) is using design patterns and what are the benefits of those.
I presented my company page in the Phoenix framework. It is a Web framework developed in Elixir programming language.
Lean Coffee
Then we proposed our LeanCoffee topics in Chat and moved to MetroRetro board when we were done. Each session was for 15 minutes.
How Do You Deal With Legacy Code
This is the worst nightmare for every developer when you need to work with code that somebody else wrote. One participant said that he first set all function variables (the context was javascript) as constants. Javascript is scary because everything could be global. So when he is using the application and gets an error on setting a variable, it knows which variable is for returning a value from a function.
Another brilliant heuristic is to run Doxygen (documentation generator from source code) on the codebase. You get out of the box HTML documentation, which could help you to explore the function call chain.
The usual technique is to follow how data is flowing in web application requests with debugging.
My technique is to introduce a testing framework into the code base and start writing unit tests that communicate only with the database (widespread web development scenario). I also try to find a testing framework extension that helps me in creating test data.
Nicolas has a dedicated blog about this topic, Understanding legacy code.
Accepting DDD at work
DDD is domain driven development. It is based on theory (just like design patterns), but developers do not use it frequently in daily work. In DDD, you need to define domain space and boundaries for your application. Before you dive into coding, you need to set domain entities for your application. Those entities would become modules and database tables in your application. For example, it is common to have the Users table where we put all application users. But form that name, it is not clear what is application domain. For example, for Uber-like application, it is better to have Drivers and Customer tables, instead of just Users.
We got book alert, Implementing Domain-Driven Design.
Benefits Of Functional Programming
I shared my confession about my experience using Elixir in the Phoenix framework. Pattern matching helps me to make code more readable when I need to handle return values from functions. Here is an example of Fizz Buzz implementation using pattern matching:
Two hours fly fast. Despite that it was late past my usual bedtime, I was participating and was not tired. Great Meetup!