"You don't have the experience we are looking for"

Posted on Thu 09 June 2022 in IT, personal, meta

Now that I am looking to transition from my academia + freelance jobs into an industry full time employment, my applications are sometimes left dangling, if not upright rejected from the beginning. When pressed for feedback, some companies have told me that I lacked the experience they were looking for, or that I lacked some keywords in my CV.

In the last 10 years, my job has literally been to jump into projects I knew little about, spend a few weeks immersing myself in them, and then start contributing to them. Anybody saying that lack of AWS experience is blocking… bear with me.

I got into programming when I was ~ 12, to automate my math homework. At the end of middle school I had a nice suite of scripts to tell whether a number was prime, to find a number's divisors and factorization, etc. I was close to writing my own equations solver. I then got into web development with another teenager I met while writing tech articles, and we started developing web apps in a time when CMS where almost not a thing yet; when you had to escape SQL queries yourself. My oldest "big" project dates back to 2009. I then used my web development experience to get into WordPress plugin development. To date, I have developed 20+ WP plugins. One of them, Post Pay Counter, is still alive after 10+ years, has undergone significant rewrites throughout its life, and consists of an ecosystem of a dozen paid addons. I did the marketing. I set up and manage the server. I put up an ecommerce and created a custom licensing system that integrates with it. I wrote all the documentation. I tackled over a thousand support tickets. I did custom implementations for customers who had specific requirements. I dealt with Google, Facebook and PayPal's API. I literally built a product that is in use in over 75 countries and has a 4.9-out-of-5 average rating, entirely from scratch.

If this hasn't taught me something about designing a large system and touching all stages of product development, I don't know what it ever will.

In my own projects, I could not ignore any mistake I made, and I quickly learnt that any shortcut I would take would only come at my own future expense. I have had to deal with my own mistakes or shortcuts, in a way that few people are forced to do. I had nobody else to blame; and even when I had, it was still me who had to fix the issue. If you work for a company and leave it after a couple years, the long-term quality of your work doesn't really affect you. If I was "quick and dirty" on something, it was me who would have to re-implement the feature two years down the line, write a migration routine to address the data structure change, and hope nothing would break. I quickly developed a feel for how customers would respond to features or changes since I was also doing customer support, and every major issue coming from customers was my issue – I couldn't simply forward it to the engineering team and forget about it.

If this hasn't taught me to own a product, to own an issue, and to take responsibility, I don't know what it ever will.

All of this happened during my senior years of high school and my bachelor in mathematics, two of the most intense periods of my life. During that time, I was also editor of the school magazine, won public speaking contests, and started an educational no-profit. On top of that, my study program was one of the most technical and varied I could find: I would be studying algebraic topology in the morning, and statistical methods in the afternoon; the semester afterwards, it would be numerical analysis and functional analysis. I literally jumped from one topics to another far away.

If this hasn't taught me something about prioritizing tasks and staying on top of everything, I don't know what it ever will.

In the summer in-between my computer science master's years, I used my web+WordPress knowledge to land an internship @ Automattic VIP. I knew I had got into the oldest and largest company doing WP development, and I was immediately self-conscious about how to prove my worth. To them, and to myself. As interns, we were given a lot of freedom in the direction we wanted to take. I explored their GitHub repos and started contributing to them. In the end, I basically took apart one of their products and submitted over a ten of PRs, either fixing issues and implementing entire new features, sometimes rewriting old logic. By the end of my time there, I was rated among the experts on that product. I also interacted with customers and I contributed to more than 5 projects during my time there, and interacted with a lot of awesome and knowledgeable people, some of whom I am still in touch with. During half of my internship, I was even traveling in Ireland. It was the first time I was formally employed in a company, and within 3 months I was offered a part-time position alongside my studies – I did not take it, both to quickly finish off studying and to explore other opportunities.

If this hasn't taught me something about coming onboard of existing projects and meaningfully contributing to them, I don't know what it ever will.

To complete my master's, I did research work in cryptography. While I didn't care too much for the academic research part, I loved the thrill of stepping yet again in an unexplored area and immersing myself in it. I picked up a thick book and read it basically cover to cover, often looking up additional material. Within a couple months, I was asking my advisor questions he couldn't answer. It turns out nobody in academia cares for why a hard problem is hard: you cannot prove why it is hard anyway, so it is not an academically-worth spent of time. But I didn't care what academia valued or not, so I spent time on it on my own, and came up with what I found convincing explanations. My other advisor, who wasn't as academic, thought the explanations were wonderful.

