In this blog post, where we're diving deep into the world of software development here at Fondion! If you're a developer looking to join our team, or simply curious about what it's like to work with us, this post is 100 % for you.
If you’re looking for a fresh opportunity, check out our open developer positions here! >>
We've had the privilege of interviewing two of our current developers, Kenny Heinonen and Pourya Delnavaz. They've been kind enough to share their experiences and insights about working at Fondion, shedding light on the culture, tech stack, ways of working and challenges that come with being a part of our team.
So, sit back, grab a cup of coffee, and get ready to discover the inner workings of Fondion from those who know it best!
12 questions and answers about software development at Fondion
#1 What were your key considerations when deciding to join Fondion? Why did you choose this startup in particular?
P: The opportunity to work on a project that addresses real-world issues was really appealing to me. I enjoy creating solutions for everyday problems that people face, making their lives easier. Fondion does exactly this, especially in the construction industry, which I find interesting.
K: Absolutely, the opportunity to work on a project that simplifies people's lives was a major factor for me as well. Apart from that, I was particularly drawn to the tech stack. My focus is primarily on Python and JavaScript, and Fondion provided the chance to work on both backend and frontend which I found intriguing. Another appealing aspect about the company is its flexibility. There’s a prevailing trust in the team to get their jobs done without constant monitoring.
#2 Could you give us an overview of the tech stack you’re utilizing at Fondion?
P: Certainly. We use the latest version of React for our frontend. For the backend, we employ the newest version of FAST API, which is built on Python.We're also using TypeScript on the frontend and mypy on the backend to add type safety to both JavaScript and Python. So, both our front and back ends are type safe.
In terms of infrastructure, we rely on AWS S3 for file storage, and our web server runs on AWS ec2 as well. Our infrastructure defined in code (IaC) using Terraform, and we primarily use trunk-based development in our daily operations. As for our repository, we currently utilize GitLab, but we have plans to migrate to GitHub in March 2024.
We have a CI/CD pipeline that runs our automated tests (unit, integration and e2e), runs migrations and collects test coverage, and our production deployment is also automated, albeit with human approval needed at this stage. Lastly, we're in the process of building our end-to-end tests using Playwright, a test framework. We are in the process of configuring and starting to use it. We're configuring it now and plan to use it soon for our e2e and integration test framework.
K: That was quite thorough! To add a bit about our frontend, we use Material UI as our component library.
#3 Could you describe the development process at Fondion? How do you manage project planning and execution?
K: When it comes to the development process, for larger projects, we typically have meetings where we plan out the specifics, or the Product team or Product owners Jarmo or Peeter may have already compiled a specification detailing what we aim to achieve, how to go about it, and the reasons behind it. However, there is room for discussion and input from the team!
While there are certain guidelines on how to proceed, individuals assigned to a project have the flexibility to decide on the finer details of implementation. This approach is especially applicable to bigger features.
P: We usually structure our projects based on epics. The product team, including the product owners, outline the scope and acceptance criteria, after which the tech lead reviews the definition and creates smaller tickets prior to the kickoff meeting.
During the kickoff meeting, we discuss the project or epic in detail, add more tickets, and make estimates based on these tickets. Each epic typically has assignees who begin work on it. Recently, we've started creating a dedicated Slack channel for each of our epics. This allows those involved in the epic to freely discuss, ask questions, and share updates.
#4 How would you define technical debt at Fondion? What impact does it have on your work as a developer?
K: When I joined, I knew there was some technical debt. From my perspective, there was quite a bit more than expected. I've spent a good amount of time refactoring and rewriting old implementations, which has been interesting. It can slow things down, especially when the project structure gets confusing. It can be tricky to find where to make changes or track down a bug. But this year, we're focusing on rewriting a lot of stuff, which is positive.
P: To add to that, we've decided to prioritize our customers when we're reworking and refactoring this year. So even though they might not see the immediate effects, they will benefit in the end.
K: We do have a good amount of technical debt, but it's not overly complex. We have a clear plan to improve things. It's a straightforward strategy to enhance our systems.
#5 Fondion seems to be putting a lot of emphasis on addressing technical debt right now. Can you elaborate on how we’re tackling this?
P: Our main plan is to eliminate our boilerplate code, so we don't end up writing the same stuff again and again. This is a huge help for developers – we can generate maybe hundreds of lines of boilerplate code at a time. Another part of our plan is to review the usage of our legacy code. We're starting to develop version 2, 3, and more of our endpoints, but we still have a lot of legacy endpoints in use. By the end of the year, we plan not to use them anymore, both on the front and backend.
#6 How are decisions about new technologies or changes to the tech stack made?
P: Kenny recently went through this process, he can share more about it!
K: For example, on the frontend, we had an outdated library. The decision to switch was based on several factors – the new library was in active development, had a larger user base which usually means more long-term support, and wouldn't end up being outdated soon. Another important aspect was the ease of use for the team.
P: But generally, the decision really depends on how big of a job it is or how critical it is. If it's important, we'll do it eventually. We usually discuss it in our dev channel on Slack or in our meetings. If needed, we create proof of concepts for things we want to introduce to the repository. Once we get approval, we're good to go.
K: We also maintain an architectural decision log where we record the options we considered, their pros and cons, and why we chose a particular option. This way, all our decisions are documented and can be referenced in the future.
#7 Can you share some of the most challenging problems you've had to solve as a developer at Fondion?
P: Certainly, there are many challenges that come with the territory. One of the first things that comes to mind is optimizing some endpoints. We have some queries running on our database that can be slower than usual, so we need to optimize them. It can be quite a challenge at times.
K: I haven't been here for very long, so I haven't encountered too many challenging problems yet. Mostly, I've been dealing with fun tasks, which has made my time here enjoyable.
#8 Kenny, can you share your recent onboarding experience at Fondion? How has been your journey so far?
K: I joined Fondion in January 2024, so it's been almost two months now. I've been coding for 9 years and I prefer product development over agency work because I like to work on the same project for a long time with the same team.
I've really enjoyed my time here at Fondion. The onboarding process hasn’t been too heavy. On my first few days, I was already writing code and making merge requests. This was quite different from my last company where it took me about 1 month before I actually started doing anything.
My manager, Kimi, gave me some easy tickets to start with, like minor bugs etc. It was a nice start. I spent most of my time reading code, doing bug fixes, and rewriting old code.
Last week, I started working on my first actual project – a new feature related to VAT rates. I'm slowly but surely starting to work on new features on the software. So far, it's been a great learning experience and I'm looking forward to contributing more to the team and the project!
#9 How does Fondion support the professional growth and learning of its developers?
P: We’re encouraged to try new things, new libraries, and new frameworks. This not only helps with personal growth but also keeps us updated with the latest technologies. We allocate time for learning and experimentation. Additionally, we have a 'tips and tricks' channel on Slack where team members share about new technologies or methodologies they've learned.
K: There are several technologies that I wasn’t already familiar with, like TypeScript on the frontend and Fast API on the backend, which are widely used. Learning these has contributed to my professional growth. I've also been given a lot of responsibility here. For example, when I questioned why we were still using an outdated library, Kimi, my manager, encouraged me to take the initiative to switch it to something else. It's great to work in an environment where your opinions are respected and you're encouraged to improve things.
#10 How do you feel about the domain – helping companies in the construction industry specifically?
P: Fondion is genuinely making a significant difference for construction companies, particularly in cost estimation and budget planning. We're developing features that calculate costs, create new estimated budgets, and provide pricing information, which gives our clients a clearer outlook for the future. We've recently introduced a pilot cash flow feature that also offers valuable insights to our customers.
K: Honestly, the construction industry is not typically seen as a 'sexy' industry. Last year, I worked in the real estate domain, which felt more personal and interesting because I've bought an apartment myself. That experience resonated with me on a personal level. In contrast, I don't have much knowledge about the construction industry just yet!
#11 How does working at Fondion impact your personal financial security, especially considering it's a startup in the construction industry? This might be something our audience is curious about.
P: In my experience at Fondion, I've found that our product has the potential to thrive even when the market faces a downturn! Customers look for effective business management solutions during tight markets, making our services crucial. It hasn't been as challenging for us as one might imagine. In fact, I've come to find startups generally more stable than larger corporations right now, which are more prone to layoffs. Since joining Fondion, I've found it to have a strong financial backbone.
K: After my previous startup employer went bankrupt, I was understandably cautious. It was imperative for me to find a company that was financially stable. I was convinced that Fondion fit the bill and thus far, I haven't had any reason to doubt that decision.
#12 If someone is considering joining Fondion's tech team, what advice would you give them?
K&P: “Please join Fondion’s tech team! 🥰”
P: “If you love solving real-world problems and making a significant impact, I encourage you to join our tech team at Fondion. We value innovative thinking and proactive problem-solving to create meaningful solutions!”
If you’re looking for a fresh opportunity, check out our open developer positions here! >>