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

Dr. Marlene Wolfgruber, Director of Product Marketing at ABBYY, explores what it takes to excel as a Software Product Manager, and shares her tips on getting started.
Preparing for a job interview can feel daunting, but with the right approach, you can turn your anxiety into confidence. Whether you’re a seasoned professional...
Discover Lisa Iudiciani, Lead Software Engineer at Vista's journey of career reinvention, balancing technical growth with leadership development, and her insights on mentorship for aspiring...
Amanda Whicher, Technology Director at Hays UK&I, highlights the importance of job interviews as a two-way street, where both employers and candidates assess each other....