At Tooploox, we value knowledge sharing. Of course, it is more common to share experiences and skills among people with the same role as you. Yet, I discovered that learning from people from different technology backgrounds, as well as different roles and skill sets is very exciting and, oddly enough, it can solve problems within your field of expertise as well!
It all started with one initiative of our helpful colleague Błażej, alongside Basia, one inventive Scrum Master.
The basic idea was to create and conduct a basic programming course for non-programmers. Every week, we had a different topic to cover and practice tasks to complete. We used materials from 12 of the topics covered in Complete Python Bootcamp on Udemy:
- Basic programming tools:
- Development environment
- Git and Github
- Command Line Basics
- Python Object and Data Structure Basics
- Python Comparison Operators
- Python Statements
- Methods and Functions
- Object Oriented Programming
- Errors and Exception Handling
- Python Decorators & Generators
After covering the material, we would meet for an hour of Q&A and check our code with our mentor. We called the course the Tooploox Python Academy.
Blazej-box: Besides teaching the participants the basics of programming and Python, my personal goal was to make them understand what the work of a developer entails – and a huge part of it involves soft skills. Pretty much anyone can code, but writing good code is governed by a plethora of small rules that often get skipped over in the materials that you would use to learn.
I tried to make sure that my students also knew these – let’s see how Asia’s memory is!
I am genuinely surprised how the 12 topics that we have covered have improved my efficiency and well-being at work. How does learning python help me as a recruiter? Let me explain…
#1: Thinking about processes and efficiency
I discovered that almost every task is simply a matter of crafting the right process. By going from stage to stage, from one function to another, I am able to complete complex tasks. To optimise my code, make it more clean and readable for our tutor Błażej, I also had to get rid of unnecessary steps.
This influenced the way I perceive my tasks and workflow now. As I have a tendency to lose time mailing candidates back and forth to schedule one meeting, my workflow has surely improved.
Blazej-box: Speaking of the rules, this lies on the intersection of “make things as simple as possible, but not simpler” and “code is read more often than written”. When coding, you will have some unnecessary or clunky parts by the time you come up with a working solution. I wanted to highlight the importance of making your solution clean before submitting it for code review – lest my students wanted to face my
wrath calm advice and patient guidance.
#2: Testing early on
Once I was challenged with my first big project (console BlackJack app for one player), I sat down and drew the whole algorithm out on paper. I focused on organizing structures into functions and objects, in order to make the whole code readable, efficient and logical. In the end, I had a lot of not-so-badly written code! There was only one problem. It did not work. In order to fix this, I introduced change after change – and every single one got me more lost and, in the end, the whole project looked pretty chaotic.
Błażej told me to iterate with small steps and test each of these steps early on. I quickly discovered that this approach works in almost all tasks I perform. Whenever I work on something at a company level – such as improving onboarding, offboarding or recruitment – I try to introduce small changes and test them, instead of devoting too much time to preparing the perfect solution. Fortunately, as an Agile company, we are all open to change and experimentation.
Blazej-box: I know that I will catch a lot of flak for this, but I think Agile’s pretty neat.
“No piece of code is too simple to be tested” means that you get to pinpoint the place and moment where something went wrong quite easily.
While we haven’t done a lot in the vein of automated testing, working this way is a good basis for getting into TDD (Test Driven Development) – or at least writing good unit-tests with an understanding of why you are doing it and how to utilise them properly. A+!
#3: Understanding developers needs
After going through my code again and again, I realized why code structure and readability is so important for developers. I found myself lost in my own solution, not to mention how hard it must be to create something in collaboration! I understood the importance of being communicative, careful and focused. Not only did it improve my recruiting skills, but also the reasons for the lack of responsiveness from developers on Slack became clear.
Apart from this, gaining new knowledge concerning the IT field became easier – even if I know very little about programming, every new piece of information is easier to place (as a result, every new recruitment process is easier to kick-off). I also understand some of the jokes (like 10%)!
Blazej-box: Don’t tell her this, but I’m pretty sure that most of our jokes are general nerd cred and not developer specific…
On a serious note – this was one of the main goals of our Python Academy, so I’m really happy to read this. Don’t tell her that either, she’ll make fun of me.
As a recruiter, I rarely see the effect of my actions. Sure, candidates apply, go through the process and some pass our tests, while some do not. People get hired and some job postings are closed but 3 others reopen. The candidate’s final decision is not entirely your credit. There is no final product at the end -there’s no text or graphic. You can’t even say that your work brings revenue for the company. I love working as a recruiter and I deeply value our team, but it’s not easy to be satisfied with the results, as the “result” is unclear.
I found it incredibly satisfying when my TicTacToe worked for 2 players (as a console application… but still!). That’s probably because I can look at something I have created and acknowledge that it’s my achievement. This greatly improved my self-esteem and wellness.
Błażej-box: I learned to program when working night shifts at a service desk (shoutout to my then-supervisor for letting me pick up new skills, because he knew what I was doing!) so I know what Asia is talking about all too well.
Funnily enough, a lot of developers pick up hobbies that let them work with something physical for a similar reason of “I do things, but they are all virtual” – electronics, woodworking, or simply cooking!
The journey with Python is not over. I’m looking forward to new possibilities of improving my daily work by writing scripts to integrate spreadsheets, create slackbots and do various small automatizations. The whole course is a great learning experience – I guess both for me, my friends and to Błażej, our tutor.