If this hasn't taught me something about stepping into an unfamiliar field, quickly coming to speed and contributing, I don't know what it ever will.

I then landed a PhD position in a field that I was unfamiliar with, in a university and country I had absolutely no connection to. I moved to Stockholm and started doing computational fluid dynamics to predict ice and ocean behavior in fjords. I had never seen fluid dynamics equations in my life, and I had never solved a partial differential equation on a computer in my life, and my Python experience did not go beyond scripts for simple tasks. In a couple years, I created a Python package for ice-ocean simulations that, although unripe for realistic scenarios, is able to run simple cases. Meanwhile, tasked with teaching-assistant duties, I took on the unsolicited task of creating tools to coordinate the grading and send lab feedback to students. I shyly shared these scripts – they were appreciated to the point that they are now in use in the majority of courses the division holds. I always loved teaching and mentoring -I love helping somebody with their life journey-, and, besides my regular teaching duties, I took part in a research summer school for high students. For 2 years, I had a group of 10 students staying with me for 2 weeks for a project I had planned. I give them a tour of cryptography, from Rome's war times to WhatsApp end-to-end encryption. After the first iteration, the university-wide coordinator of the program came to me saying she had never received such positive feedback for the math projects from the students. The icing on the cake is that I even held lab sessions and wrote assignments in Swedish.

If this doesn't show that I can put all my skills to use even in entirely new contexts, I don't know what can.

I graduated from my master's at 24, but I started having paid projects some time around 17, and I taught myself how to code at 12. I never brag, and I don't enjoy just praising my own worth. But I find too many people are too quick to jump to stereotypical conclusions.

Freelance -> This guy can't work in teams.
Academia -> This guy is only good at theoretical work.
WordPress -> This guy can only do WordPress stuff.

I never fit the stereotype, and I never have in my life. "You don't strike me as a stereotypical Italian", "You don't strike me as a stereotypical mathematician", and "You don't strike me as a stereotypical computer scientist" are three of the most frequent things I've been told in the last three years.

My point is that I was not familiar fields/technologies before I started working with them, but this has hardly been an obstacle. I did not know WordPress, or cryptography, or fluid dynamics; and yet, here I am, being hired to manage WordPress servers, giving cryptography summer schools, and writing ice-ocean simulation frameworks. The fact that I don't know something has never stopped me from learning it. My whole career has been about learning new things.

It feels a bit odd when I find myself in conversations where, asked about AWS, I say I lack specific experience but that I have been managing servers for years and that I know what the cloud architecture looks like. To me it feels like a pool lifeguard applying for a sea lifeguard position and being told "So how do you feel about lifeguarding at the sea? I see you don't have specific experience." To which a natural answer would be "Is there something about the sea I am not aware of? Will I have to swim in 3 meters high lava waves?" Or like a skilled driver applying for a manual gears driving job being turned down cause he has driven automatic transmissions before. Is it now the skill of navigating traffic at rush hour far more important than gears experience, that can be picked up in a month? Of course there are always challenges in something new, and some learning is necessary, but a) skills are transferable; b) I find previous learning successes a much more reliable metric of future accomplishments. When you hire somebody, you hire a person, which is always much more/different than the sum of their tech skills.

That is why I find people treating me as a junior just because I formally graduated 3 years ago frankly insulting. Sure: I am under 30. Sure: no AWS experience. Sure: no 20 years Typescript experience. And so? You can be anything for a long time and still not be excellent at it – time is not a measure for anything. There is correlation with people having been in the industry for a long time and having excellent skills, but it doesn't necessarily apply in reverse. One mindful experience is much more valuable than 10 years of backseat experience. You can have been driving for 20 years and still be worried and anxious every time you sit in the driver's seat. You can have been in software for 10 years and still not be sure how all the parts go together. This is not to de-value anybody, but rather to point out that lack of experience in something doesn't really say much about the fitness of a candidate.

People who have started and driven their own projects are particularly desirable because they just could not rely on anybody else. Nobody else to blame, nobody else to call when they were stuck, nobody else to dump issues on. I know several people who went from their own companies into others' companies, and they are among the best team workers: they know what it takes to make something happen, they steer the discussion in meaningful directions, they forecast issues that are sometimes transparent to others. All this because as an individual doing software you have an enormous responsibility, and that can be of tremendous value to companies as well. This does not mean that we cannot collaborate with others. It only means that we have learnt to get by by ourselves and developed independence.