Accelerate your career with Levi9

Accelerate your career with us

You pick the track, we’ll make you win.

Our passion lies in Formula1. We embrace the same attitude and spirit in our work culture. Only this time, you are only competing with yourself. Your game, your rules! We are the team that helps you get the prize. See exactly how it works.

Design your own development path


Take control of the steering wheel and accelerate your career

Your career might feel like driving a racing car. But you know it involves much more than speed. To become the best version of yourself, we empower you to create the impact you want to be delivered at your own pace. Resources will come along in no time.

You are the designer of your development path. The team will copilot your interests and goals, offering advice and guidance, keeping you on track with work-life balance.

Your career is the Grand Prix we’re cheering for

At Levi9, you are empowered with education, challenges, a voice, and a circuit to showcase your success. Every one of us has our own style, and we work in a state of flow: continuously growing, challenged but not burnt out, capable but not bored. Our services are not only a collection of technologies and activities. The real difference is made by how we do it. Always together.

LOCATION


ROMANIA

Iași, RO

47° 9′ 6.2136” N
27° 35′ 16.4904” E

COMPANY STATS


4

COUNTRIES

1067

LEVI NINERS

17

YEARS


We are based in Iași, with headquarters in Amsterdam, Netherlands. Some might say we are an IT service provider. But in reality, we are the IT service partner for our clients, transforming their business goals into our success in technology.  Our customers empower us with freedom over solutions and autonomy over the implementation. And we answer to their trust with transparency and ownership.

CIRCUIT MAP


We all visualize our careers as a race until we realize it is not a trophy we are after. It is the ongoing partnership to build a thriving career path, at our own pace. This is how we do it on the Levi9 circuit. Let’s share the track!

Performance

Performance in the flow of work

While you are in the zone, delivering impact day by day, all the processes and the team are set to channel your performance in the direction you want. By the way, the members of your race team are the Team lead, Delivery Manager, Department Manager, and colleagues.

Communities

Niners unite communities

Name your interest and like-minded levi niners will hop in. Find your community inside Levi9: from Cloud and Agile, all the way to parenting and biking. Discover all of them or build yours!

Customers

Excellent customer focus

Delivering a functional product is one thing. Delivering impact is a totally different one. Our mindset and processes are focused on understanding the customer, having a good laugh over a beer, and building solutions that directly impact the customer’s users and the business goals.

Workplace

World-class workplace

We are a World-class Workplace and Levi Niners themselves are the ones who evaluated us. The label is based on the employee score from the survey done by an independent employee satisfaction agency, Effectory.

Teamwork

Learn by sharing

Study groups, tech events, mentoring, and communities. The context is set for levi niners to grow their expertise by sharing or learning from their teammates. That’s our engine that never fails.

Career

Learn by doing

Fail fast, keep it agile, and innovate incrementally. Just break the routine by implementing something new. You have the time and resources to learn, but also space to test and scale new insights.

Experience

Proven track record

Working with titans, we take their business goals seriously. Our experience counts not years but times our customers succeed on the market thanks to our stunning and flawless tech solutions.

We’re supporting your race at your own pace. Choose yours!



10 ways Java is getting better

10 ways Java is getting better

You might think of Java as outdated. It is, indeed, 27 years old, which is the equivalent of one century old in “IT years”. Its younger, fresher, hipper siblings — such as Scala, Kotlin, Closure, or Groovy — might be more dynamic and easier to use. But don’t discard Java just yet!

Andrei Micu, Senior Scala Developer at Levi9, has noticed that Java is evolving and using its younger siblings for inspiration and improvement. Andrei talks here about two projects that intend to evolve the JDK, with their associated JEPs (JDK Enhancement Proposals): Project Amber and Project Valhalla.

Let’s see some instances where Java is a bit behind its siblings and how syntax sugar and standardization simplifies and makes the code more efficient.


1. Using records like in Scala or Kotlin

POJOS (Plain Old Java Objects) make data encapsulation a bit difficult. They needed a lot of writing but other languages such as Scala and Kotlin came up with features that standardized and simplified the writing. The same output could be achieved with a case class for Scala or data class for Kotlin. And this is what Project Amber tries to change.

