I just finished renovating the Rookout Breakpoint Editor area. It's the place within the Rookout app that lets you set a breakpoint condition, hit limit, time limit, variable collection depth, and other settings. After every big feature or renovation, there's always this void I encounter - pretty much the same one I experience after finishing a good TV series (looking at you, Better Call Saul) - it's that notion that I've just finished doing something that I love, and that now it's time to move on and do something else.
As developers, we have our hands full on an almost hourly basis. Features, bugs, meetings, defending ourselves against QA- you know the drill. If you're not fixing bugs, you're writing them (well, maybe not you - you obviously don't write any bugs). So what happens afterwards, or when you go home? What is it that you can do to entertain and/or educate yourself further?
A developer's toolbox is only as big as they make it. It doesn't matter whether you're a backend, frontend, or a low-level developer - you can't go wrong with learning something new. It is basically what we do as R&D day in and day out: researching all the things.
In that aspect, Deno is very interesting, since it ships with a TypeScript compiler out of the box (no babel toolchain!), has added security measures (such as inability to access the file system/environment variables unless specified explicitly), has its own code formatter, dependency inspector, as well as a set of audited standard modules. Also, as the cherry on top - it's written in Rust! So I hopefully will get to play around with that as well.
If I had to compare the current stage of life of Deno to an equivalent stage of life of Node.js, I would say that it feels somewhat like Node.js felt back in 2012, when everything was new and no one really had an idea of how big or popular it would get. These days are perfect for such experimentation.
Got you there, didn't I? But seriously, if you've ever heard of T-Shaped people - people who know a lot about a variety of subjects but are experts in at least one - that's exactly what it means. Having this type of specialty is invaluable to you, both as a person and as a professional.
If you're a Front End Developer and you use Webpack on a daily basis without digging into it too much, now might be the time to do just that and learn a bit about compilers and ASTs (Abstract Syntax Trees), and the same goes for a variety of other subjects, like Docker and Kubernetes, CSS-in-JS and how it gets transpiled into CSS - or even Node.js and its internals. The choice is up to you.
As Jack Nicholson once wrote: "All work and no play makes Jack a dull boy". Let's put a happy spin on it and do the opposite. 😉
Sometimes you just need to distract yourself, or simply disengage from work-related matters. As an avid gamer in the past (and less so in present time, unfortunately), those precious moments are invaluable. Right now, when not working, I mostly write code for fun or play Minecraft. It's another interesting twist I get as a developer who likes building things, although I mostly build underground dungeons. At other times I used to play World of Warcraft, The Witcher, Alan Wake (it's pretty dated but it's still amazing), Grand Theft Auto, and Elite: Dangerous.
Each of those has its own charm and they all provide a great way of clearing your mind - just like taking a short walk outside - which is especially important when trying to solve bugs. Games and some time out are a gateway to creativity and creativity helps with finding solutions faster, even when we're not aware of it.
Let’s go back to Minecraft.
I wanted to build my own lake, so naturally I took a bucket, filled it with water from a water source block, and started filling an area with water. I was only beginning to do it and noticed it would take a long time, but was still at it.
Then a friend came along, threw a stack of ice blocks and said "Hey, take this stack of 64 ice blocks. Just put them at the top level of the soon-to-be lake and break them - they would break into water and fill the entire area". Boom! Problem solved. Now my boat has some roaming space.
When I first stepped into the Rookout offices and had my interview, my jaw quite literally dropped when I realized how much time this company saves for developers. No more waiting for ages-long end-to-end tests to pass just so you could add a console.log statement. From that moment on, I knew that even if I didn't pass the interview, I would still use the product. I would break that block of ice and make my personal experience of debugging more fluid.
Look for solutions, be it when gaming, writing code, or living.
Not a very tech-oriented activity (or is it? 😉). TV content these days is nothing like it used to be when I was a kid 20 years ago. Sure, there were some fun shows back then, including Seinfeld, Friends, Family Matters, Saved By The Bell, The Fresh Prince of Bel-Air, etc. But our current times are different in one particular way: new shows are created by people who used to be kids 20 years ago, and this makes for a plethora of original ideas, resulting in brilliant content - when a large portion of it is witty and geeky at the same time.
Such shows are, for example, Upload and Mythic Quest (my personal favorites, but no worries - I won’t spoil anything 🙂).
"Upload" uses the pretty common idea of "uploading yourself to the cloud". It tells a story about a guy who gets his consciousness uploaded to a cloud, where he has certain limitations like a data quota, and where he stumbles across a lot of amusing scenarios. My favorite one would have to be where he's swiping left to get a supposedly free drink from a machine, only to find out that he actually needs to pay for it. Freemium gaming trauma intensifies.
It's a brilliant show with a lot of what humans like - it's got humor, geekiness, and of course, romance. ¯\_(ツ)_/¯
The 2nd show is Mythic Quest. It tells the story of a company that develops an MMORPG game, and resembles a theoretical mix of the show Silicon Valley with South Park's "Make Love, Not Warcraft" episode. The constant bickering between developers, the product manager, graphics designers, and of course the CEO, regarding game mechanics, items and behaviors is all that you'd expect from a series created (probably) by gamers. It is exactly the type of content that was nearly impossible to create 20 years ago. The inspiration had to come from somewhere and that somewhere was millennials.
One of the great things about being a developer, is that there are communities all around. No matter where you are, there's almost always a community of developers around you, especially during COVID-19, during which these communities are more flourishing online than ever. There are developer groups in WhatsApp, Telegram, GItHub, Discord, gitter.im, even on good old IRC. All you have to do is look!
The benefits of joining such a community are countless. From my few years of experience in such groups, I have learned a lot about a variety of topics, be it things related to developer employment, self-learning, staying up-to-date with latest tech, hypes and trends etc. Also, the people you get to know are fascinating and each come to this field with their own special experiences, perspective and knowledge, which everyone can benefit from.
This is also the place where you can shine in a variety of ways. Being a part of a community also means opening yourself up to new opportunities. This can include job offers, the opportunity to contribute to open source projects, arranging meetups or study groups, etc. The sky's the limit!
Have you always wanted to experiment with the Internet of Things and haven't had the time or patience? Now may be the best time to do so.
Being a developer enables you to express yourself and experiment with a variety of technologies unavailable to people in other fields. You have the ability to build software that can affect other developers (Rookout, hint hint) and other people in general. It doesn't even have to be for other people - it can just be for yourself or your family.
The age of what used-to-be-called Web 2.0 brought us platforms like Facebook, Twitter, and the like. While Facebook is focused on making contact with your family and friends, Twitter is a global treasure trove of individuals writing about what interests them. This is an incredible opportunity to learn more from global influencers and individuals alike (and of course, look for cats).
This could also pose as an opportunity for you to do the same. Everyone has something to contribute to the community and you are no different, no matter what you believe your Impostor Syndrome to be telling you.
A lot of what I do consists of computers. I have a Windows machine, a Linux machine, and a MacBook Pro with MacOS. Linux and MacOS are my daily drivers and I made all three of them as convenient as they can be.
Back when all I had was my Windows machine, I used to fiddle around with it for quite a bit. One of the most prominent tools I discovered during that time was AutoHotKey, which lets you bind text commands and hotkeys for pretty much anything, using a dedicated programming language. For example, at that time I didn't have a keyboard with media controls, so I used AutoHotKey to write a script that configures custom media controls that I could play with. Another example was when I wanted a hotkey that would make the current window appear on top of any other window - and I did it with a single line of code.
Nowadays, on my Linux machine (used to be Arch Linux, now it's just Ubuntu 18.04), I use AutoKey for similar purposes using Python (I do have a media-supported keyboard now, though 😉), although my AutoHotKey script is way more robust.
Another tool I absolutely loved when working under Windows is Everything - an incredible tool for searching files and folders quickly. All I had to do was bind the app to Ctrl+Shift+F (it's configurable in the app's settings) and that's it. On MacOS I use Alfred for the same purpose, while on Linux I use Albert.
Discover your own productivity tools and make the best of them. Also share your config! It's all about community.
These times of COVID-19 force everyone to think about the future. Interviewing in tech is already a challenging endeavor and a tough nut to crack and perfecting your interviewing skills is something that would benefit you tremendously throughout your career and coming years. For developers, there are several ways of doing just that.
The first one is awareness. You need to know your strengths and weaknesses; which sides of you shine in interviews and which ones need some work. Your technical skills might be phenomenal, but if you lack the skill in showing them (i.e. you get nervous and suddenly forget things), nailing that 2nd interview can be tough. Some meditation and self-learning, just to feel more comfortable, goes a long way.
Another way of being more in peace with yourself when interviewing is just imagining you're at home, working on a side project. I mean, naturally, you wouldn't feel pressured if you were trying to traverse a tree while having your dog in your lap, right? Same point, only with doodles on a whiteboard.
And last but surely not least - and that's the best way that's worked for me in the past - is getting someone you know, who interviews people regularly, to do the same with you. A 2nd perspective is always a good one, especially when said perspective is both friendly and comes from a professional like yourself. You would discover that you might not be sending the right message across, verbally or even physically (body language means a lot), or that you might be going way deeper into certain topics than you're supposed to.