Freshcode
/
Podcast
/
Episode 12: It allows a small team to achieve really great goals
Clojure in Product.
Would you do it again?

It allows a small team to achieve really great goals, with Marcin Maicki, Dentons

Episode 12
January 28, 2026
56 min

In episode 12, we explore how Clojure thrives inside a global enterprise. Our guest, Marcin Maicki, Global Data Developer & Lead Developer at Dentons, one of the world's largest law firms, shares what it takes to keep a Clojure system secure, maintainable, and resilient in an environment dominated by C#, TypeScript, and corporate-standard tooling.

We discuss the realities of being a "Clojure island": integration challenges, tooling expectations, and the skepticism non-standard stacks often face. Marcin explains why security audits and dependency risks demand more attention than many assume, especially when handling sensitive data. He highlights how vulnerability scanning and external testing shape technical decisions, from retiring outdated libraries to reducing long-term maintenance risk.

We also explore the challenges of leading a small engineering team, such as keeping a 9-year-old codebase simple, resisting unnecessary complexity, sharing knowledge, and onboarding new Clojure developers. When asked if he'd choose Clojure again, Marcin offers a nuanced view: an assured "yes" for the right team and goals, and a measured "it depends" in larger organizations where staffing and standardization dominate.

Unlock Clojure Expertise

Schedule a 30-minute session with Vadym to discuss your Clojure
goals and challenges
Clojure logo
Vadym Kostiuk
Vadym Kostiuk
Clojure Partnerships
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.

<div class="heading_h4" style="grid-column: span 2; margin:15px 0">Introduction</div>

Vadym Kostiuk

So looking back, how has it ended up? Is it a more positive or a negative experience, and if so, it would be interesting to hear the details.

Marcin Maicki

We can do everything. We based our own connectivity on this one very neat library and this guy not being struck by a bus. Old but gold projects are dying out, and this feeling that I could write this highly optimized code right away was just amazing. One day I've heard that we are running something in Java and in AWS, not in Azure. They started scratching their heads about why. There are more important things, especially to customers, like, you know, one or five wasted minutes of looking into the function signature.

Artem Barmin 

Aren’t you afraid that every library in the Clojure ecosystem at some point will be abandoned? 

<div class="heading_h4" style="grid-column: span 2; margin:15px 0">The main part</div>

Artem Barmin

Hey everyone, welcome to the new episode of our podcast, “Clojure in Product: Would You Do it Again?”

Vadym Kostiuk

In this episode, we’ll explore how Clojure fits and thrives in large-scale organisations. Today's guest is Marcin Maicki who is a Global Data Developer and Lead Developer at the company called Dentons. It’s the world’s largest law firm. 

Artem Barmin

Marcin started his journey at Denton over six years ago learning Сlojure on a job and eventually taking over leadership of a next law referral network.

Vadym Kostiuk

It's the legal referral platform built with Clojure for the from the day one. And we'll dive into what it's like to maintain and evolve Clojure systems in a corporate environment dominated heavily by Microsoft’s tech, navigate through security audits, onboard non-Clojure engineers and, of course, how to keep the language thrive within a nine thousand person organisation.

Artem Barmin

So let’s begin map-over questions and macro-expand it into the real-life Clojure experience.

Vadym Kostiuk

Hello, hello Marcin. Thanks for joining us on our podcast, “Clojure in Product: Would You Do it Again?”

Artem Barmin 

Hello.

Marcin 

Hello, hello to everyone.

Vadym Kostiuk 

Yeah, it's nice to see you on our recording. And to begin, I suggest maybe just a few questions about yourself and your journey as an engineer, as a Clojure engineer in particular. So if you could please, can you tell us a bit about your background? Like you mentioned that you were learning Clojure while at Dentonsts and you were new to Clojure when you joined them. So can you please share your experience on this matter? How was it for you in Dentonsts? And yeah, is it generally a good experience for you?

Marcin 

