I was not destined to become a Shiny developer, NOT AT ALL.
And yet… here I am. It’s been a few months since I joined Data Champ’s team, and Shiny has become part of my daily life.
Actually, I originally worked in oceanography. Basically, I spent my time studying fish. I was doing water quality analyses, working on aquatic ecology projects, etc. I wasn’t writing a single line of code.
Until the day…
I discovered R.
First, it was for data analysis. It was amazing how R allowed me to do so much more!
But it was Shiny that really blew my mind.
That’s when I started transforming my boring analysis into really cool interactive tools. I became passionate about the technology, and I worked on projects with several institutions, like CNRS, Ifremer, Toulouse Hospital, and then Toulouse Métropole.
I was making my little Shiny apps here and there, and then… I saw that Data Champ’ was hiring.
I went for it.
I thought to myself: “This is it, you’re ready to play in the big league, you need to take the leap.”
For me, joining Data Champ’ meant stopping making small apps on my own and joining real R and Shiny pros, learning from them, and progressing truly.
It was exactly what I needed.
The Beginning of the Struggle
Except that joining Data Champ wasn’t easy AT ALL.
I’ve had several interviews, made it to the end of the process and… I wasn’t selected. I was obviously disappointed, and I was far from imagining that the person who was hired would become my colleague just a few months later.
Well, never mind. At least I had tried.
I finally joined a company as an analyst-developer.
I was happy: The field was interesting, it was a permanent contract, I would finally be able to spend my days coding in R, and it was close to home!
And THEN, just as I’m starting this new job, Charles contacts me again. He tells me that Data Champ needs to keep growing and he wants to hire me.
🙄
I’m obviously disappointed, but well, I’ve just started at my new company so it’s a bit awkward to just go backwards. I want to give a chance to the one who gave me my chance, it’s only fair. So yeah, thanks but no thanks, Charles.
Except… there was a slight problem.
Week after week, I don’t touch a single line of R code. All day long I’m asked to do data extractions with PowerBI and send Excel files.
Sure, it was easy, but it was the ultimate boring job. And above all, it wasn’t at all what I had been promised.
And it goes on…
All the summer…
And then I can’t take it anymore. I’m bursting. I’m even more disgusted about saying no to Charles.
Hell’s timing…
I have nothing to lose, so I gather my courage, contact him again and then…
… HE SAYS YES!
Actually nothing happened during the summer, so his offer is still valid, and it’s all good. I can hardly believe it but I’m so happy. We meet one more time to discuss the details and set a start date. On my hand, I end my probation period, and all I have to do is wait until October 7th.
The hardest part was over.
Well… that’s what I thought.
The Struggle Wasn’t Over
The first days were pretty hard.
I came in thinking I had a good level (after all, I had been selected), I was going to be able to settle in smoothly.
Hm… Nope.
Well, the first week was okay. I receive my welcome booklet, test my access, discover the internal tools, how the company works. So far, so good.
And then they show me the ongoing projects.
And there…
I wasn’t expecting that. I discover huge projects like I’d never seen before in Shiny. On one side, a planning tool for construction. On the other side, a HR management app with tons of subtleties to consider.
I’d barely scratched the surface of what was possible with Shiny.
Bye bye crappy dashboards with a section where you filter your variables and a screen where you observe your data.
I realize that Shiny isn’t just R. It’s a mix of several technologies (HTML, CSS, JS, etc.) that allow you to create really complete tools.
That’s when I start to understand.
I understand what Data Champ is, I understand what Shiny is.
Here we offer real complex tools to meet very specific client needs.
Except that… I wasn’t sure I knew how to do that…
But no time to think, you have to get on board quickly. And that’s when it gets rough.
Week 2: To familiarize myself with a project, Charles asks me to create unit tests.
😲
But I’ve never written unit tests before.
No problem. Charles gave me some advice, links to read, did some small demos, and well…
I had to dive in.
So I struggled. I spent hours fumbling around, tinkering with testthat
and shinytest2
, digging through the DOM like an archaeologist…
And at the end, well, it worked out pretty well.
It wasn’t actually so complicated. Once I understood the method, and had someone to support me.
And that, honestly, made all the difference. In the following weeks, I had other struggles. But each time, I had someone there to explain, guide me, and answer my questions if needed.
A few weeks later, I particularly remember one HORRIBLE Monday. Right when Charles was on vacation.
I had picked up a ticket on a twisted project. Objective: Set up a caching system to speed up the app’s display.
Overall, it was simple, and Charles had explained to me how to set it up in broad strokes before leaving.
Except that in reality, I hit a wall…
First, working on code you haven’t written yourself isn’t easy. But here, it was worse: I was encountering functions I’d never seen before, the app’s logic was weird, and I wasn’t even sure I properly understood what the app was for.
All day long, I tinkered with things, it kept crashing, I wrote code then erased it. Nothing was working.
I didn’t understand anything I was doing.
By the end of the day, I was exhausted.
And above all, that’s when I started to have serious doubts. Did I really have a place at Data Champ? Was I really up to it?
My wife saw it right away when she came home, I was at the end of my rope. It kept me up all night. And then the next day, it was back on.
I wasn’t discouraged. I was determined. I wanted to show that I was CAPABLE.
And in the end… I finally found it.
A tiny piece of code that unlocked everything. Look at this ridiculous piece of code that caused me so much pain:
filepath <- file.path(Sys.getenv("CACHE_DIR"), paste0(current_id_with_ns, ".rds"))
if (file.exists(filepath)) {
ui <- readRDS(filepath)
} else {
ui <- synthese_section_ui(
id = current_id_with_ns,
data = data
)
saveRDS(ui, file = filepath)
}
But I was so happy to have figured it out.
So I finished my day at 3 PM because I deserved it.
The first weeks were just like that. A roller coaster.
Challenges, frustrations, small victories. Nothing was simple. But with each small victory, first I was super happy, but I also realized I was learning so much.
And above all…
The Struggle But Not Alone
I wasn’t alone.
Honestly, when you’re alone facing your screen, stuck on a bug that’s driving you crazy, when apparently no one else on the internet has the same bug as you… it’s hard.
And there, having a team changes everything.
On one side there’s Charles who comes up with clear explanations.
On the other side there’s Marc-Aurèle who gives you a tip like “Here, this will change your life.”
There’s always someone to lend a hand.
We had a project where we needed to calculate mobility indicators, and the team was busy with public transport data. Basically, we had to gather files from several hundred different sources, supposedly following a standard format (but actually not at all).
Normally it was Marc-Aurèle’s job, except he was swamped with several other projects.
So I helped him out.
But what a mess I got myself into…
I spent hours on it, I couldn’t see how I was going to get through it.
At one point I called Marc-Aurèle, not even for help, I just needed to breathe, to complain about how hellish it was.
And he, calmly, with Olympic composure, says to me: “Oh don’t worry, we’ll find a solution. Let’s organize a brainstorming session with the whole team”
😲
I wasn’t expecting that at all.
Let’s go! The next day we all get together, and everyone pitches in, throws ideas around, asks questions, proposes solutions.
It wasn’t just my problem anymore, it was the whole team’s problem.
And suddenly, we find THE solution.
The data is harmonized, the processing works perfectly, and with just a couple of adjustments, we can output our indicators.
Awesome.
What’s Next?
So yes, it hasn’t been easy. Actually, it’s still not easy. But it’s getting better. Much better.
Now I juggle between several projects. Nothing huge yet, I haven’t had to manage a project from A to Z.
But I’m adapting to Data Champ’s reality. I’m adapting to the expectations, the quality requirements, the small details that make all the difference.
And above all, I’m learning so much.
Each ticket I’m given isn’t just a task I check off and that’s it.
No.
Each time it’s a new opportunity to discover best practices, improve my code, level up my skills.
It’s almost like a mini-training each time.
Now, I want to go further.
My next challenge: Putting some order in project management.
Nothing too rigid. Just to be more fluid, to know who’s doing what at any time, where we are, and especially not to waste time looking for information.
I’ve already put in place some simple but effective systems and processes that are already helping the team: better coordination, simplified follow-up with clients, and even cleaner deliverables.
Now that I’ve gotten past the initial struggle, I feel ready to bring something new to the team.
For me, it’s a way to ensure that I bring real added value to the team, to the projects…
And most importantly…
to the clients!
Comments