Main image of article Building Dice's Instant Messaging Feature Meant Facing Down Complexity

Layla, a software engineer, has been searching for a new job since April. During that time, she’s managed to connect with more than a dozen recruiters about promising roles, but nothing’s panned out so far. Everyone working remotely, combined with companies frequently changing strategies in response to market conditions, has made follow-ups infrequent and inconsistent. 

Does Layla’s story sound familiar? We all know someone who’s experienced a situation like this (if we haven’t dealt with it ourselves). Through no fault of their own, technologists and recruiters have sometimes struggled to maintain consistent communication, which can have a drastic impact on what should be a beneficial relationship for all parties.   

Dice’s new Instant Messaging service can speed up the job search for technologists by allowing you to engage in direct, transparent conversations with recruiters. This kind of visibility can offer an advantage in a crowded job market, especially when you transform those conversations into lasting, productive relationships. 

Our Goals With Instant Messaging 

When our development team set out to design Instant Messaging, we had a few key goals in mind. First and most importantly, we wanted to develop a service that would allow logged-in candidates to communicate with recruiters in an easy, frictionless way. Second, we wanted to make sure that messaging had clear features and rules, including the ability to: 

  • Visit a recruiter’s profile 
  • Share documents
  • Block and unblock users 
  • Add and remove conversations you’ve favorited
  • Mark conversations as unread
  • Delete a conversation

We worked on different flows to mitigate spam and ensure that Instant Messaging cannot be used inappropriately. In addition, the service is integrated with Dice’s email platform, so users can receive emails about new messages even when they’re not on the site (these emails are spaced out to prevent inbox flooding). These functionality considerations are critical to providing an optimal experience, especially when you consider how many messages and notifications a user receives from multiple apps every day. 

Our engineering work involved microservice architecture and leveraging serverless design (Function-as-a-Service, or FaaS), along with a micro front-end. We also focused on eventually incorporating Instant Messaging onto virtually every page on the Dice website. This will prove key to the service’s long-term strategy, as candidates and recruiters want the flexibility of being able to communicate at almost any time, no matter where they are on the site. 

The Bigger Picture 

Designing any kind of platform or feature in isolation is a straightforward experience. However, things become more challenging when you need to integrate any new technology onto a legacy platform, particularly one as large as Dice. Not only must you ensure that the new, event-driven  code cooperates seamlessly with what you’ve built before, but it must cooperate with any third-party apps used by your platform. 

For all those reasons, you must keep in mind that your initial build may be temporary, and that you’ll have to refactor and rebuild a more permanent version later. It’s only when you begin testing out your initial build that you may find you need to adjust your rules and logic, change your UX, or consider how another third-party service interacts with your code.   

For example, Instant Messaging’s UI/UX will undergo changes in future iterations, with candidates able to access optimized desktop and mobile versions, and we’ll make those changes after observing how candidates interact with the current build. As with so many other kinds of apps, it takes some time (and watching how users interact) to determine how best to plan for the future.   

With a messaging platform, it’s important to focus on keeping its business logic (i.e., the rules that govern how data can be created and stored) separate from other databases and systems. Figuring out such flows takes time, and that time needs to be incorporated into your production schedule, no matter what the aim of the project.  

While a messaging service seems simple on the surface, it’s often an incredibly complex undertaking, especially if you’re trying to build and introduce customized features. As we move forward, we’re paying constant attention to how we can make Instant Messaging even better. Tell us what you think via our Contact Us page