Yeah, so it's actually a quite long journey. So I have started in Dentons six years ago as a junior web developer and Clojure was introduced to me by two excellent developers. One was, let's say the lead developer, the architect of the referral network that I am leading now. Second one was a senior Clojure engineer, like this guy was with Clojure from the very beginning of being of the language. And I had a React background. So while working with React, I was introduced to the concept of pure functions in general, you know, pure functional programming.<br/><br/>

And when I joined, those guys showed me a ClojureScript. And at the beginning, I was involved in writing ClojureScript. So it was very, very interesting concept where I saw that things from React that I have considered like the top level code with memoization, pure functions, it was already there. And this feeling that I could write this highly optimized code right away was just amazing. It was my first encounter with Lisp. So it was very, very different from what I was doing previously. So yeah, the syntax wasn't this scary. I was already familiar with concepts of LIPS as I started with programming when I was studying chemistry in the University of Łódź in Poland. One guy that I was living with inside the room was into IT and programming and he encountered some of the LIPS. And he showed me that and there was like this crazy book of Lisp or something like that. So yeah, it was quite long ago. But yeah, that's how I started. Since then, always, wherever I am, I'm trying to put this functional approach to problems and things that I've encountered in Clojure. Yeah, that's how it started.

Artem Barmin 

Interesting. Have you started from Clojure or ClojureScript?

Marcin 

I started with ClojureScript and then I was guided by my co-workers into Clojure. So it was a very good, you know, hints how I should proceed to learn the language itself, starting from the concepts that I'm not familiar with to the language and all this JVM ecosystem, interrupt with Java, working with databases. That was something new. I had some of, a little bit of full stack experience when I was working with React and my, let's say, unfinished little projects and where I was learning new concepts. yeah, that's how I ended in the Clojure ecosystem.

Vadym Kostiuk 

That's interesting, actually. Thank you. And I had a question about Dentons and Clojure. So it's one of the biggest law firms in the world. And it's interesting to hear how actually Clojure ended up there. Considering the size of Dentons, it's a niche language, pretty much. So maybe you heard anything from your coworkers or from the one who maybe introduced Clojure to Dentons. How’s it started?

Marcin 

Yeah, so it's quite interesting story because Dentons itself, it's a very large firm and long ago, before I have started, there was a need for the firm to grow and therefore the concept of next law and referral network arised and it was basically a venture of the, let's say, CEO senior project management where the firm needed to create an environment for lawyers to work closely together. It was quite separated from the rest of the firm and therefore there was an opportunity to pick something different than, you know, usually corporate languages like Java or C sharp or even, you know, TypeScript. So there was a place for Clojure as it was very expressive. This language is, you know, in general, very expressive. It allows a small team to achieve really great goals, in my opinion. And with a very small team, the initial team that has started the project that I'm currently maintaining, they were familiar to Clojure. So they, with very small capacity, they were able to achieve really big things. So that's how it ended up here. And yeah, it's, I know that this language isn't picked in firms of this size, there is from time to time a place for foreClojure might be found in really big firms. yeah, that's how it ended in Dentons.

Artem Barmin 

Do you know the story of how it started? Was there a discussion? Should we choose Clojure? Should we go with the Java? Do you know the history of this decision?

Marcin 

Oh, yes. It was quite simple, you know. So when I'm chatting with other developers or people in the firm and I'm saying things about Clojure, you know, I need to how to spell it, you know, what is this language? But after you mentioned that we have Java underneath, you know, we can do everything that Java offers, but quicker. And that's something that is very catchy.

Artem Barmin 

 I see, I see, very interesting. And can you tell a bit about the place of the Clojure right now in Dentos? So is it used in one project or it's kind of more broadly used in a company for other projects or subsystems?

Marcin 

Yeah, so right now it's, let's say, sitting in its own spot. So there is a delegated environment for the Clojure ecosystem that is running in Nexlo. So basically everything that was associated with Nexlo was intended to run on Clojure. And right now, it's own spot, sitting right there. And some of the services are integrated. We are opening some gateways for the APIs. So that's mainly it. I won't get into details, but right now it's quite enclosed with some connection endpoints available to the rest of the firm.

