Code to impress
The motivation
Late December 2020, I saw a job ad on Facebook, for a position as Full-Stack Developer, from a company from the city I currently live in: Turku, Finland. I clicked the ad and checked their website, and I've been quite impressed with the way they were advertising for the currently opened positions. I believe that most of the time you could learn a lot about a company just by looking at their website and the way they advertise some open position(s), while some other times, something just "clicks".
I remember I was browsing on my phone when I applied, creating an account on their platform somewhere, but at that time didn't upload my Resume as it was lacking the updates about the TypeScript bootcamp I've just completed, and with the holidays preparations and everything I forgot to add it later as I intended.
Not long before the year ended, I received an email from the company (the role of the person who sent the email is "People Happiness Officer", which, again, 👏 makes you want to be a part of that group). The email was informing that they went through all the applications and decided that we're not a match.
In my opinion the ad description has targeted me very well. The only thing specified in the ad, that's missing from my tool belt: Python with Django Framework for the backend, but that was mention in the "nice to have" list.
Nevertheless, as I have failed to provide them my resume, how would this company possibly know about my strengths and weaknesses?
So, for the first time, I replied to the email and asked if I could get some feedback about their decision. That turned out to be a good decision (💡 Lesson Learned: I should definitely try asking for feedback more often in the future) as I've got a very quick answer back that the reason for their conclusion was the fact that my application was lacking the CV and therefore, their impression was that I wasn't that much interested in the opened position.
Furthermore, I was told that they will be out of office during the winter holidays and I could send my CV and some code examples, and that they would be willing to re-evaluate my application during the first working week of 2021.
The challenge
To give you some information about the timing, the email exchange with the "People Happiness Officer", I was writing about previously, happened on December 22nd, and at that time, I had already started working on this website (that quest began on December 18th, four days before) and, truth be told, this is probably one of the main motivations to create a Blog section for the website.
So, on December 22nd, it was "Game ON"; I had a bit over two weeks time to:
- build this website, while learning GatsbyJS;
- showcase the relevant skills on the newly created website, better that I could do it in a resume. Those were:
- React for the Front-end;
- Python with Django for the Back-end;
During the winter holidays 🎄🎅 that's not as much as it seems, especially with two young boys around the house.
So, while not the best showcase for my front-end skills 🤓 yet, building this website might offer some view about my relevant skills and capabilities in terms of front-end development using modern tools.
But is there enough time to go through what it means to build a backend in Django
?
Experience with Python I have (although limited), as I have used Python, on and off, inside Tribon and Aveva Marine ship design tools to extend the functionality of the software through scripts for years, but using python for web development, that would be new for me.
And then, what would be the best, most relevant, code to write, to be able to impress and convince this company to call me for an interview?
The answer: Probably nothing that could be built in just a couple of days.
I mean, even if I'm completely new with Django, I could, of course, create a new Django project, and set up some basic models, routes, etc., but would that be able to impress someone? Again, I'm sure it won't! They would probably look after design patterns implementations, clean code standards, etc., things hard to acquire in just a few days.
After you get to really understand the MVC architecture of one framework (I know, MVT is best for Django), it's much easier to learn new, similar frameworks. I experienced this when I learned to use ExpressJS
(NodeJS) after having a long history with the Laravel
(PHP) framework.
What did I learn from this experience
I got to learn a bit about Django, and besides the usual stuff (requests, responses, etc.), here's what I think about it:
it looks a lot like Laravel in many ways:
- both frameworks are very popular, well documented with strong communities and a lot of resources available;
- DTL, the templating engine used by Django is surprisingly similar to Laravel's Blade templating engine;
- the routing system is somewhat similar, although Django seems to favour regex route registration.
but also different in terms of:
- "coming with batteries included" (a lot more things out of the box), which is presumably a good thing;
- setting up models and relationships (preferring Laravel style);
- ORM: here I believe Eloquent's syntax (The ORM in Laravel) is much nicer/cleaner than the one from Django;
- the development server needs to be restarted quite often as it's not picking up changes very well (both on Mac and Windows).
Conclusion
Am I ready to make this leap (from PHP + Laravel and JavaScript/TypeScript + Express) and start writing professional software in Django/Python? I'm definitely not ready at this point, as my skills with this language and framework are probably far from production ready, but I'm a fast learner, and I'm sure I would be able to easily build up this skill. I guess it's also a matter of preferences and taste, and it takes time to get really comfortable using a language / framework.
If it wouldn't be about trying to get hired in this company, Python would still be my go-to language for tasks like: working with files, strings, data in general and... I'd keep it at that; For web development I still prefer the languages and tools I've got used to during the years.