<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://reef-technologies.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://reef-technologies.com/" rel="alternate" type="text/html" /><updated>2026-07-15T14:15:35+00:00</updated><id>https://reef-technologies.com/feed.xml</id><title type="html">Reef Technologies</title><subtitle>Reef Technologies is a backend Python software house. We design and build the systems you cannot see: APIs, databases, libraries, search algorithms, optimizers, and machine learning infrastructure.</subtitle><entry><title type="html">A regular day at Reef Technologies</title><link href="https://reef-technologies.com/team-building/" rel="alternate" type="text/html" title="A regular day at Reef Technologies" /><published>2026-05-19T00:00:00+00:00</published><updated>2026-05-19T00:00:00+00:00</updated><id>https://reef-technologies.com/team-building</id><content type="html" xml:base="https://reef-technologies.com/team-building/"><![CDATA[<div class="elementor-text-editor elementor-clearfix">
<p>People sometimes ask what team building looks like in a remote company. The honest answer is: pretty normal. We talk, we ship things, we celebrate the small wins, and sometimes we stare into code that has been left cooking for a little too long.</p>

<figure>
  <img src="/assets/blog/team-building/standup.jpg" alt="Our typical daily standup" />
  <figcaption>Our typical daily standup. Alex is sitting down, but we are a remote company, so we cannot really force him to do anything.</figcaption>
</figure>

<figure>
  <img src="/assets/blog/team-building/sprint-closed.jpg" alt="Successfully closing a sprint" />
  <figcaption>Successfully closing a sprint.</figcaption>
</figure>

<figure>
  <img src="/assets/blog/team-building/epic-done.jpg" alt="Another epic marked as done" />
  <figcaption>Another epic marked as done. Not deployed, of course.</figcaption>
</figure>

<figure>
  <video controls="" muted="" loop="" playsinline="" preload="metadata" style="max-width: 100%; height: auto;">
    <source src="/assets/blog/team-building/codex-16h.webm" type="video/webm" />
    <source src="/assets/blog/team-building/codex-16h.mp4" type="video/mp4" />
  </video>
  <figcaption>What it feels like to look into code Codex has been cooking for the last 16 hours. Alex actually forgot how to use stuff (that happens if you use agents too much).</figcaption>
</figure>

<p>Why are we doing this? Because we've decided to do so during our Sociocracy 3.0 meetings. You can read <a href="https://github.com/reef-technologies/handbook/blob/bc0f2b6aa722cf15f64c3bdd7ce90c7c27083cc5/agreements.md?plain=1#L332">the rules in our handbook</a>. Rock and Stone! . . . I mean Code and Test! </p>
</div>]]></content><author><name>Reef Technologies</name></author><summary type="html"><![CDATA[People sometimes ask what team building looks like in a remote company. The honest answer is: pretty normal. We talk, we ship things, we celebrate the small wins, and sometimes we stare into code that has been left cooking for a little too long.]]></summary></entry><entry><title type="html">Cost-efficient malicious GPU provider detection using surprisingly deterministic LLMs</title><link href="https://reef-technologies.com/malicious-GPU-provider-detection/" rel="alternate" type="text/html" title="Cost-efficient malicious GPU provider detection using surprisingly deterministic LLMs" /><published>2026-04-21T00:00:00+00:00</published><updated>2026-04-21T00:00:00+00:00</updated><id>https://reef-technologies.com/malicious-GPU-provider-detection</id><content type="html" xml:base="https://reef-technologies.com/malicious-GPU-provider-detection/"><![CDATA[<div class="elementor-text-editor elementor-clearfix">
<p>When you accept GPU rentals from anyone willing to provide a suitable card - as we do - you have to be very careful. Sometimes, it can feel like shopping for a used car: if you don't have a reliable way to verify your purchase, you risk overpaying or getting scammed.</p>
<p>Well, not anymore. We couldn't accept this level of uncertainty, so we employed a 100% deterministic LLM to outsmart GPU scammers once and for all. Read on to discover how an ingenious idea and a sprinkle of Python magic helped us find a bulletproof method and reduce the GPUs needed for reliable verification by 240x.</p>

<h2>Scam-Proofing the GPU Market</h2>
<p>Why test GPUs at all? At Reef Technologies, we’re creating a platform to sell GPU computing time from anyone online. Delivering high-quality service is crucial. So, we had to eliminate any uncertainty in GPU verification.</p>
<p>One way to test whether appropriate hardware is provided is to run something on it and verify the result. LLMs are popular, so let’s run an open-source one. Since they require a lot of VRAM, choosing a model with the right number of parameters allows us to ensure that at least X GB of VRAM is available. But how do we do that?</p>
<p>We started by taking a sample input. Then, we calculated the answer ourselves. Next, we compared the results and timing with the GPUs we needed to verify.</p>

<img src="/assets/blog/malicious-GPU-provider-detection/naive-implementation.jpg" alt="Naive implementation of GPU verification" />

<p>Imagine you’re a malicious provider with 100 nodes (each providing some GPU power), one node is really powerful, while the others are garbage. You receive the same test request on all 100 nodes. Cheating is simple: you calculate a result on the strongest node. Then, share the answer with your other nodes, and they will act as if they did the calculation themselves.</p>

<img src="/assets/blog/malicious-GPU-provider-detection/cheating.jpg" alt="Cheating scenario" />

<p>One may say, "Send different tasks to each node!"</p>

<img src="/assets/blog/malicious-GPU-provider-detection/distinct-tasks.jpg" alt="Different tasks to each node" />