Artem Barmin 

So you don't know any other Clojure team inside the Dentonsts?

Marcin 

No, I'm quite alone with this technology in a firm. But when I'm showing some of the concepts of the language, everybody gets like the light bulb above their heads and they seem to find it really interesting.

Artem Barmin 

So we were talking about the history, how the Clojure ended up in Dentons. And to continue this question, it's really interesting about internal status of Clojure inside the company . So was it officially sanctioned by, I don't know, a CTO of a company to put this language into the stack? or it was kind of under a radar and only afterwards when everyone say so that it works okay and very good, it was sanctioned. So was the status changed over the time? That's interesting.

Marcin 

Well, I'm afraid that I wasn't at the very beginning and this knowledge was a little bit hidden from me. But from what I know, it was accepted by the global team. So it was conscious decision, and we had security checks, everything had to be in place. So yeah, was, from what I know, a very well-made decision at the very beginning.

Artem Barmin 

Very interesting to see the results of security checks of the Clojure. What kind of checks, what vulnerabilities. That's pretty interesting.

Vadym Kostiuk 

You said for the very beginning, so everyone was happy, but like looking back in the conversations with your colleagues, again, with those maybe who introduced Clojure to the Dentonst, maybe they shared any unexpected benefits or perhaps like drawbacks of using Clojure in, you know, in some time. So looking back how it's ended up, is it more positive or negative experience and if so it would be interesting to hear the details.

Marcin 

I think that in the process, while we needed to integrate a bit more into the corporate ecosystem, we started to find obstacles. So like from our end, was quite simple. It was just some coding with APIs. But there were issues with understanding from the other developer teams which were running mostly C# things or TypeScript Node servers. When they heard that we are running something in Java and in AWS, not in Azure, they started scratching their heads. Why? Why it's like that? In the process from a very happy lone island somewhere in the firm when there were need for integrations some cracks started to arise. So yeah, that's a general overview how it looks.

Artem Barmin 

And what kind of cracks? I'm curious because from my understanding, if you are only exposing the APIs, you can provide the documentation, maybe Swagger docs or just Google docs, I don't know. And that should be enough.

Marcin 

Yeah, mainly because of how to say that, not usual technologies that we use. So it wasn't mostly like coding or something like that, but from the project management perspective. yeah, we have like, you know, we have Metabase and why are you not using Power BI, for example? Those types of things and we were supposed to run Clojure stack but we already have something in place so it adds complexity to the general firm ecosystem.

Artem Barmin 

So have you provided some training about the Metabase? As I understand this is kind of a data analytics tool, not a developer's tool, yeah?

Marcin 

Yeah, so if somebody would like to see the data that we are working on, I need to give everybody a short tour around Metabase. So from a developer perspective, it's excellent, but it stills little amounts of everybody's time because people are already familiar with some technologies, you know, Power BI, other tech stacks running like .Net in in such a big corporate environment and suddenly you're being you know people that are in in business for 20 years or something like that are being introduced to very fresh new technologies and that they are not familiar with. And it's always something new and a call or one or two is needed for explanations what, where and why.

Artem Barmin 

I see, I see, very interesting. So it's kind of very isolated lake of Clojure inside the sea of the Dentons technologies.

Marcin 

Yeah, we can call it like that.

Artem Barmin 

Yeah, very interesting. Now, let's move more into the team and collaboration part of the podcast. So can you tell about the current role, what you are doing in Dentos? Do you have day-to-day hand coding sessions, something like this, or are you more managing the people?

Marcin 

So let's say it's a bit complex because in the last year I have changed my official title. So right now I'm a Global Data Developer in Dentons. I'm working mostly right now with PySpark and Databricks, doing operations on very large data sets. Yeah, that's what I'd mostly do right now. But at the same time, I'm also sharing the lead developer role for the Nextdoor referral network, which is the Clojure app that is running side by side with the whole Denton ecosystem. <br/><br/>