Project Amber started with JDK15 and did some syntax sugar by adding the concept of records that brought in the same feature from Scala or Kotlin.


2. Better Pattern Matching

Another interesting change brought on by Project Amber is pattern matching. Old Java is not very flexible with switches, but Scala is way ahead. For example, in the second Scala example below — you can switch in the same object for lists, for components of lists and you can extract from them.


3. Pattern Matching for instanceof

pattern matching for classes for instanceof

The concept of pattern matching for instanceof was added in the first release of JDK14. Previously, when you checked if an object was an instance of a class, an extra line was necessary for the class to be cast to its checked type. But since JDK14 you can simply write the name of the variable after the class and you don’t need that extra line. This is a small, neat improvement.


4. Pattern Matching for classes in switch

Pattern matching classes in switch

JDK17 brought on pattern matching in a switch. If you want to check an object for its class type, now it’s possible in switch statements too.


5. Increased Expressiveness

Increased Expressiveness JDK18

JDK18 came along with increased expressiveness. Not only can you now check classes in switch statements, but you can also check for particular values and classes in the same switch. Guards and nulls can also be added.


6. Introducing Record Pattern (Preview)

Introducing Record Pattern (Preview)

In the future, we will also have record patterns. Previously, if we got a record at this point you had to write several lines of code to access its members, but now you can do an instanceof point with the name of the internal fields and it’s going to extract them for convenient use, afterwards.

In switches you can do the same for cases
. This sort of expressiveness is going to deconstruct that point, which is something pretty new in Java, so that’s why it probably takes more time to cook.


7. Classes for the Basic Primitives (Preview)

We are now in the territory of primitive types. This is the focus of Project Valhalla. In Java, primitive types are enough to model almost anything. But anything that’s not on the primitive type list is derived from Object, and this is quite an issue. Scala and Kotlin have a different approach to this. Both languages use just one class and the compiler does the improvements for you.

However, Java does not have a class for primitive types, making it difficult to work with them seamlessly.

But this may change and primitive types might get a class. This class will be marked with a `Q` prefix in the JVM internals to signal it’s a primitive type.


8. Declaring Objects that don’t have identity (Preview)

Java wants to offer the possibility of making objects as primitive types. The first step is to give the possibility of declaring objects that don’t have identity.

But what does “having identity” mean? Long story short, when an object has identity, two instances of the same value are different. This is not the case for primitive types and this is why we say that primitive types do not have identity.

Furthermore, objects that don’t have identity are stored in the stack, while objects with identity are stored in the heap.

Value objects (or classes) don’t have identity. Let’s look at how they are declared.

Declaring Objects that don’t have identity

While the outline of the definition is still work in progress, there are some definition rules that have been already established. One is that the class should be implicitly final. The fields of the class are implicitly final and no constructor can call super. Also, value objects can have reference cycles, which means they can have references to another object of the same type.

What do we get in return? The objects are put on the stack and the equality will hold between two references to the same value..


9. Primitive Classes (Preview)

Primitive Classes

A primitive class is like a value class with the additional restriction that no field can be of the declaring class, so we don’t have cycles like we have for value objects.

What do we get in return? We get almost the same performance as primitive-types. They do not allow nulls. Some might say this is not a benefit, but those who had null-pointer exceptions might think otherwise.


10. Reified Generics (maybe)

While not yet official, Project Valhalla does drop a hint about tackling reified generics, in which they may also take a hint from Scala and Kotlin.

What is the issue in Java right now?
Well, when generic type objects are passed around, the information about the inner types is lost at runtime. This is called `type erasure` and it is a drawback of the JVM.

There is a workaround in Java, that requires you to send the class as a separate parameter. Definitely not elegant! But Kotlin and Scala have a better way of dealing with this.

Kotlin deals with this with a neat feature called “reified generics”. If you declare the function inline — meaning that the function content is copied at the call site — then you can have access to the inner types of the generics. When you write reified, it adds in the back an extra parameter which is the class of the generic type parameter. This way, you don’t have to write extra parameters.

