From college to code: My journey as a junior developer

From college to code: My journey as a junior developer

In my first weeks as a junior developer, I quickly learned that the gap between university and the real world is wider than I expected. The most surprising part? How much I didn’t know about how production enterprise applications truly work.

When I started at Nutrient, I was both excited and nervous: This was my first job out of college. Before graduating from Arizona State University with a Computer Science degree, I began as an intern, and after graduating, I transitioned to a junior developer, beginning in January 2024. The shift from academia to the professional world turned out to be full of surprises and valuable lessons.

The unexpected reality of software engineering

One of the most surprising things about starting my job at Nutrient was the realization that school didn’t quite prepare me for the day-to-day challenges and nuances of software engineering. Don’t get me wrong — my degree provided a solid foundation. But the real-world application of that knowledge was a whole different ballgame.

For instance, I remember the first time I saw the inner workings of a software system. It was like seeing the curtain behind the curtain. Suddenly, every website I visited or every app I used became a puzzle I could try to solve. I found myself thinking, “Oh, this is how they implemented that,” or “I wonder what kind of architecture they used.” It’s a surreal feeling — almost like gaining a superpower to understand the digital world around me.

This shift in perspective didn’t happen overnight though. It was a gradual process, and I can trace it back to the time when I started my internship. Before that, I was working at a restaurant, and I would often look at their point-of-sale system with a mix of curiosity and bewilderment. I thought, “How could I ever figure out how this works? It must be incredibly complex.” But now, I realize it’s actually quite simple compared to the systems I work on daily.

The turning point for me came later in my degree, as the result of a shift in my learning from fundamentals of programming to web development. There was a moment where everything just clicked. It was like a lightbulb went off, and I suddenly understood the bigger picture. This moment was crucial because it gave me the confidence to tackle more complex problems and to see the potential in the systems I was working on.

Embracing the learning curve

Back when I started my internship, in 2023, it was before Integrify — now Workflow Automation Platform — was acquired by Nutrient (formerly PSPDFKit). And then after graduation, when I came on as a junior developer, I knew there would be a steep learning curve. But the support I received from my colleagues and the resources available at Nutrient made the transition smoother than I expected. I was able to dive into projects and learn by doing, which is the best way to grow as an engineer.

While the benefits of a casual and supportive environment are great, especially if you don’t like being micromanaged, remote work can sometimes be challenging. For those prone to self-doubt, any unexpected issues can add stress. For example, if something takes me away from work and I need to communicate it to my boss, it can feel like I’m under a microscope, or even make me anxious, as I feel the pressure to constantly be productive. Of course, we all experience those days when it feels like we’ve made no progress, and the temptation to always show something tangible can be overwhelming. But the reality is, sometimes you hit roadblocks. You can spend hours troubleshooting, and suddenly, the day is over. It’s frustrating, but it’s part of the job.

Team structure and dynamics

Our team at Nutrient is small but mighty. We have three developers: Omar, Gerson, and myself. Omar is a senior developer, Gerson is a mid-level developer, and I’m the junior developer. Keith is our team manager, and Dan is the VP of Technology for Workflow Automation. We’re all full stack, meaning we don’t stick to just the backend or frontend. Each of us touches everything in the codebase and works on various parts of the system.

That said, while I’m comfortable with both frontend and backend development, I’ve found that frontend work is more fulfilling for me. When I work on a backend project for a month, the only thing to look at at the end of the day is some output in Postman or container logs. It’s technical and important, but it doesn’t have the same immediate visual impact.

On the other hand, with frontend development, you can pull up the website and show someone what you’ve built. They can start playing with it, and it’s incredibly satisfying to see your work in action.

A typical day at Nutrient

A typical day at Nutrient starts with waking up and checking my emails and Slack messages to see if there are any urgent updates or tasks. I usually have a morning standup meeting with my team, where we discuss our progress and any roadblocks, and plan our day. This is a great way to stay aligned and ensure everyone is on the same page.

After the standup, I dive into my tasks. These can range from fixing bugs to implementing new features. I often work on frontend tasks, which I find more engaging and rewarding. If I hit a roadblock, I don’t hesitate to reach out to my team for help. We have a very collaborative environment, and everyone is always willing to lend a hand.

I’ll take a lunch break or a short break to recharge, and then I continue working on my tasks. Once I finish a task, I move on to the next one.

If I get stuck on a problem, my first instinct is to reach out to someone on Slack. Omar, Keith, and Gerson are always available to help, and they’ve been invaluable resources. However, in recent times, AI has become a go-to tool for many of us. The first thing you do is ask AI, and it can often provide a quick solution — or at least point you in the right direction.

That said, I’m not entirely on board with the idea of always coding with AI. Sometimes, it can make work harder than it needs to be. AI tends to start hallucinating and creating random features that don’t align with a project’s goals. I’ve found it’s better to use AI to plan what you’re going to do in your project or task, rather than letting it take over the entire process.