So in the referral network, since… Previously, it was very hard coding, let's say, let's call it. So a lot of coding, lot of also, I think, architecture. So AWS stuff, DevOps, that's what I was doing quite a lot. And with the Clojure part itself, it was a lot of pull requests, reviews, lot of changes done by myself to the, let's call, critical parts of the application. So that's how I was operating. And in the very beginning, it was mostly front-end related tasks. And after that, I had to really quickly jump into the backend stuff with Clojure. So yeah, it was quite a lot of coding and I think in the last two years it has mainly changed to reviewing pull requests, marking the direction for the others, so reviewing pull requests, structuring ideas for the new features, how they can be implemented. So yeah, that's, that's mostly it. <br/><br/>

And from the coding perspective, right now it's, I'm coding in, let's say in, different languages, but I'm still doing a lot of, a lot of pull requests, reviews in Clojure. Yeah, and also cooperation with business. That's mostly Tassel.ly developer.

Artem Barmin 

You mentioned that the size of a Clojure team originally was pretty lean. What is the current size of a Clojure team?

Marcin 

So currently it's me as lead developer one Clojure developer that is doing the hard work, let's call it. So yeah, this guy is also really cool. He joined us, let's say, middle developer fresh after let's say junior. And I think that project currently for him is a really nice sandbox for evolving his skills. that's how I'm viewing it. And in addition to that, have testers, automation and manual testers. We have also right now three DevOps guys. So yeah, that's how the team is structured right now.

Artem Barmin 

Three DevOps and one developer. Very interesting report.

Marcin 

Yeah, that's mostly because of the maturity of the referral network itself. We have delivered very cool features that required a lot of and a lot of Clojure coding for the past years. And right now, since the also objectives of the Dentons have shifted, we basically… Welll, it's not so easy.<br/><br/>

Actually, there's quite a lot of coding because, but for example, we are migrating to Rated from Composure API. So yeah, that's something new. We have to rebuild basically all our API. A lot definitely horrendous amount of work. So yeah, that's how it looks.

Artem Barmin 

And why you decided to migrate from Composure?

Marcin 

Well, I think actually I will start with the issue that in general the Clojure community has like the old but gold projects are dying out. So when I'm seeing that project isn't maintained for two years or that last patch was introduced year ago or that the team that is maintaining the library is shifting towards another project. I think that's a yellow light or in some cases a red light that we should make our make up our minds on what we need to do because some of the old projects have all dependencies and we know how it's with all dependencies when they are not maintained. that's basically the idea behind the migrations changes in our libraries.

Artem Barmin 

Is it kind of security implication for these changes?

Marcin 

Yes, this is security implication. That's the one thing. And the other thing is also developer experience as with the new, with, with new libraries, I'm seeing improved approach to some of the issues. So like, I don't know, Stuart Sierra component has evolved into Integrand, for example. So like this part, but mainly it's security from this perspective, it's definitely security.

Artem Barmin 

Very interesting because we've touched this question a lot in previous podcasts and it was never mentioned as a problem and it was mentioned like as a good thing. So it's not, know, it's kind of, it's done basically. This library is need, don't need to be changed at all. And you're saying about the security implication dependencies. Yeah. And it's pretty valid point. Very interesting. Do you have some security scanner in the system or maybe on the CI parts, the checking the dependencies.

Marcin 

So we have, I think it was Lane Ancient. So we have this in place, but we also from time to time have black box testing and white box testing from an external contractors that are trying to break stuff. And when they are scanning, like in the white box testing some of our dependencies, are... Basically, that when some senior manager gets a list with 10 critical severities from the NVD list, it gets nasty. And especially when you're running a law firm and handling sensitive data. It's important to keep everything secure. So we have those scans, I think, yearly right now. that's one of our main coding tasks. yeah, keeping things secure, especially that, you know, I think from what I'm seeing that the dangers that are hidden in the web and the new methods that are constantly being tried by malicious actors. Yeah, it's something that I think every everything needs to take care of because otherwise you end up like some vibe coded app spitting out thousands of personal data and then it's good to be a law firm because you have lawyers that might handle the lawsuit but yeah, it's better not to.