<p>But now our poor validator has to know answers to all the questions, i.e., perform as many calculations as there are nodes in the system. That’s a lot of work!</p>
<p>Also, aside from the problems above, let’s remember that we’re in the LLM era and we want to run LLMs on the GPUs, thus the validation task will likely not be just “2+2=?” but rather some text input completion using a huge LLM - so that we probe nodes on real-life tasks. And LLMs naturally introduce randomness - same input may produce different output - making direct comparison of validators’ and nodes’ answers unreliable.</p>
<p>So we’re in a bit of trouble here.</p>

<img src="/assets/blog/malicious-GPU-provider-detection/clone-jutsu.jpg" alt="Randomness in LLMs" />

<h2>Deterministic LLMs &amp; Prompt Batching to the Rescue</h2>
<p>To solve the problem and make sure hardware differences could no longer be hidden, <strong>we decided to enforce strict determinism in our LLM testing</strong>. (Shame you can't do this when shopping for a car...)</p>
<p>So, how did we do it in practice?</p>

<h3>Step 1: Seeding Everything</h3>
<p>Usually, libraries provide ways to ensure determinism. For example, Python’s built-in random module has a <code>random.seed(123)</code> function. For PyTorch, there is <code>torch.use_deterministic_algorithms(True)</code>. Yes, this can result in performance degradation (why? slower, less-optimized but deterministic algorithms may be used, or, for example, some operations have no deterministic implementations on the GPU and thus fall back to CPU). But <strong>determinism was crucial to our approach</strong>, so it was definitely worth it.</p>
<p>In some cases (such as A100 GPUs), we also used <code>float32</code> to guarantee stable outputs. For GPUs like the A6000, “auto” precision often suffices to get reproducible results.</p>

<h3>Step 2: Deterministic Model Initialization</h3>
<p>Our <code>setup_model</code> function would set up a <code>vllm.LLM</code> instance with <strong>carefully chosen parameters</strong>: batch size, maximum token length, tensor parallelism, and enforced data types.</p>
<p>We disabled PyTorch’s <code>cudnn.benchmark</code> to keep execution paths consistent across runs.</p>
<p>This overarching setup ensures that the same prompt always yields the same output on the same GPU configuration <strong>as long as the batch size does not change</strong> (more on that in a moment).</p>

<h3>Step 3: Prompt Batching</h3>
<p>We started by creating multiple large “prompt batches,” each sized to push a GPU to its capacity (e.g., 240 prompts). We chose this particular batch size to optimize memory usage, throughput, and guaranteed determinism on our reference GPUs.</p>

<img src="/assets/blog/malicious-GPU-provider-detection/simple-batch.jpg" alt="Prompt batching" />

<p>It was at this stage that we made a critical discovery: <strong>a single prompt would result in different answers if we changed the batch size</strong>…</p>

<img src="/assets/blog/malicious-GPU-provider-detection/different-answer.jpg" alt="Different batch size" />

<p>…but remained the same while the batch size was kept the same, even if mixed with different prompts!</p>

<img src="/assets/blog/malicious-GPU-provider-detection/same-answer.jpg" alt="Same batch size" />

<p>Why is that? Changing the batch size can change the internal execution path. This leads to small numerical differences or different scheduling.</p>
<p>This is important because we can “mix” prompts from different original batches into one test batch, as long as the new batch has the same total size.</p>

<h3>Step 4: Mixing</h3>
<p>So we can answer 240 prompts in one go. Any GPU can. That means we have to answer 240 x NUMBER_OF_NODES prompts to validate them? If we send only a single prompt to each node, malicious providers can pretend to have 240 nodes using a single GPU. Or maybe we can use this fact to our advantage? Can we?</p>

<img src="/assets/blog/malicious-GPU-provider-detection/yes-we-can.jpg" alt="Yes, we can use batching to our advantage" />

<p>Let’s find answers for a batch of 240 prompts on trusted hardware, and then… split them up and hide them among “placeholder” prompts we don’t have answers to! So one answered batch yields 240 batches of:
<ul>
  <li>239 placeholder prompts;</li>
  <li>1 answered prompt, the “real one.”</li>
</ul>
</p>

<img src="/assets/blog/malicious-GPU-provider-detection/hiding-real-prompts.jpg" alt="Hiding one answered prompt among 239 placeholder prompts" />

<p>But the tested nodes will not know which of the 240 they receive is the “real one”! They have to answer all of them (in a single go, that’s GPU vectori-batchi-black-hole-magification working). And we’ll only check the one answer. Only the one. Demotivating? Well, you’re a computer, deal with it. And if the answer doesn’t match the expected one, then:
<ul>
  <li>Different hardware was used</li>
  <li>Different firmware was used</li>
  <li>A different model was used</li>
  <li>Model settings were tweaked</li>
  <li>Tricky tricks</li>
</ul>
Regardless of the reason, no money for that node!
</p>

<h2>The whole process in a nutshell</h2>
<ol>
  <li>Prepare a batch of 240 prompts</li>
  <li>Generate deterministic answers to all of them on trusted hardware - this is done in one go, due to GPU parallelization, etc.</li>
  <li>Generate 240 batches of prompts, 239 prompts in each one - we don’t generate answers to these</li>
  <li>Mix it up! - hide 1 “answered prompt” in each batch from step 3 - randomizing its position in the list</li>
  <li>Send one batch from step 4 to each provided node, have them send all responses, but only verify the one we know</li>
  <li>Punish nodes that failed verification</li>
  <li>Rinse and repeat if more than 240 nodes need to be tested concurrently.</li>
</ol>

<h2>No More Cheating… And 240x Better Efficiency!</h2>
<p>This mixed batch approach allowed us to scale testing while minimizing compute costs. One single pass per GPU is enough to check whether it produces the correct, deterministic outputs and to measure its performance. We no longer have to re-run every original batch, which cuts our testing compute costs significantly.</p>
<p>Result? No more cheating!</p>
<p>Each prompt from the original batches must create the same output in the test batch. This means they need to match in size and seed. If there’s any difference, it could signal problems with the GPU or the provider’s processes. We can now easily verify all the hardware we supply to our users, without needing a car mechanic to come along!</p>

<img src="/assets/blog/malicious-GPU-provider-detection/reward.jpg" alt="No more cheating" />

<h2>What Else Can We Do With This Approach?</h2>
<p>Could this method be successfully applied to other computational problems? Absolutely. Feel free to experiment (and let us know)!</p>
<p>The main idea is <strong>to hide a test case among many others</strong>. The system must compute all of them since it can't tell which will be used for verification.</p>
<p>This method works well when creating test cases is cheap, but computing results is costly. It doesn’t have to depend on LLMs! For example, you can use prime factorization. Generating a number is easy, but factorizing it takes a lot of computation.</p>
<p>If you’d like to discuss our approach further, feel free to reach out!</p>

</div>]]></content><author><name>Reef Technologies</name></author><summary type="html"><![CDATA[When you accept GPU rentals from anyone willing to provide a suitable card - as we do - you have to be very careful. Sometimes, it can feel like shopping for a used car: if you don't have a reliable way to verify your purchase, you risk overpaying or getting scammed. Well, not anymore. We couldn't accept this level of uncertainty, so we employed a 100% deterministic LLM to outsmart GPU scammers once and for all. Read on to discover how an ingenious idea and a sprinkle of Python magic helped us find a bulletproof method and reduce the GPUs needed for reliable verification by 240x.]]></summary></entry><entry><title type="html">Virtual assistants: not only for the CEO</title><link href="https://reef-technologies.com/virtual-assistants/" rel="alternate" type="text/html" title="Virtual assistants: not only for the CEO" /><published>2020-12-07T00:00:00+00:00</published><updated>2020-12-07T00:00:00+00:00</updated><id>https://reef-technologies.com/virtual-assistants-not-only-for-ceo</id><content type="html" xml:base="https://reef-technologies.com/virtual-assistants/"><![CDATA[<p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Not that long ago, the idea of a &#8220;virtual assistant&#8221; sounded like something straight out of a&nbsp; science fiction movie. These days, however, scores of people cannot imagine working productively without their VAs. Remote workers, including programmers, find their services especially useful.</span></p>
<h2 dir="ltr" style="line-height: 1.38; margin-top: 18pt; margin-bottom: 6pt;"><span style="font-size: 16pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Virtual assistants: not only for the CEO</span></h2>
<p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">You may be wondering what a virtual assistant actually does, and how they could be of service to you in particular. Delegating your own duties to someone else probably makes you think of a large company&#8217;s CEO. After all, it is only at this stage of your career that you might need help arranging meetings and answering phone calls. Right? Well, it turns out that view of reality is quite outdated. </span><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">The services of a virtual assistant can also make life much easier for programmers like you.</span></p>
<p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">&nbsp;</span></p>
<p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Think about the influential guy that you follow on social media. You read his articles, browse photos from his conferences, listen to an interview he gave for an industry-leading portal, and ask yourself&#8230; How does he make time for all these things? </span><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">The answer is simple: there is another player that makes their success possible, and sometimes even a whole team.</span><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> Virtual assistants make room in the client&#8217;s schedule through tireless behind-the-scenes work – so that he can focus on what&#8217;s really important.</span></p>
<p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">&nbsp;</span></p>
<p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">So who is a VA, and what exactly does that person do? On the internet, you&#8217;ll find numerous definitions, often surprisingly different from each other. However, you can interpret this inconsistency as a good sign. The range of services offered by virtual assistants is so broad, with the assistants themselves so versatile and flexible that, in the end, everything depends on the client.</span></p>
<p><b style="font-weight: normal;">&nbsp;</b></p>
<p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">A virtual assistant is simply a remote helper who takes over some of your duties &#8211; especially those that will not suffer even if you don&#8217;t take care of them in person.</span><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> Thanks to VA&#8217;s work, you gain extra time to focus on what you really want to do.</span></p>
<h2 dir="ltr" style="line-height: 1.38; margin-top: 18pt; margin-bottom: 6pt;"><span style="font-size: 16pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">How can a VA support a programmer?</span></h2>
<p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Virtual assistants do not limit themselves to typical business services. Increasingly so, they also support clients in less formal or even private, everyday matters. </span><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">An experienced, resourceful assistant will take on some of the day-to-day responsibilities that right now are still yours to worry about.</span></p>
<p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">&nbsp;</span></p>
<p><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;">During work, you will be able to fully focus on programming, and when you&#8217;re done with programming, you&#8217;ll spend time doing what you enjoy &#8211; and not dealing with commitments. If you want to delegate a task to an assistant, just type a few words on the keyboard. It&#8217;s really enough! </span><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: bold; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;">Talking to virtual assistants works just like chatting with your colleagues.</span><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;"> When you want someone to review your code, you send him a pull request link on Slack &#8211; and when you need your VA to help out, all you need is a brief description of your request, for instance: </span></p>
<p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">&#8220;Hi, I&#8217;d like to eat pljeskavica today.&#8221; That is enough &#8211; the assistant will arrange everything for you. He will check which of the nearby Serbian restaurants has the best reviews, and then he will order a dish for you with home delivery or book a table and let you know where to find a parking space. There you go.&nbsp;</span></p>
<p><span style="background-color: transparent; word-spacing: normal; font-size: 11pt; font-family: Arial; color: #0e101a; font-weight: bold; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;">Everyone needs sufficient time for fun and leisure, that is what work-life balance is all about.</span><span style="background-color: transparent; word-spacing: normal; font-size: 11pt; font-family: Arial; color: #0e101a; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;"> It may sound like a corny slogan, but at Reef Technologies, we take it seriously. Our clients pay us for top quality code &#8211; and we realize only well-rested, satisfied employees can deliver that.</span></p>
<p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">&nbsp;</span></p>
<p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">The help of a trusted assistant will allow you to stop worrying about everyday errands. </span><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">The main objective of a VA can be put very simply: their services are there to make your life easier and more pleasant.</span></p>
<h2 dir="ltr" style="line-height: 1.38; margin-top: 18pt; margin-bottom: 6pt;"><span style="font-size: 16pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Specifically – what will a VA do for you?</span></h2>
<p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Everyday life consists of thousands of small things that require your time and energy</span><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> &#8211; you may not even realize how many of them there are. Thanks to your assistant, you will be able to devote yourself to personal relationships, follow a wisely-planned path of self-development, and enjoy your life instead of coordinating tasks and errands. We prepared some </span><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">specific examples</span><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> of situations when a VA could provide you with the necessary support.</span></p>
<h3 dir="ltr" style="line-height: 1.38; margin-top: 16pt; margin-bottom: 4pt;"><span style="font-size: 13.999999999999998pt; font-family: Arial; color: #434343; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Relationship building</span></h3>
<p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Your virtual assistant will:</span></p>
<ul>
	<li dir="ltr" style="line-height: 1.38;"><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Keep your calendar organized.</span><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> If you want to remember all the important dates such as the birthdays of your wife and children &#8211; your VA will remind you of them a few days earlier;</span></li>
	<li dir="ltr"><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Organize gifts</span><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> &#8211; some people find it harder than others to come up with appropriate present ideas. Your VA will find a beautiful gift for your mother&#8217;s birthday and even set up delivery so that it gets to the right place at the right time;</span></li>
	<li dir="ltr"><span style="background-color: transparent; color: #0e101a; font-family: Arial; font-size: 11pt; white-space: pre-wrap;">Send greeting cards to your family for Christmas;</span></li>
	<li dir="ltr"><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Help your parents when you do not have enough time</span><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> &#8211; your VA will organize online grocery shopping for them, provide advice on how to disable the annoying pop-up window on their laptop or call the appropriate technician to fix it;</span></li>
