With every passing month, activity on the web is driven increasingly by relevance. Simply put, users don’t have time for an app or service that doesn’t serve up results tailored to their profile or needs. Speed is also no longer a nice-to-have – the results need to be both personalized and immediate. As a result, businesses around the world with any kind of online presence are investing substantially in machine learning, artificial intelligence (A.I.), and other software tools that can serve up the most customized, real-time and ultra-applicable results possible.
As any job seeker knows, when it comes to finding a new job, relevance is now more critical than ever. The job-hunting process is often exhausting, both emotionally and physically, and you need the tools that deliver results that match closely with your vision for your next role, as quickly as possible. The faster you find these jobs, the faster you can focus on the opportunities that provide exactly what you need in terms of company culture, flexible work schedules, salary and growth opportunities.
So is it possible to combine speed, quality and personalization, essentially removing the need for manual job searches? It’s a difficult problem, and one that’s been in place for an extended period of time with no viable solution – fortunately, it’s just the type of challenge that the Dice technology team loves to sink its collective teeth into.
The team’s hard work has paid off, as they’ve developed a solution in the form of an enhanced version of two key products within the platform: IntelliSearch Jobs and Alerts, and a new-and-improved Dice profile.
IntelliSearch Jobs and Alerts delivers ultra-relevant job listings to technologists.
The New Dice Profile offers a modern and engaging profile UI that allows candidates to best showcase their unique skills and experience. It’s more personalized, so they can connect to ideal employers in a transparent way, and easier to improve and update.
While the true power of the platform comes when the two are combined, both were developed as separate initiatives and run by separate teams utilizing different tech stacks, with the only commonality being the user-facing navigation.
We’re proud of the solution, and it’s interesting to review how we got there. We’ve outlined highlights of the development process below.
Starting with the End in Mind: What Did We Want to Achieve?
Throughout the process of building IntelliSearch, Dice’s engineering teams had some core goals in mind:
- Deliver the most relevant job listings based on the information in the technologist’s profile, including their skills, experiences and previous job titles.
- Make the platform seamless; instead of forcing candidates to actively search for preferred jobs, allow them to opt into IntelliSearch Alerts to receive the right opportunities.
- Make sure that IntelliSearch continues to deliver more relevant jobs as candidates add and update information in their profiles.
In addition to IntelliSearch, Dice’s developers also committed to revamping the Dice profiles, which now boast an engaging and more modern UI. The goals with the new profiles included:
- A more detailed and transparent profile that shows off candidates in the best possible light.
- A UI that streamlines the updating of profile information, including on mobile devices.
- The ability to either update a profile all at once or in stages, easily.
Next, the team needed to think critically through how to design the systems, including defining the tools and programming languages required for an effective implementation.
Front End Considerations
With projects this complex, it’s not only about choosing the right tools, but also ensuring you have the right production methods in place. Dice’s development teams have recently focused on the creation of a component library that allows them to organize components for discoverability and reuse; this not only streamlines the workload associated with building new products, but allows teams to share code more easily.
For the front end of the new profiles, the development team chose Stencil.js, a lightweight platform for creating reusable web components. Stencil.js can scale, which helps when you’re building a system as large as Dice’s; it also compiles down to raw web components and doesn’t have external dependencies that would prevent it from integrating with other front-end frameworks such as React.
Back End Considerations
On the back end, the team opted to use AppSync GraphQL for its API layer, along with serverless AWS Lambda. As with front-end components, tools and platforms were chosen in the interests of scalability and future-proofing. Since the AppSync/Lambda backend is a façade over the legacy backend for the new profile, the team could build the front-end and API of the future without the risk and effort of simultaneously rewriting the back end.
Because of this setup, the team will be able to incrementally migrate the back end without impacting the front end or any consumers of the new API. With any service, the experience has to be seamless for customers, whatever might be happening behind the scenes.
TypeScript offers several advantages, including speed improvements; the Dice team found that the use of TypeScript not only solved performance concerns, but allowed them to work in the same programming language on both the front end and back end.
When it comes to any website, delivering relevance is key. For development teams, that means not only coordination on front-end and back-end work to deliver a seamless experience to visitors, but also ensuring that your components can scale. Teams should also view their tool selection through a holistic lens—deciding on products and processes that can transfer easily to future endeavors can save a lot of time and effort in the long run.