Artem Barmin 

Thanks, very interesting perspective. Probably first time I hear this kind of this point of view about the security. Aren't you afraid that every library in Clojure ecosystem at some time will be abandoned? Because I've seen a lot of kind of abandoned projects five years ago, last commits.

Marcin 

Yeah, that's something that I wouldn't like to see in the future. So fortunately, there is a Nubank team. There is also guys from Metosyn. So I think that because Clojure is widely adapted also in banking and fintechs. I think that we are good for some time. one thing is that it's very easy to write something in Lisp. Second thing is that when it gets to maintenance, you are getting into GitHub seeing that one maintainer. Imagine, we based our all-away connectivity on this one very neat library and this guy is being struck by a bus and you know, so that's another story. yeah, that's one of the things that makes me a bit nervous in like long lifespan of the application

Artem Barmin 

I'm curious, is this technical decisions pass some checklists from the, I don't know, procurement team, I don't know who is making the decisions? For example, one maintainer in the open source project should probably be forbidden.

Marcin 

Yeah, so in Next Lower For All Network, the decisions are not made by the stars from GitHub, but I would, for example, if I see guys like, know, from the Clojure Core team behind some of libraries, then I'm feeling comfortable with using it. So we are picking, let's say libraries that are battle tested and not like some time ago I was doing a little bit with machine learning with Clojure. I wanted to see how it works and there are cool libraries, but you know, there was one guy maintaining it and he was selling books for his library. So somebody, you know, makes a living off of it, it works well. But, you know, many things can happen when you have one king and ruler of some library.

Artem Barmin 

I heard the stories even about languages when one maintainer, there was a Haskell inspired language for the front end. I don't remember its name, but I heard the story that one maintainer decided to change the roadmap and the way the language works and it basically breaks and the community was disappointed. They created many forks, but no fork was elected as a new king, so it just disappeared. Yeah, yeah, I can understand. It's worrying.

Vadym Kostiuk 

And speaking of maintenance of the libraries, guess same applies to the team and to the maintenance of the project itself. And you mentioned that the team is not pretty big in terms of the Clojure engineers. However, at some point you probably have onboarded new people or will onboard new people. Can you maybe share in a few words, how do you do this? Like how do you ensure knowledge transfer? Maybe especially to the people who are our Clojure engineers. Yeah, just how do you handle the situation on the project?

Marcin 

So in situations where I do not have Clojure engineers, it's something that is really in front of me. So I need to show the project and the language and all the ecosystem to some of my friends from the global data services team that I'm currently in as we are sharing some of the responsibilities. So we are reducing the bus factor. So basically, think that the strongest part is to create docs, basically. So with descriptions of like fire emergency situations, like critical procedures, and so everybody can come in, run some CLI commands or change some of the code in critical part, for example, certificate and put an application up to the speed. So in general, sharing knowledge across teams are one hour every week for some period of time. And once you have, I think, experienced developers wrapping their mind around Clojure, especially if they were doing some functional stuff, for example, in JavaScript, they know the concepts of carrying, et cetera, et cetera. It's quite simple, actually. That's what I'm thinking. And with the new developers that I'm introducing, I think that I'm searching for a need to learn new stuff and not being discouraged because, like I have problems with parentheses, you know, it can be solved with one plugin into IDE. So that's how I'm perceiving it.<br/><br/>

I'm looking always when I'm showing this language or project to younger developers. I'm thinking how I started it. I wanted to learn, I wanted to learn new cool stuff and I'm searching for this in others.

Artem Barmin 

Interesting. Do you have some internal courses for Clojure? Kind of changing the stack? 

Marcin 

Honestly, no, I don't have nothing internal like courses. It's honestly, it's better to from my experience, better to meet and just point your finger at something that, you know, here is the part that you need to start from and you go up to the stack trace and you will find the root cause, you know, and how the application works. So I think that the interaction between people is much better than watching a YouTube video. So that's how, in my opinion, courses end up.