Scala works around this in a different way. It makes use of implicit parameters to leverage the compiler’s ability to pass the class information.

Reified Generics

What do you think?

Do these Java improvements seem significant to you? Andrei Micu stresses that standardization is not easy. Java’s little siblings might be a bit lighter on standardization, which allows them to develop features faster. Java, however, is so widely used, that keeping backward and forward compatibility is crucial. Sometimes, this means holding back on innovation, in order to keep all of its users happy.

Let’s keep in mind Java is running a marathon, says Andrei Micu. Its younger sibling languages, with more spring in their step, will also benefit from JVM improvements and new features. It’s a win-win.

We’re supporting your race at your own pace. Choose yours!


Take the cake break

Cake is a big piece of office culture. Cake breaks share project wins, experiences, challenges with the whole office. A visiting group thought cake eating was a daily celebration. They joined in and brought a cake to share with the office, too.

Cake is our vibe and takes up 3 places in the 999 Reasons to work at Levi9.

#792 We eat cake to celebrate successes.
#287 We love blue velvet cake.
#326 Our cheesecakes are blue.


Stamp of approval

An urgently needed cable for a project was blocked in the customs for more than 30 days. Serbian customs has very specific, old fashioned shipping requirements using a stamp and a signature with a blue ballpoint pen. The customer sent the package from the Netherlands without the stamp and with a black signature. 

The Netherlands no longer used the stamp for shipping, and no one was going to the office because of lockdowns. So, Levi9 managers used all their connections, knowledge and called on their relatives. They teamed up with FedEx to complete the documentation in the right color with the right stamp to resend the cable for the customer.

When the special cable finally arrived, it didn’t work. After many days of trying everything, calling electricians, video walkthroughs, the team discovered the wrong cable had been sent to Serbia. The whole import gymnastics had to be repeated all over again, but this time with all the right steps and right people to get the right cable.


The long timeout

Levi9 had the first go-live for a core product developed for a customer. The go-live was after business hours on a Thursday and the customer expected everything to work on Friday morning. “After the deploy, we found a long queue of unprocessed tasks in the system causing the software not to work.” 

To help meet the deadline and find the solution, the whole team agreed to stay and even called the architect for support during his vacation. At first bug was suspected, but the problem could not be duplicated, and no bug was found in the test environment.

After 5 or 6 hours, the team finally discovered the issue was with the interval of time set between tasks. “We had thousands of tasks waiting to be processed and the timeout was pausing for one full minute with every task. The only solution was to shorten the timeout interval and wait for the tasks to be completed.”

Everyone who worked late received overtime pay, but that’s not all. “Levi9 also ordered dinner for us, arranged taxis to take everyone home, and we were given the next day off.”

Before the next implementation, they knew better and set the timeout to 5 seconds.


Security check

On a wintery Friday night, after days of debugging, the search was on for the worst bug ever.

“Back then, we were just two junior developers, but very eager to be the heroes by solving something which had bugged everyone.”

They couldn’t find the reason and it took another 3 months to solve that bug. But, to brighten up the night, the young team transformed frustrations into a lot of fun with loud music and yelling.  

All the noise attracted the older, very kind security guy. He poked his head in the door and asked, “Why are you here so late on a Friday night?” 

The guys told him they had work to do. The security guard walked away somewhat satisfied, then showed up again at our door asking, “Don’t you have girlfriends?”


Why levi niners keep coming back

When Mirjana joined Levi9 in 2012 as a Junior Delivery Manager in Novi Sad, Serbia, it was clear from the first day that the new job would bring her many new experiences. 

 

“Everything in the office was glass, which made it look very modern but for me it also represents the culture of Levi9. Everyone is very open, helpful, and supportive. That meant a lot to me especially because I had so much to learn.” 

 

Mirjana’s background was in electrical engineering and she’d never worked at a tech company. But, thanks to a mentor at Levi9 who invested in her to get here up to speed she was working independently within no time. 

 

“I really liked how dynamic the job was, working with all the different projects and customers. Still, after a while, I was ready for a new challenge.” 

 

