Skip to content


Repository Β· Video

Defining the core objective of our task.


Identifying the objective should always be the first step when solving any problem. It acts as the guide for all subsequent decision making and will prevent us from getting distracted along the way. However, identifying the objective isn't always straightforward, especially when we aren't analyzing the problem through the appropriate lens.


A proven way to identify the key objective is to think about the problem from the user's perspective so that we're positioned to think about the underlying issue as opposed to technological shortcomings.


In our application, we have a set of projects (with tags) that users search for (using tags).

    "id": 2427,
    "title": "Knowledge Transfer in Self Supervised Learning",
    "description": "A general framework to transfer knowledge from deep self-supervised models to shallow task-specific models.",
    "tags": [

Our assigned task is to improve search and discoverability. We shouldn't prematurely jump to technological objectives such as:

  • we need a better search algorithm
  • we need better search infrastructure
  • we need a sleeker search interface

Though some of these objectives may be valid, they may not resolve the underlying issue. What we need to think about is why the user isn't able to discover the right resource. This becomes our core objective and we'll further refine it in the next lesson when we design our solution.


This is analogous to development in ML where you can iterate on model architectures (to gain incremental improvements) but we can gain massive improvements by improving the quality of your underlying dataset.