Artem Barmin 

I see. Yeah. Especially in ClojureScript, stack traces can be rather confusing. I remember using Async, Core.Async, and it was a really interesting experience to debug.

Marcin 

Yeah, you need to know how JavaScript works really, really well and how this whole loop of JavaScript events is being handled, cetera, and et cetera. Also React knowledge is really needed when you're working with Reagent.

Artem Barmin 

Yeah, that's true. And speaking about other parts of the systems, aside from Clojure, you already mentioned Metabase. And I'm curious, you use some Clojure-specific databases like Datomic, maybe XTDB, or something like this? And can you elaborate a bit more about the whole technical stack of the project? 

Marcin 

So technical stack, we have Postgres as our database. we are using, you know, I can fire up my ID and tell you more about dependencies if you would like to chat about the in general, I don't want to overshare. So we also have ElasticSearch underneath for indexing and handling the data, Reagent, Reframe. We had Composure for quite some time and then Composure 2.0 alpha, and now migrate it to React. And what do we have else there? You it's hard to this from out of memory, honestly.

Artem Barmin 

Yeah, frankly speaking, I think that's more than enough. You don't need to tell about all minor dependencies that you have. yeah.

Marcin 

Okay, that's cool. Also, I wouldn't get into details. yeah, that's mostly the app is, we always try to keep application really simple. you know, having a stack like Postgres Elastic and, you know, Clojure with some of the Java interrupts, and also we also have Material UI on the front end. So, yeah, that's mostly it. I think worth of mentioning.

Artem Barmin 

I see. Very interesting. And can you tell maybe about how do you keep the code base clean? How long the project exists actually?

Marcin 

So it's almost nine years. I think nine years. So cleanups. I remember this like blog post about a crooked tree that is growing in the mountains. So that's how it is with software projects that are running for multiple years. So It's like that, you know, this project needed to withstand multiple differing business requirements, shifts in strategies, in the shape of the team. So the cleanups, well, we are, I don't know how to tell that, you know, just through… Find the library, hit control F, replace everything with empty space and see what breaks them go after chase the rabbit, know, so until you eradicate the issue to the limits. So that's how the cleanups basically work, you know, so it requires a lot of work.<br/><br/>

But I think that the best example in such, you know, cleanup stuff is Facebook with PHP. They have chosen this technology at the very beginning and they decide we need to live with it. We've wrote so much stuff with PHP that we needed to write our own compiler. So that's how it is with, in my opinion, with software projects. If you decided to stick with something, the decision to just leave it alone and forget about it, know, it ends up with, in my opinion, more and more work than is necessary. you just need to, you know, hold your breath for a second when you're countered this awful function from this library that we should leave and eradicate two years ago, but there are more important things, especially to customers than one or five wasted minutes of looking into the function signature.

Artem Barmin 

Yeah, that's true, that's true. You know, from my experience, from what I've seen in some Clojure projects, especially that we built with a big team, with kind of turnaround, with the new guys coming in, and sometimes when they learn the Clojure, the power of Clojure, macros, some advanced stuff, they tend to over engineer things and to create accidental complexity in the system. So have you meet such situations in your practice?

Marcin 

Yeah, I think that it's when you will show macros to somebody, he will try to place them everywhere. When you will try to when somebody will see or is learning async, he will try to put async everywhere. So I think that the main goal is to keep everything as simple as possible. That's one of the most important parts of, I think, Clojure talks ever, simple made easy. So that's how I'm seeing it. <br/><br/>

But honestly, yeah, I think that I saw this practice where it's mostly related honestly to macros. When somebody sees macros, he's trying to find a place to put them. honestly, I am always trying to use functions in Clojure. If I can use a function, I'll use function. Macros are reserved for special use cases in my opinion. So yeah, that's that.

Artem Barmin 

I see. Maybe you can tell about some implications that were created by enterprise ecosystem that we are working in. maybe something that's best practice in the usual Clojure world are not applicable in the enterprise environment.

