fbpx

5 Technologies to Improve Your Software Skills in Quarantine

Learning Software Engineering during Lockdown

ARTICLE SUMMARY

Bryn provides 5 different technologies we should be trying out whilst we are in lockdown to keep Improving our Software Engineering Skillset.

The past few months have been difficult, to say the least. If you are lucky, the toll it has taken has been manageable. Still it has been frightening to watch this pandemic unfold, and the ample free time to sit and think about it has not made it any easier. Personally I have found it helpful to spend some of the excessive free time I find myself with exploring.

While an entirely new language may seem daunting (we all need to keep enough of that free time for taking care of our selves and our minds), I have come up with a list of 5 things that are:

  1. Not painfully hard to learn (though they do vary on this front),
  2. Worth learning (in my opinion), and
  3. Topics you have most certainly heard much talk of, but perhaps haven’t sat down to toy around with, if work hasn’t given a reason to do so.

So now seems like the perfect time to pick one or more and dive in. With each topic, I will list several resources to help kick things off.

Syntactically Awesome Stylesheets, Software Engineering

Sass: Syntactically Awesome Stylesheets

Discovering Sass completely changed my outlook on CSS. I went from thinking it was a total pain, to absolutely loving the creative process of it.

Plain CSS is likely fine for a small web application, but have you ever gotten to the point where it starts to feel a bit out of control? When you aren’t quite sure exactly which div blocks are of the class that you are about to change? Sass eliminates this headache.

The styling written in a Sass styling sheet (module.scss file) is only relevant to the code within the file importing the style sheet. This means that you can repeat the names of classes from one sheet to another while varying the style for each. For instance, when I am building a React app, it is helpful to keep consistency from file to file. With Sass, instead of writing the class names as homeContainer, aboutContainer, profileContainer, etc., I can have the top level div in each page just be of class container, but still customize each of their styling if needed. You can see when you view the in-browser HTML styling with Sass that each styling sheet appends a differentiating string so that container in the Home page is different than container in the Profile page.

Photo of green spectacles

Sass also makes managing variables incredibly easy. You can create a variables file, define all variables in it using ‘$variableName’, and then use @import to import this file into the Sass stylesheets. Using this method, if you decide in the 11th hour that the shade of green you chose isn’t quite right, the ability to play around with different options could not be easier.

The @import feature that I mentioned above is an At-Rule — another incredible feature that Sass provides. Other At-Rules include tools for debugging, flow control rules, reusability, and more.

Resources

Firebase Logo, Software Engineering

Firebase

This suite of tools is quite simply amazing. I have written a post previously introducing the platform and specifically discussing its authentication capabilities, which I recommend reading if you are interested in learning more about it.

Firebase is a Google product that provides seamless, cohesive, and robust solutions for everything from authentication (including social and passwordless logins) to analytics, databases, bucket storage, hosting, user management and more. All of this is able to be easily accessed and managed from a single convenient dashboard, and comes with thorough documentation for implementation. It essentially provides everything you need to build a secure and production ready application.

Resources

Photo of a computer motherboard

Hardware

I have found that as the complexity of my engineering has grown, so has my need to understand the hardware running it. This is particularly relevant in discussions regarding efficiency, size and optimization.

Context has always been incredibly important for me when learning new technologies. This may not be the case for everyone, but I like to be able to fully wrap my head around the problem that I am solving, rather than just execute a solution. Spending time gaining a deeper understanding of processing power (CPU), random-access memory (RAM), operating systems, servers, and other key components of hardware have given me insight that has provided the foundation for a deeper understanding of quality code.

Resources

How To Build a Computer: A Beginner’s Guide

SQL Logo

SQL

SQL (Structured Query Language) is a language used to query relational databases, as the name suggests. These are the raw statements that spell out exactly what data to return from the database, allow you to insert data into a database, and more.

Writing raw SQL statements is not always necessary, though. For instance, popular frameworks like Ruby on Rails and Python’s Django abstract the raw SQL queries into methods, which is both easier to write and cleaner to read.

In many ways this abstraction is fantastic when building a backend, but I believe strongly that it is detrimental to an engineer’s understanding of and therefore ability to use, through abstraction or otherwise, SQL queries. Much of my professional work has included Express backends with PostgreSQL databases, a combination that requires me to write raw SQL statements. This experience designing complex, real-world applications, gave me the opportunity to go deep into the SQL language. I learned to write complicated custom queries that no framework would provide. Now, when querying relational databases, I can make a decision about whether the abstracted methods with custom logic on the returned values is the best choice, or if a custom query is optimal.

Resources

Docker logo

Docker

Seeing as all signs are pointing to containers as the future of development and deployment, Docker is a no-brainer for this list. I am going to be straight with you, though — Docker can be a total pain to set up. But I promise that it is worth it. If you have ever labored over your latest application, tuning every detail and function to be just so, only to deploy and have the build fail, then containers are for you.

The beauty of containers comes down to two things — consistency and scalability — and Docker is the leader in them. When using a Docker container, rather than developing in one environment (your computer) and then deploying with another environment (Heroku, etc.), the container is always the environment. Containers are isolated from their hosts. The container runs on your computer, and the container is deployed into production.

Given the nature of containers, they lend themselves incredibly to scaling. Containers can be spun up and torn down as needed in production to handle usage fluctuations. Applications are being containerized more and more every day, with Docker as the de facto choice to do so.

Resources

Coding Interview Questions | Skilled.dev

Coding Interview Questions Blog

RELATED ARTICLES

We sit down with Vidisha Gaglani, CEO of Streetbees, to delve into her insights on advancing women's careers in the tech industry.
Lesley Cooper is a management consultant and founder of WorkingWell with over 25 ayears of experience in the design and delivery of all elements of...
SheCanCode are thrilled to announce the launch of our brand-new mentoring programme, Power Upwards, designed to help women in tech find the guidance and support...
As Head of Marketing at Sleepwave, Erin Anderson shares her insights on the essential skills that drive success in the startup environment. She joined Sleepwave during...