</ul>
<h3 dir="ltr" style="line-height: 1.38; margin-top: 16pt; margin-bottom: 4pt;"><span style="font-size: 13.999999999999998pt; font-family: Arial; color: #434343; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Everyday responsibilities:</span></h3>
<p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Your virtual assistant will:</span></p>
<ul>
	<li dir="ltr" style="line-height: 1.38;"><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Check whether your tenant has paid the rent on time</span><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> and remind him about it if he hasn&#8217;t;</span></li>
	<li dir="ltr"><span style="background-color: transparent; color: #0e101a; font-family: Arial; font-size: 11pt; white-space: pre-wrap;">Book an appointment with a hairdresser, mechanic or doctor;</span></li>
	<li dir="ltr"><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Prepare a list of the 10 most fashionable shirts</span><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">, their prices, and links to where you can order them;</span></li>
	<li dir="ltr"><span style="background-color: transparent; color: #0e101a; font-family: Arial; font-size: 11pt; white-space: pre-wrap;">Find a suitable language teacher for your daughter;</span></li>
	<li dir="ltr"><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Put together a list of dentists in your city</span><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">, check their prices, opinions, and locations, and decide on the optimal option. Then, your VA will book an appointment for the date of your choice and send you the necessary info including directions on how to get there;</span></li>
	<li dir="ltr"><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Find where you can buy your favorite product </span><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">that is out of stock at your local shop;</span></li>
	<li dir="ltr">Prepare a spec comparison of the phone models that you&#8217;re interested in;</li>
	<li dir="ltr"><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Find a handyman</span><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> and arrange for him to come in and arrange a dripping tap;</span></li>
	<li dir="ltr">Search for the hottest trends on how to design your balcony;</li>
	<li dir="ltr">Find the right nanny for your child;</li>
	<li dir="ltr">Check the opinions of nearby nurseries and kindergartens;</li>
	<li dir="ltr"><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Post the items that you would like to get rid of on an auction site</span><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">;</span></li>
	<li dir="ltr">Review and evaluate the offer of the new mobile operator on the market;</li>
	<li dir="ltr"><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Fill out a legal form</span><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> for you to submit to the government;</span></li>
	<li dir="ltr"><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><strong>M</strong></span><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">ake bill payments and check if you&#8217;re up to date on them</span><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">;</span></li>
	<li dir="ltr">Make a complaint about a broken device or find a good offer for a new one;</li>
