Building Something From Scratch Phase at Encora Apprenticeship — Week 4
This post is part of a weekly assignment at Encora Apprentice and in this series, I’ll share my journey as a Software Engineer Apprentice. I hope these stories help and motivate others on their tech journey.
This week at Encora
This week it’s been filled with teamwork, some more React, and some new learnings about Agile practices to use while working on a project. I also got to experiment a little with testing in the Node.js ecosystem.
The essence of Agile
Throughout this phase, we’ve been using some agile practices such as daily standups, pair programming, and delivery of frequent and small changes into the code. In this series of videos, I got to learn more about these practices and other tools/practices to use while working on a project.
Some of the tools mentioned in the video that captured my eye were:
- Planning poker, which is a tool that encourages the team to participate in the activity of estimation, where each one shares their opinions and concerns about a particular estimation.
- Sustainable pace, which can be seen as working smarter and not harder. Keeping a healthy sustainable pace is key to keeping the team rested, and motivated.
- Social contracts, which are an agreement within the team that is made to keep a respectful and safe work environment.
Of course, there are many others, like prioritization (using the Moscow method), automated testing, etc.
Mocha and Chai and two tablespoons of Javascript
On the topic of testing, I came across these libraries/frameworks used for this purpose in the Node.js ecosystem. Testing is a crucial part of software development since it allows the developers to test whether the application is behaving as intended.
Mocha is a Javascript framework used for asynchronous testing. The general structure of tests written using Mocha can be seen as:
describe("string with test group name", function() {
it("string with test name", function() {
/* test code */
});
});
With the describe
function, we can group similar tests, this grouping makes maintaining easier. The it
function contains the test code.
On the other hand, Chai is an assertion library for Javascript, which makes it a perfect complement for Mocha. An assertion helps us define an affirmation to test whether its true or false. Completing the last example we can have:
describe("string with test group name", function() {
it("string with test name", function() {
/* test code */
assert.equal(foo, 'value', 'expected value of foo is value');
});
});
Working as a team
This week I got to see Atul Gawande talk, “How do we heal medicine?”, in which he talks about what skills a system must have to work. In this talk, he was referring not only to health systems but any kind of systems. We can apply the three skills within our teams for them to be successful:
- Recognize where our errors/problems are. Analyze within the team and find what areas could be improved.
- Make solutions for those errors/problems.
- Implement those solutions.
Gawande also mentions checklists as a simple yet very powerful tool.
Also, I got to watch a review about Antifragile: Things That Gain From Disorder, in where is mentioned the principle of antifragility, a concept that can be applied not only to the software we are developing but also to the team, in which we can gain from randomness and make a more resilient team.
Before I go
During this week, we continued to work as a team, since we are all working towards the same goal. This phase has been full of surprises and new technical and non-technical skills, and we are all focused and excited to see the final product!