Marcin 

Hard to tell because in the referral network when I have started, we were operating quite like a startup. So we had startup ideas, more free will than you have in the enterprise where every decision needs to pass pace to roam with new technologies, new libraries. So I think that's the element that differs to structures, to organizations. So when I've shifted from the referral network and jumped into more structured corporate environment, it was, you know, a little bit frustrating for me to see that, you know, I need to wait for someone to create a resource group for me. And it was, my God, so much time, like I could done this by myself, like in minutes or whatever. And it takes, you know, much longer.<br/><br/>

But you know, we have the process. It was placed, the process was created for a reason. And, you know, for to prevent such developers as me to, you know, I have created like 10 resource group and this new Azure account is a mess. And, you know, it prevents you from, you know, doing like spawning some super GPU for hosting static websites. that's how it looks. So very different approaches to problems.

Artem Barmin 

Very interesting that, you know, this very isolated department in the technical sense. So you are talking about, know...

Marcin 

Yeah, so I don't want to get into politics, but I'm getting into that. In such big corporations, you can only imagine how such big corporations have different ventures, different departments, different offices, and in Dentons all of those offices have autonomy. So this is one of our main policies being polycentric. And that's how Dentons was growing for past years. We do not have like a single decisive center in the firm. Each office is capable of doing its own ventures if they find it necessary, useful or whatever. So like referral networks parked out of the global team, multiple regions in Dentons have their own ventures.

Vadym Kostiuk 

That's actually interesting, like having this decentralization within the team. 

Marcin 

Yeah, that makes Denton special as a firm. So yeah, it's one of, I think, very interesting things about this firm itself. So we do not have like Apple has Cupertino and there are just like everybody sits there and the decisions are flowing from there. It's very different in here.

Vadym Kostiuk 

Yeah, that's, I guess it's really interesting, like working in such a, in such a team. yeah. And, you know, while we were speaking about, having problems with composure, because of, of, like security reasons and you had some audits that showed that, yeah, there are some dependencies. need to, remove them. need to like solve them. I was thinking, if you may be like in the history of you working on a team, if you ever had a case when someone told you that we should think about moving from Clojure in general, because it's a liability or anything. I mean, there are multiple reasons that might cause this discussion. Yeah, security itself. Have you ever had such conversation with anyone?

Marcin 

Not exactly about security, but conversations about, let's say, simplifying the tech stack or things like that. So the very best answer was that I have heard it was back when I wasn't a lead developer. I think it was my second or third year, iis that, okay, so what do we want to do? Do we migrate to WordPress with Google Sheets? So that's in general my answer. So if somebody asks me to change the test stack, I'm saying I'm asking to what, what's the plan? And usually then the conversation goes into other direction because it's very easy to question something and it's very hard to put something in place. If somebody would told me, we need to migrate to this and that, what is the cost effect? So we will waste, I don't know how many weeks, months, time, and we will achieve maybe the same thing or maybe something worse. Yeah, that's in general, my response. What will be the cost effect? What will achieve? That's how it ends.

Vadym Kostiuk 

Yeah, that's interesting. know, we just, I was thinking maybe you had such conversations. Because, but I see that Dentons is not like the other enterprise environments that you worked before, because we used to work with enterprise where like the decisions are made from the top to the bottom. And it's not such a decentralized force.

Artem Barmin 

Yeah, very interesting culture.

Marcin 

Yeah, so a lot of things in Dentons are actually coming from the bottom. people, you know, at least for me in here, the culture in this firm is absolutely amazing. It's as I'm working here, it's a great thing to experience. like people that, you know, we can call it flat structure of the firm in some cases, but I think that, let's call it like people at the normal worker level are always being heard by people at the top. So yeah, that's how the world looks.

Artem Barmin 

And talking about moving from the Clojure, have you ever discussed the problems with recruiting, with finding new talents for the Clojure?

Marcin 