</ul>
<h3 dir="ltr" style="line-height: 1.38; margin-top: 16pt; margin-bottom: 4pt;"><span style="font-size: 13.999999999999998pt; font-family: Arial; color: #434343; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Personal development</span></h3>
<p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Your virtual assistant will:</span></p>
<ul>
	<li dir="ltr" style="line-height: 1.38;"><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Book the ticket for an event</span><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> that you want to attend as soon as they become available;</span></li>
	<li dir="ltr"><span style="background-color: transparent; color: #0e101a; font-family: Arial; font-size: 11pt; white-space: pre-wrap;">Prepare a list of 20 quotes by the world&#8217;s most renowned mentors;</span></li>
	<li dir="ltr"><span style="background-color: transparent; color: #0e101a; font-family: Arial; font-size: 11pt; white-space: pre-wrap;">Find the top podcasts or YouTube channels that fit your interests;</span></li>
	<li dir="ltr">Periodically send you valuable materials from the field that concerns you;</li>
	<li dir="ltr"><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Make sure you&#8217;re subscribed to your favorite magazine</span><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">;</span></li>
	<li dir="ltr">Assemble all the information that you need to acquire to learn a particular skill;</li>
	<li dir="ltr">Write down the courses that get the most recommendations from other programmers;</li>
</ul>
<h3 dir="ltr" style="line-height: 1.38; margin-top: 16pt; margin-bottom: 4pt;"><span style="font-size: 13.999999999999998pt; font-family: Arial; color: #434343; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Organizing your free time</span></h3>
<p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Your virtual assistant will:</span></p>
<ul>
	<li dir="ltr" style="line-height: 1.38;"><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Find the right place for your holidays according to your preferences;</span></li>
	<li dir="ltr"><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Buy the tickets to your destinations</span><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> and send them to you; book a taxi and check the best restaurants in the area;</span></li>
	<li dir="ltr"><span style="background-color: transparent; color: #0e101a; font-family: Arial; font-size: 11pt; white-space: pre-wrap;">Prepare a list of tourist attractions to see during your holiday;</span></li>
	<li dir="ltr"><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Find some exciting events or activities</span><span style="font-size: 11pt; font-family: Arial; color: #0e101a; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> you could take your kids to on the weekend;</span></li>
	<li dir="ltr">Book a seat or a table in a restaurant and buy cinema tickets in advance.</li>