The acquisition and its impact

After Integrify was acquired, not much changed initially for my team. We were still using our app and maintaining it in the same way. The first major project we started working on was creating a new task type and integrating the SDK into the app to view files. This project went relatively smoothly, but it did come with its own set of complications, especially at the scale we were trying to achieve.

However, most of the significant changes have occurred over the past six months. We’re now using Baseline UI and React for newer portions of the app, and we’re planning to migrate to React for the frontend. This aligns with the rest of the company, which primarily uses React for frontend development. The transition has been necessary to keep up with modern web development practices and to move away from legacy versions of technologies that Workflow Automation was built with, like Vue, and even some old Angular code.

I wasn’t familiar with React before starting this job, so I admit it’s been a bit of a learning curve, but not an insurmountable one. The key has been getting really familiar with the technology and understanding how to work with it. React’s state management and functional components are quite different from what I was used to in Vue. My school focused mainly on computer science fundamentals, like C++, C#, and Java. When I started at Nutrient, the app was primarily written with Vue, which is very straightforward and readable. If you know HTML, JavaScript, and CSS, you can easily figure out a Vue component.

React, on the other hand, has a lot of internal conventions and a more complex component lifecycle when compared to Vue. There’s a lot of boilerplate, and there are specific ways to manage state and handle events. For example, in Vue, you have clear component hooks, and the component exists and reacts to changes. In React, you have to manage state and rerendering more explicitly, which can be a bit more challenging. I wouldn’t say I’m super comfortable with React yet, but I’m getting there. I feel a lot more confident now than I did when I first started.

Tackling challenges, impactful projects

Over the past year, since the acquisition, we’ve been integrating the Web SDK and Document Engine into our app. This has involved a lot of work with file permissions, editing, and version control. The goal is to allow users to view, edit, and save files within the workflow app, and to ensure these files are appropriately versioned and can be updated in the future.

Another significant project has been the new signature task type in the workflow app. This isn’t a traditional task, as it involves getting external users to sign documents. It’s more of an integration problem, and it can be tedious to work around the existing workflow structure. However, it’s not the most technically challenging problem I’ve faced.

From guesswork to clarity: The impact of a dedicated design team

One of the biggest challenges I faced in the past was dealing with the design of things. Before the acquisition, I was mainly given a feature set and a description of the task without a design. I had to figure out the user interface (UI) and user experience (UX) on my own. This often led to a lot of guesswork and wasted time, where I’d worry about minor details like the difference of 2 pixels of margin.

Having a dedicated Design team has changed everything. They provide specific designs and specifications, which takes a whole layer of stress and doubt out of the process. It’s much more straightforward to implement a feature when you have a clear visual and functional spec. For instance, when working on the notification center in the workflow app, I had to create a UI that was a bit different from the traditional table we had, and that was before we had a design team. In hindsight, having the input of a design team would have been invaluable.

The notification center UI

On that note, one of the most significant projects I’ve worked on thus far was the development of the notification center UI. This feature was crucial for improving user engagement by providing a centralized hub for all notifications, ensuring our users stay informed about important updates and alerts. The notification center needed to be intuitive, user-friendly, and visually appealing, which presented a unique set of challenges.

Once it was finished, it was well-received by both internal stakeholders and end users. The praise I received from my colleagues and the positive user feedback were incredibly motivating. They reminded me that the work we do has a real impact on people’s lives, and that’s what makes it all worthwhile.

Advice for new developers

If I could give advice to someone starting out in a role like mine, or to my past self, it would be to research, learn, and try things out without overthinking. It’s easy to get caught in the trap of trying to plan or think about so many different things that you don’t actually make progress on what you’re working on. Once you start, don’t overcomplicate it. At the end of the day, most of what you’re doing in web development is working with simple CRUD (Create, Read, Update, Delete) operations.

Conclusion

Reflecting on my first year as a junior developer at Nutrient, it’s clear that the transition from academia to the real world is a continuous learning journey. The challenges, big and small, have been both humbling and rewarding. From learning new technologies like React, to collaborating with a talented team, I’ve grown as a developer and as a problem-solver. Most importantly, I’ve learned that software development isn’t just about coding; it’s about adaptability, collaboration, and finding creative solutions to the ever-evolving challenges we face.

Looking ahead, I’m excited to continue refining my skills and growing into a more experienced developer. Whether it’s tackling complex projects or discovering new ways to improve our workflows, the road ahead is full of opportunity. For anyone starting their journey in development, my advice is simple: Embrace the learning curve, don’t be afraid to ask for help, and most importantly, keep pushing forward — progress often comes in unexpected ways.

Michael Del Regno

Michael Del Regno

Junior Software Developer

Michael joined Nutrient as a junior software developer in March 2023 as a part of Integrify. He loves dissecting code and bug fixing. Outside of developing, he enjoys audiobooks, video games, and films.

Explore related topics

FREE TRIAL Ready to get started?