Yeah, so that's one of, in my opinion, biggest pain points of Clojure in general. In my opinion, it's very good in this ecosystem to keep very friendly relations with other developers because you don't know when you will need help. So that's my opinion about that. Yeah, it's honestly, it's quite hard to find somebody that is willing to basically has the skill or is willing to learn this technology as its niche. So that's actually hard. <br/><br/>

We're often in situation where we need to ask contractors for some help because we had some issues with finding somebody right away or the recruitment processes were taking very long. yeah, we need more people in Clojure. That's my opinion.

It's also like, how to put it, I found that people that are writing Clojure are approaching some problems in a different way than the others. It makes, think, those developers are available as it's the language and the methodologies provide different mindset.

Artem Barmin 

Yeah, we discussed this a lot and you've noticed that Clojure works as a filter for developers. So the guys who still learned Clojure, they are pretty good in general in development, not only in Clojure, but even in other technical stacks. Yeah. Hmm. Very interesting. Okay. So let's move to another block of questions and the name of our podcast is “Clojure in product, would you do it again?” So that's the main question. Would you do it again or would you start a new project in Clojure if you asked, for example, Marcin, let's create some new module or new project in the company? So would you suggest Clojure as a technical stack?

Marcin 

It depends. It's not an easy, the answer is not easy. So in Dentons, in my current firm, I think that it will be hard to recommend this language as I know, let's say after all those years, I know the firm very well and I know that people in here are using different text stacks usually. And considering all business related topics, as we were speaking previously, it's hard to find somebody. And in my opinion, in such big firms, it's very important to be able to reach out for people from basically the job market, so we, it's much easier to find, someone that is writing, example, C# or third TypeScript. if I would be running startup, and I would like, you know, how, this Western was called seven magnificent or something like that. And I would have to pick like, seven really good developers for a startup I think that I would recommend the Clojure. So it depends on the scale. It depends on what you want to achieve on goals, strategy. Yeah, so it's not easy decision.

Artem Barmin 

I see, I see. Very wise answer. Very interesting. You're probably the first one who not said definitely yes. But your answer is more complex.

Marcin 

It's a bold statement, definitely. I'm also considering Clojure. I was thinking before this podcast about that. So it's, in my opinion, when you had this Star Wars scene when Luke meets Obi-Wan for the first time, and he shows him the lightsaber, like it’s a more elegant tool for more civilized times. And I think it’s something about Clojure-related topic, like you can have a Clojure jedis, or an army startroopers. It depends on the scale wether you are Empire or Jedi Order.

Artem Barmin 

Yeah, interesting analogy. Maybe you have some words for people who are listening to us right now. Maybe from enterprise, maybe they are thinking, maybe they want to try Clojure for some microservice because sometimes Clojure brings as a microservice language when you don't need to think a lot about big things. Maybe.

Marcin 

Yeah, so what I like to say, to people that haven't tried Clojure, definitely try it. It's a great language that will change your viewpoint on multiple problems. And basically it will make your better developer. And for people that are already running Clojure, let's spread the word about this language and stick together. That's it.

Artem Barmin 

Yeah. Yeah. Let's build the job market together. Yeah. Thank you. Thank you, Marcin. It was really interesting, know, very unusual point of view on the state, on the way, how do you approach the technical things. And basically that's it. And I want to thank you that you joined podcast, that you share all this knowledge, all this insights about the enterprise usage. And thank you, basically.

Marcin 

Thank you. Thank you, Artem. Thank you, Vadim.

Vadym Kostiuk 

Yes. Thank you very much, Marcin. Yeah, it was nice to hear about Dentons and how you use Clojure and the history. yeah, special thanks to our audience as well. So until next time.

Artem Barmin 

Yeah, until next time, bye. See you.

Marcin 

See you.

Read transcript
Most popular

LLM Agents in Clojure

Learn how to build LLM agents in Clojure using data-oriented design. Compare with Python implementations and see why Clojure works well for production agent systems on the JVM.

Clojure in Docker 101

You know Docker, everybody knows Docker. But Docker and Clojure aren't always best pals. In this guide, we tried to cut through the fluff to get you up and running.