29 April 2022
You know how companies try to attract you by promising new and interesting challenges. Have you ever thought about what those challenges are or could be? Do you and I have them at OUR work?
Well, after a couple of uneventful months at work (every company has those "bugs sprints", you feel me?), I've decided to find out what is it exactly that I want and what I personally find challenging.
And after long and hard thinking [“that’s what she said” joke goes here] time, I came up with this list.
Right now I'm doing Stripe integration for one of the projects that I'm doing (will announce soon) and working with React Stripe elements, which includes not only card charges but also Google and Apple Pay. It doesn’t stop there, I also need to plug it all into a headless e-commerce platform, Commerce.js.
And don’t forget those errors on fail and 3DS handling! Quite a challenge, but such a handy skill to have!
When doing one of the contracts, we've been working with a lot of browser APIs. Requirements were so crazy (in a good/challenging way) that we were spending a ton of time in browser documentation trying to find out ways to do it.
Things like implementing a color picker in the browser with the current color being displayed on your mouse while you’re hovering over an image.
Sometimes the requirements were so detailed that we had to go “nope, can’t do it” or “nope, this feature is not worth the time investing”.
We can include using a webcam in a browser into the same category as well. Platforms with KYC use those often, I think, I have yet to play with this feature.
When working at yet another company, we were dealing with a lot of data coming to the front-end. We had to display that data (including the IMMENSE amount of images) without crashing the page. So we were dealing with mounting/unmounting components as users scrolled, as well as storing a lot of data in the VERY limited browser memory.
Pagination? Too slow, users are impatient! Ain’t nobody got time for that! Should we use service workers to cache all the data? If we do that, how do we keep the data up to date then? Maybe predictive loading, but when EXACTLY should we load the next page? What if a user wants to go back to the first page and scrolls up furiously? Quick, mount all the cached components back!
Imagine working with multiple back-ends. You may have a CMS, an e-commerce platform, a SQL database with custom things/data, perhaps about your products, as well as, maybe, a Firebase to handle your users and authentication.
How would you fetch, transform, and display the data in the most efficient way? Well, that sounds like a perfect case for GraphQL! I've never had to deal with multiple backends, but I’d love to handle a couple of custom mutations, queries, and all that!
I've been a part of a small startup where we had a number of projects all linked to the main product and service that the company did.
We had a main dashboard app (Next.js) where users could manage their orders. Then inside that app, we're using another app, a map of locations (CRA + Google Maps + a ton of optimization to display all the points on the map without making the user wait for 10 mins on every zoom in and out) [and talking back and forth to an iframe WHAT!]. And then this whole app had a Shopify plugin, an open to the public site with lists and filters of publicly available shops (Gatsby.js) and a couple more projects were in the pipeline… That’s a mess (!)… if you approach it with the wrong strategy and structure… But not us!
You see, all of those projects had one thing in common - React. And the main challenge was to maintain the same brand feel and user experience across all those apps. How do we do that? A well-documented Design System, a monorepo, and requirements trimming and grooming to keep the new features coming every goddamn day! 🔥
You know when users submit contact forms, where does the email go if you have 5 people that could look into the issue?
Well, how about we create a custom flow with a help desk SaaS, it can fit your whole team there! Once the issue is resolved, we'll create a custom webhook integration into our CRM, and save that user for later in case we wanna reach out to them at some point in the future.
Don't forget to webhook it to our “customer success” documentation to document the case for future references, in case we have to deal with that again.
There are all sorts of integrations you could do with already existing tools OR even the ones that you created yourself that would improve processes within your organization. You can come up with a bunch of serverless functions that could make someone’s job easier and more pleasant!
Zapier got nothing on me!
That's one of the main reasons why companies have hackathons (I think??). Imagine making your product better by creating a new feature or some sort of an extension that no one ever even thought about! Like that company that created super realistic human behaviour to be used in a fire safety analysis but was so unaffordable to the main target audience that they eventually had to pivot and started using it in Hollywood movies instead, creating mass crowds.
A lot of cool things came out of hackathons! I mean, not sure about that particular startup that I’ve mentioned but you get the gist.
OR! You know what, I bet you can write a bot that could do someone's job as a whole! Talking about robots taking over our jobs...
I have absolutely no idea what's happening in this space. I just felt like mentioning it.
Anyway, those are just some on top of my head. And all of those are, let’s call them, “horizontal” challenges. Meaning something we can come up with for us, the front-end guys.
You can also go “vertical”, i.e. start digging the back-end, databases, services, etc. if you feel like it, but I’m not good enough with the back-end to come up with particular challenges there. Any backend work is a challenge for me. 🤷♂️
So… yeah… that’s what I’ve been thinking about lately. How’s your work so far? Challenged enough? Pushing yourself to the limits? Getting out of that comfort zone of yours?
Let me know what you'd add to the list from your own perspective. 🙂