</ul>
<p><span style="background-color: transparent; color: #0e101a; font-family: Arial; font-size: 11pt; white-space: pre-wrap; word-spacing: normal;">&#8230;it turns out you really do have a lot on your mind!</span></p>
<p><span style="background-color: transparent; word-spacing: normal; font-size: 11pt; font-family: Arial; color: #0e101a; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;">We&#8217;d wager that until now you&#8217;d never considered all those things as actual obligations. That&#8217;s because it was the way you’d lived all along. Somewhat overwhelming. Trust us, though,</span><span style="background-color: transparent; word-spacing: normal; font-size: 11pt; font-family: Arial; color: #0e101a; font-weight: bold; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;"> it is much easier to sleep soundly at night and lead a satisfying life when you can rest assured that a real professional is always on top of all your commitments</span><span style="background-color: transparent; word-spacing: normal; font-size: 11pt; font-family: Arial; color: #0e101a; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;">. As a Reef Technologies developer, you&#8217;ll find out what it&#8217;s like for yourself.</span></p>
<p></p>]]></content><author><name>Agnieszka Twardosz</name></author><summary type="html"><![CDATA[Not that long ago, the idea of a &#8220;virtual assistant&#8221; sounded like something straight out of a&nbsp; science fiction movie. These days, however, scores of people cannot imagine working productively without their VAs. Remote workers, including programmers, find their services especially useful. Virtual assistants: not only for the CEO You may be wondering what a virtual assistant actually does, and how they could be of service to you in particular. Delegating your own duties to someone else probably makes you think of a large company&#8217;s CEO. After all, it is only at this stage of your career that you might need help arranging meetings and answering phone calls. Right? Well, it turns out that view of reality is quite outdated. The services of a virtual assistant can also make life much easier for programmers like you. &nbsp; Think about the influential guy that you follow on social media. You read his articles, browse photos from his conferences, listen to an interview he gave for an industry-leading portal, and ask yourself&#8230; How does he make time for all these things? The answer is simple: there is another player that makes their success possible, and sometimes even a whole team. Virtual assistants make room in the client&#8217;s schedule through tireless behind-the-scenes work – so that he can focus on what&#8217;s really important. &nbsp; So who is a VA, and what exactly does that person do? On the internet, you&#8217;ll find numerous definitions, often surprisingly different from each other. However, you can interpret this inconsistency as a good sign. The range of services offered by virtual assistants is so broad, with the assistants themselves so versatile and flexible that, in the end, everything depends on the client. &nbsp; A virtual assistant is simply a remote helper who takes over some of your duties &#8211; especially those that will not suffer even if you don&#8217;t take care of them in person. Thanks to VA&#8217;s work, you gain extra time to focus on what you really want to do. How can a VA support a programmer? Virtual assistants do not limit themselves to typical business services. Increasingly so, they also support clients in less formal or even private, everyday matters. An experienced, resourceful assistant will take on some of the day-to-day responsibilities that right now are still yours to worry about. &nbsp; During work, you will be able to fully focus on programming, and when you&#8217;re done with programming, you&#8217;ll spend time doing what you enjoy &#8211; and not dealing with commitments. If you want to delegate a task to an assistant, just type a few words on the keyboard. It&#8217;s really enough! Talking to virtual assistants works just like chatting with your colleagues. When you want someone to review your code, you send him a pull request link on Slack &#8211; and when you need your VA to help out, all you need is a brief description of your request, for instance: &#8220;Hi, I&#8217;d like to eat pljeskavica today.&#8221; That is enough &#8211; the assistant will arrange everything for you. He will check which of the nearby Serbian restaurants has the best reviews, and then he will order a dish for you with home delivery or book a table and let you know where to find a parking space. There you go.&nbsp; Everyone needs sufficient time for fun and leisure, that is what work-life balance is all about. It may sound like a corny slogan, but at Reef Technologies, we take it seriously. Our clients pay us for top quality code &#8211; and we realize only well-rested, satisfied employees can deliver that. &nbsp; The help of a trusted assistant will allow you to stop worrying about everyday errands. The main objective of a VA can be put very simply: their services are there to make your life easier and more pleasant. Specifically – what will a VA do for you? Everyday life consists of thousands of small things that require your time and energy &#8211; you may not even realize how many of them there are. Thanks to your assistant, you will be able to devote yourself to personal relationships, follow a wisely-planned path of self-development, and enjoy your life instead of coordinating tasks and errands. We prepared some specific examples of situations when a VA could provide you with the necessary support. Relationship building Your virtual assistant will: Keep your calendar organized. If you want to remember all the important dates such as the birthdays of your wife and children &#8211; your VA will remind you of them a few days earlier; Organize gifts &#8211; some people find it harder than others to come up with appropriate present ideas. Your VA will find a beautiful gift for your mother&#8217;s birthday and even set up delivery so that it gets to the right place at the right time; Send greeting cards to your family for Christmas; Help your parents when you do not have enough time &#8211; your VA will organize online grocery shopping for them, provide advice on how to disable the annoying pop-up window on their laptop or call the appropriate technician to fix it; Everyday responsibilities: Your virtual assistant will: Check whether your tenant has paid the rent on time and remind him about it if he hasn&#8217;t; Book an appointment with a hairdresser, mechanic or doctor; Prepare a list of the 10 most fashionable shirts, their prices, and links to where you can order them; Find a suitable language teacher for your daughter; Put together a list of dentists in your city, check their prices, opinions, and locations, and decide on the optimal option. Then, your VA will book an appointment for the date of your choice and send you the necessary info including directions on how to get there; Find where you can buy your favorite product that is out of stock at your local shop; Prepare a spec comparison of the phone models that you&#8217;re interested in; Find a handyman and arrange for him to come in and arrange a dripping tap; Search for the hottest trends on how to design your balcony; Find the right nanny for your child; Check the opinions of nearby nurseries and kindergartens; Post the items that you would like to get rid of on an auction site; Review and evaluate the offer of the new mobile operator on the market; Fill out a legal form for you to submit to the government; Make bill payments and check if you&#8217;re up to date on them; Make a complaint about a broken device or find a good offer for a new one; Personal development Your virtual assistant will: Book the ticket for an event that you want to attend as soon as they become available; Prepare a list of 20 quotes by the world&#8217;s most renowned mentors; Find the top podcasts or YouTube channels that fit your interests; Periodically send you valuable materials from the field that concerns you; Make sure you&#8217;re subscribed to your favorite magazine; Assemble all the information that you need to acquire to learn a particular skill; Write down the courses that get the most recommendations from other programmers; Organizing your free time Your virtual assistant will: Find the right place for your holidays according to your preferences; Buy the tickets to your destinations and send them to you; book a taxi and check the best restaurants in the area; Prepare a list of tourist attractions to see during your holiday; Find some exciting events or activities you could take your kids to on the weekend; Book a seat or a table in a restaurant and buy cinema tickets in advance. &#8230;it turns out you really do have a lot on your mind! We&#8217;d wager that until now you&#8217;d never considered all those things as actual obligations. That&#8217;s because it was the way you’d lived all along. Somewhat overwhelming. Trust us, though, it is much easier to sleep soundly at night and lead a satisfying life when you can rest assured that a real professional is always on top of all your commitments. As a Reef Technologies developer, you&#8217;ll find out what it&#8217;s like for yourself.]]></summary></entry><entry><title type="html">Made-To-Measure: Reef Technologies CEO on the company’s custom recruitment process</title><link href="https://reef-technologies.com/recruitment-interview/" rel="alternate" type="text/html" title="Made-To-Measure: Reef Technologies CEO on the company’s custom recruitment process" /><published>2020-12-05T00:00:00+00:00</published><updated>2020-12-05T00:00:00+00:00</updated><id>https://reef-technologies.com/ceo-on-recruitment</id><content type="html" xml:base="https://reef-technologies.com/recruitment-interview/"><![CDATA[<div class="elementor-text-editor elementor-clearfix">
    <div class="elementor-alert elementor-alert-info" role="alert">
        <span class="elementor-alert-description">This article was updated in <strong>May 2026</strong> to maintain accuracy and reflect recent changes.</span>
    </div>
    <p><span style="font-weight: 400;">Despite several standard techniques dominating the IT recruitment industry, </span><b>Reef Technologies</b><span style="font-weight: 400;"> went against the grain and developed their own unique approach. I asked the CEO, </span><b>Paweł Polewicz</b><span style="font-weight: 400;">, to explain why he felt the need to innovate, describe the recruitment process that he adopted, and tell me about its positive impact on the company.</span></p>
    <p><b>Agnieszka: </b><span style="font-weight: 400;">There are quite a few common recruitment methods to choose from, and most software houses simply follow one of them when looking for new developers. What makes Reef Technologies different?</span></p>
    <p><b>Paweł: </b><span style="font-weight: 400;">In the past, we tried using some standard techniques, but the results were not satisfactory – mainly because our offering is highly specific. We have a narrow, exclusive focus on backend solutions written in Python, usually web apps. A cookie-cutter approach wouldn&#8217;t work here – before we hire a developer, we need to make sure that they&#8217;re not just great at programming. They need to be great at the exact type of programming that we do here.</span></p>
    <p><b>A:</b><span style="font-weight: 400;"> Before we start listing the interview stages, I would like to ask one question: why? Why does Reef Technologies have such a strong focus on the quality of the recruitment process?</span></p>
    <p><b>P: </b><span style="font-weight: 400;">Our Senior Python Developer position is rather attractive – it comes with a high hourly rate, a set of benefits, and the opportunity to participate in genuinely interesting projects. On top of that, we also work 100% remotely. As you can imagine, numerous programmers find that interesting and decide to apply.<br /></span><span style="font-weight: 400;">Online testing is the best method we have found that allows us to handle large groups of candidates and select the very best while also making sure that our developers don’t have to spend excessive time supporting the recruitment process.</span></p>
    <p><b>A:</b><span style="font-weight: 400;"> Wait, let me get this straight – so when it comes to filtering candidates, face-to-face conversations, and reading through CVs are not the best practice?</span></p>
    <p><b>P: </b><span style="font-weight: 400;">Not at all. Those methods favor the people who perform well in stressful face-to-face conversations or the people who know a good CV designer.</span></p>
    <p><b>A:</b><span style="font-weight: 400;"> So… does that mean that after a candidate is accepted and becomes a staff member, they won’t need to spend their time reviewing CVs?</span></p>
    <p><b>P:</b><span style="font-weight: 400;"> The last time an engineer at Reef Technologies saw a candidate’s CV was thousands of applicants ago.</span></p>
    <p><b>A:</b><span style="font-weight: 400;"> How about other types of involvement in the recruitment process? Do your developers have to spend a significant amount of time verifying test solutions?</span></p>
    <p><b>P: </b><span style="font-weight: 400;">We wouldn’t want that, which is precisely why we have automated the process so heavily. These days, bots do most of the heavy lifting. We only have to engage with a tiny fraction of the candidates at the final stage of the process. Our approach doesn’t discriminate. It just tests what truly matters: the candidate’s skills.</span></p>
    <p><b>A: </b><span style="font-weight: 400;">Please give us a quick overview of how the interview process for the Senior Python Developer position works right now at Reef Technologies. What are the stages, and how much time can a candidate expect to spend in the process?</span></p>
    <p><b>P: </b><span style="font-weight: 400;">There are three stages: (1) A basic coding test that takes between 10 and 40 minutes. (2) A difficult debugging task, I’d say it takes around 2 hours to complete, but it varies significantly between candidates. And (3) a mini-project where the variance is even larger, as there are almost no limits to how little or how much time it can take. Good candidates are generally pretty fast, though. </span></p>
    <p><span style="font-weight: 400;">Unfortunately, I cannot be very specific because it would skew the results of the test. What I can say is that a senior engineer takes 40 minutes on average to verify a single solution to the final, third stage of the process. If too many candidates were to reach it, the reviewing would drag us away from our projects far too often.</span></p>
    <div class="elementor-alert elementor-alert-info" role="alert">
        <span class="elementor-alert-description">
            <strong>May 2026 Update:</strong>
            <p>In light of the growing impact of LLMs, which are increasingly helping candidates complete tasks, we had to adapt our recruitment process. As a result, the number of stages has increased.</p>
            <p>The first stage (1) is a short automated scripting task. Next (2), there is a programming game in which you build a decision-making solution for handling resources and logistics. Then (3), there is a 30-minute video call with our recruiter to assess general communication skills.</p>
            <p>After that (4), there are two programming tasks focused on designing technical solutions and system architecture. Finally (5), there is a conversation with one of our engineers to get to know each other better, discuss the candidate’s experience, and introduce the final task.</p>
            <p>After successfully completing all stages, we invite candidates to a fully paid evaluation / trial period.</p>
        </span>
    </div>
    <p><b>A: </b><span style="font-weight: 400;">Say a developer does well enough according to your metrics. What’s next?</span></p>
    <p><b>P: </b><span style="font-weight: 400;">If an engineer delivers adequate solutions at all three stages, we invite them to work with us on a fully paid trial period to see if we are a good match. Depending on the candidate, it may take between three days and three months before we decide to work together in the long term. If both parties are satisfied, we simply stop calling the relationship a trial period.</span></p>
    <p><b>A: </b><span style="font-weight: 400;">What made you choose those particular testing methods?</span></p>
    <p><b>P: </b><span style="font-weight: 400;">We continuously optimize the recruitment process for two main reasons. We want to optimize the candidate experience, but we’re also making an effort to automate it more and more so that we can focus on engineering tasks.</span></p>
    <p><b>A: </b><span style="font-weight: 400;">What improvements have you made to the recruitment process over the years? What made you realize that the process needed to be improved?</span></p>
    <p><b>P: </b><span style="font-weight: 400;">So far, we’ve had seven real iterations and five or so “virtual” iterations, where we analyzed the data and disproved a hypothesis without actually putting a hundred or so candidates through it. I’ve delivered a </span><a href="https://youtu.be/LZQyq6DCTQ0"><span style="font-weight: 400;">conference talk about this</span></a><span style="font-weight: 400;">.</span></p>
    <p><b>A: </b><span style="font-weight: 400;">Please share some interesting data about the candidates. What were you surprised to find out about the average candidate for a senior-level Python job?</span></p>
    <p><b>P: </b><span style="font-weight: 400;">A significant portion of the candidates that we reject early do not have enough skill, to say, revert a string. 39% of our candidates fail that kind of task.</span></p>
    <p><b>A: </b><span style="font-weight: 400;">Reef Technologies provides very specific services. It means that once in a while, you may encounter a top-level programmer whose skill set is not compatible with the company. How do you handle such situations?</span></p>
    <p><b>P: </b><span style="font-weight: 400;">It happens all the time, every day – after all, we are looking for a needle in a haystack. Sometimes we find a golden ring, but that is not what we are looking for. For our projects, we only need the needles.</span></p>
    <p><b>A: </b><span style="font-weight: 400;">What advice would you give to a rejected candidate who wants to reach a skill level that would allow him to join Reef Technologies in a year?</span></p>
    <p><b>P: </b><span style="font-weight: 400;">Our training materials are publicly available in our </span><a href="https://github.com/reef-technologies/handbook/blob/master/training.md"><span style="font-weight: 400;">“Handbook” repository on Github</span></a><span style="font-weight: 400;">, where you can find very impactful articles and videos, both technical and organizational. Start with that, but then consider working with someone smarter than you. For instance, you might join a Python backend open-source project that welcomes contributions.</span></p>
</div>]]></content><author><name>Agnieszka Twardosz</name></author><summary type="html"><![CDATA[This article was updated in May 2026 to maintain accuracy and reflect recent changes. Despite several standard techniques dominating the IT recruitment industry, Reef Technologies went against the grain and developed their own unique approach. I asked the CEO, Paweł Polewicz, to explain why he felt the need to innovate, describe the recruitment process that he adopted, and tell me about its positive impact on the company. Agnieszka: There are quite a few common recruitment methods to choose from, and most software houses simply follow one of them when looking for new developers. What makes Reef Technologies different? Paweł: In the past, we tried using some standard techniques, but the results were not satisfactory – mainly because our offering is highly specific. We have a narrow, exclusive focus on backend solutions written in Python, usually web apps. A cookie-cutter approach wouldn&#8217;t work here – before we hire a developer, we need to make sure that they&#8217;re not just great at programming. They need to be great at the exact type of programming that we do here. A: Before we start listing the interview stages, I would like to ask one question: why? Why does Reef Technologies have such a strong focus on the quality of the recruitment process? P: Our Senior Python Developer position is rather attractive – it comes with a high hourly rate, a set of benefits, and the opportunity to participate in genuinely interesting projects. On top of that, we also work 100% remotely. As you can imagine, numerous programmers find that interesting and decide to apply.Online testing is the best method we have found that allows us to handle large groups of candidates and select the very best while also making sure that our developers don’t have to spend excessive time supporting the recruitment process. A: Wait, let me get this straight – so when it comes to filtering candidates, face-to-face conversations, and reading through CVs are not the best practice? P: Not at all. Those methods favor the people who perform well in stressful face-to-face conversations or the people who know a good CV designer. A: So… does that mean that after a candidate is accepted and becomes a staff member, they won’t need to spend their time reviewing CVs? P: The last time an engineer at Reef Technologies saw a candidate’s CV was thousands of applicants ago. A: How about other types of involvement in the recruitment process? Do your developers have to spend a significant amount of time verifying test solutions? P: We wouldn’t want that, which is precisely why we have automated the process so heavily. These days, bots do most of the heavy lifting. We only have to engage with a tiny fraction of the candidates at the final stage of the process. Our approach doesn’t discriminate. It just tests what truly matters: the candidate’s skills. A: Please give us a quick overview of how the interview process for the Senior Python Developer position works right now at Reef Technologies. What are the stages, and how much time can a candidate expect to spend in the process? P: There are three stages: (1) A basic coding test that takes between 10 and 40 minutes. (2) A difficult debugging task, I’d say it takes around 2 hours to complete, but it varies significantly between candidates. And (3) a mini-project where the variance is even larger, as there are almost no limits to how little or how much time it can take. Good candidates are generally pretty fast, though. Unfortunately, I cannot be very specific because it would skew the results of the test. What I can say is that a senior engineer takes 40 minutes on average to verify a single solution to the final, third stage of the process. If too many candidates were to reach it, the reviewing would drag us away from our projects far too often. May 2026 Update: In light of the growing impact of LLMs, which are increasingly helping candidates complete tasks, we had to adapt our recruitment process. As a result, the number of stages has increased. The first stage (1) is a short automated scripting task. Next (2), there is a programming game in which you build a decision-making solution for handling resources and logistics. Then (3), there is a 30-minute video call with our recruiter to assess general communication skills. After that (4), there are two programming tasks focused on designing technical solutions and system architecture. Finally (5), there is a conversation with one of our engineers to get to know each other better, discuss the candidate’s experience, and introduce the final task. After successfully completing all stages, we invite candidates to a fully paid evaluation / trial period. A: Say a developer does well enough according to your metrics. What’s next? P: If an engineer delivers adequate solutions at all three stages, we invite them to work with us on a fully paid trial period to see if we are a good match. Depending on the candidate, it may take between three days and three months before we decide to work together in the long term. If both parties are satisfied, we simply stop calling the relationship a trial period. A: What made you choose those particular testing methods? P: We continuously optimize the recruitment process for two main reasons. We want to optimize the candidate experience, but we’re also making an effort to automate it more and more so that we can focus on engineering tasks. A: What improvements have you made to the recruitment process over the years? What made you realize that the process needed to be improved? P: So far, we’ve had seven real iterations and five or so “virtual” iterations, where we analyzed the data and disproved a hypothesis without actually putting a hundred or so candidates through it. I’ve delivered a conference talk about this. A: Please share some interesting data about the candidates. What were you surprised to find out about the average candidate for a senior-level Python job? P: A significant portion of the candidates that we reject early do not have enough skill, to say, revert a string. 39% of our candidates fail that kind of task. A: Reef Technologies provides very specific services. It means that once in a while, you may encounter a top-level programmer whose skill set is not compatible with the company. How do you handle such situations? P: It happens all the time, every day – after all, we are looking for a needle in a haystack. Sometimes we find a golden ring, but that is not what we are looking for. For our projects, we only need the needles. A: What advice would you give to a rejected candidate who wants to reach a skill level that would allow him to join Reef Technologies in a year? P: Our training materials are publicly available in our “Handbook” repository on Github, where you can find very impactful articles and videos, both technical and organizational. Start with that, but then consider working with someone smarter than you. For instance, you might join a Python backend open-source project that welcomes contributions.]]></summary></entry></feed>