That motivation led her to a new company, but Levi9 wasn’t ever too far out of view. Mirjana kept in good contact with her former colleagues. She even rang in the New Year at the legendary Levi9 NYE party. When Levi9 rebranded and opened a new office in Belgrade, she liked what she saw. Within a few years, she was once again ready for a change and was just about to make a move to a different company. Then, Mirjana received an interesting offer.

 

“Levi9 reached out to me and asked if I’d like to come back to work there instead. Everyone was very welcoming, which felt nice.” 

 

Mirjana returned to Novi Sad as a Delivery Manager. This time around, she had a broader perspective of her job and experiences with different management styles that she says made her better at her work. These lessons paid off when Mirjana was promoted to a Delivery Director at the Belgrade office. 

 

“I think the time away gave me a stronger appreciation for what Levi9 has to offer. The support, knowledge-sharing, and transparency – it’s a unique place. That’s why I’m just one of the many who have returned after working somewhere else.”


Chatter matters

Ramona was part of the first development team between Levi9 Romania and a Dutch client. Communication was hard in the beginning.

 

“They preferred to speak in their own language, and I felt excluded from some parts of our team meetings.” Ramona recalled that while in the Netherlands, interactions seemed quite formal. 

 

“We went to the office, worked, to lunch, worked. Then in the evenings, we went to our hotel, and they went home.”

Things changed when the client visited Levi9 in Romania. “We took them to dinner, organized events in the evening, we went for walks in the city, we took them outside the office. We wanted them to feel welcome, feel good when they visited us, and get to know us better.”

On the next trip to the Netherlands, Ramona was happy that her Dutch teammates took personal time in the evenings for team dinners and engaged in chatter that was not necessarily work related. They all got to know each other better, communicated better and the collaboration became stronger. 

 

“Now, nearly 7 years later on this project, I don’t feel like I am working for a client. I feel like we are colleagues. Our morning meetings start with chit chat and we both try to maintain our team bond.”

 

To battle the winter blues, they organized an online escape room game as a virtual team activity on Blue Monday. Together they had to figure how to get a real person in Lithuania out of the escape room.

The team spirit was intense, focused and we managed to ‘escape’ in 52 minutes by working together.”


What happens in Belgrade stays in Belgrade

Picture this: a busy party street on a cold December night in Belgrade, people spilling out from restaurants and bars onto sidewalks shimmering under holiday lights. You can feel music and mischief pulsating in the wintery air.

On this mysterious, or some even call it a magical night, a group of unnamed levi niners wound up at the hottest nightclub in town. Rumour has it that they were all in the city for a training event, but the evening became a little more exciting when everyone learned a levi niner was celebrating his birthday. Now, this was a party that would make Berlin blush (or so we’ve heard). Everyone was dancing, champagne was flowing and silver platters piled up with hors d’oeuvres kept floating by. Who could blame these revelers for succumbing to the spirit of the night? 

Suddenly, they took a good look around and realized they were quite out of place. Everyone else was dressed to the nines and they were dressed like, well, levi niners. They sheepishly tried to move towards the exit sign undetected until a voice rang out over the music. “Not so fast!”

The group froze and looked at each other. Should they make a run for it or own up to their (honest) mistake? Just before they made their choice, the young woman held up something bright and shiny. To their complete surprise, she handed them all holiday presents. Well, levi niners never want to appear rude or ungrateful so they graciously accepted. 

So, what was inside? Some say bottles of the finest Serbian wines and other extravagant delights. We’ve even heard the bags were stuffed with euros (an undisclosed amount, of course). The truth is elusive in this tale, but we know one thing for sure: what happens in Belgrade stays in Belgrade.

We just hope those levi niners didn’t make it onto Santa’s naughty list.


Flag of the week

As a little joke, some levi niners started using flags on their customer’s Jira board. The practice of adding flags to Jira tickets was not very refined and was mostly for amusement. So, one team member wrote a script that would change all flags on Jira board with images or moving gifs. The flag of any given week was based on silly internal team jokes. 

For example, when a product owner went on vacation, the flag of that week was his profile picture to express how much the team missed him.

“The architect from the customer’s side liked the flag idea so much that he created a repository to save all the weekly flags.” – Miroslava Brkic