culturepeoplecareer

Dear diary, I’ll tell you about my start at Lab Digital

6 min read

Dear diary, I’ll tell you about my start at Lab Digital

A glance into the life of a Junior Software Engineer

--

Hey there! My name is Leon.

Recently I completed my Master’s degree in Information Science at the University of Groningen. After that I went to Sri Lanka for a few weeks to celebrate, before moving to Utrecht to be near friends and find a nice job.

A little over three months ago, I started my adventure at Lab Digital as a Junior Software Engineer. Not too long ago I attended my last lecture. And due to the fact that most blogposts found on this page cover more in-depth topics, I thought it would be refreshing to write down how I experienced the transition from lecture halls to office bullpen.

The first distinctive difference that comes to mind between working at a company and being in university, is being part of the team from day one.

Despite the fact that I’ve been working remotely quite a lot and met most of my colleagues on a Teams call (due to the COVID-19 circumstances), I didn’t feel like the ‘new guy’ for that long. Maybe due to the casual atmosphere, or mutual interest between colleagues.

Team learning

One of the key values of working within a company is not having to reinvent the wheel. This is a more practical way of learning than I was used to during my Information Science studies. Sure, during those years I did learn quite a few techniques in my professors lectures, but it’s nothing compared to the amount of tricks I’ve learned in my time at Lab Digital.

For example, the technique of debugging code using a huge amount of print() statements, which I was used to at university, was replaced with a simple yet powerful pdb function on my very first day at Lab.

I used these print() statements all over my code as some sort of logging mechanism to find out which part of my program ran as expected, and which part was causing errors. This way of debugging is rather limited and horribly inefficient. With the use of pdb.set_trace(), I can now pause my code anywhere in the flow and enter commands, for example to check whether all variables in scope contain the right values. If I had known about this module during my study, it would have saved some hours of debugging.

It doesn’t stop there. During the first weeks at Lab I learned about things like testing your code with pytest, using pyenv for running different Python versions and the use of auto fixers and linters to keep your code nice and clean. These life hacks helped me learn faster and more easily.

No solo artists

Another key value of working in a team at Lab Digital is the fact that you’re really working with a team. At university I had quite some group assignments. However, it often occurred that the group consisted of one or more solo artists, or in other words, students who did their part but didn’t care how each subpart was combined into a final product.

Now, you do not leave your mess behind. Instead, you have more responsibility and, using documentation and code ethics, you make sure it’s much easier for your colleagues to continue on your work. I’ll give you an example.

The first one represents a style of code which I could have written during my studies. The second one is more inline with the style of code I deliver nowadays. Here, I make use of clear variable names, show the expected input and output using typing and provide an explanatory docstring. This results into a more readable piece of code, which can be re-used more easily.

Python, but more

During the first year of my studies I’ve learned the very basics of Python, as well as some basic HTML and CSS. With this knowledge I created the most 1995-ish website, which by the way was graded with a stunning 8. As my studies progressed, assessments and group projects became bigger and more in-depth. In my case, especially during my master study, there was an increasing focus towards data science. Projects mostly focussed on creating a classifier using one or more machine learning algorithms, feeding that piece of software with a ton of pre-processed data and tweaking the parameters until it provided the desired output.

Don’t get me wrong. Most of these projects were very exciting as I got to use fancy machine learning algorithms for making decisions or predictions. For example, I used a combination of a linear Support Vector Machine and a neural BiLSTM network to detect hatred and abusive language on a dataset of social media messages.

However, the way these projects were built up was on a whole different level than what I’m used to now. Sure, during these assessments we created a shared git repository, provided it with some clean, but minimal, documentation and made sure the output was as desired by our professor. However, you knew there was a very small chance you were ever going to touch that project again. And thus, you didn’t really care about the maintainability of your project, at least not as much as I care now.

Now, I work with projects which exist for more than four years and which are improved frequently. In order to keep projects like this clean and maintainable, you make sure you deliver quality code.

Hard + soft skills

Before I started at Lab, I thought I already mastered Python. However, using this language within the Django framework proved to be a whole new level. I’m glad I was already used to the syntax, but from there it was one hell of an adventure.

Over the last few months, I’ve learned a lot. New modules, API endpoints, the Wagtail CMS and database queries. I also experienced a crash course in web development. I had some basic HTML and CSS during my study. As well as a tiny bit of SQL and PHP. I already have more knowledge about the whole web development stack, including HTTP, POST and GET requests, database queries, servers and security.

On top of that, I’ve learned:

  • faster ways of debugging

  • writing descriptive coding

  • using the DRY approach

  • delivering better code quality using logical variable names,
    docstrings and typing

As well as some soft skills like working in a team consisting of project manager, designer, tester and developers, delivering code in sprints and presenting your work to a client. The above-mentioned makes it feel like I’ve learned a tenfold of information compared to what I’ve learned during my time at university.

Are you done with your studies and eager to learn all of this and more? Then you might want to check out our vacancies page :)

Tags used in this article:
culturepeoplecareer