At VCreate Logic, we are hiring. We are looking for really good Qt/C++ developers to join our team. Now, this statement is rather blur – in that it does not quantify what “really good Qt/C++ developer” means AND it does not quantify how many developers we are looking for. In this blog post, we would like to clarify both.
How many developers are we looking to hire?
We are looking to hire 3-5 developers. What does that mean? It means that we are going to hire 3 developers at-the-minimum, because we are in urgent need of 3 developers for working on our products and projects. Over and above that, we have budget to hire 2 more developers who can work on projects that are currently in ideation stage and need a lot of developer love to bootstrap. This means that developers will have a mix of production and research work over here!
How we attempt to asses the quality of a developer?
We are looking for Qt/C++ developers and not BE/BTech/ME/MTech/MS/PhD holders. So, as far as we are concerned we honestly dont care if you were a university topper or if you flunked several times in college. What we __do__ care is whether you can write good Qt/C++ code or not. That’s really really it!
The way we asses the quality of a developer is by giving him/her a programming challenge. Because You do not truly know someone until you fight them.
If a developer has already been making good contributions to a open-source project and if we can have a look at it; then we are more than happy to talk to you about our offer without giving you the programming challenge!
The programming challenge we give you is usually an application/problem that you write/solve using Qt/C++ – within a time frame of 2-3 hours. The programming challenge is usually held in our office, because it gives prospective team members an opportunity to have a look at our office and get clear/comfortable with what our office has to offer. We dont have a large office building with glass doors, swipe cards, coffee/tea stations, canteen etc. We have an office that has comfortable tables and chairs for developers to sit and work. We have a TT table to steam out. There are quite a few hotels / fast-food places nearby where you can buy coffee/tea/milk/soft-drink/food. For people who dont reside in Bangalore or anywhere near Bangalore, we send them the programming challenge over email and expect to hear from them within one working day.
While working on the programming challenge, you can
- Use any sort of documentation resource (books on Qt/C++/Philosophy/Yoga/Cooking etc.., Qt Assistant, the Internet)
- Use any IDE/build system. We use Qt Creator at work, but you can use any IDE of your choice, as long as you dont force us to buy licenses of them for you AND you dont install any Pirated software on our (of for that matter your own) computers.
- Copy/Paste relevant parts of any sample code you can find in Qt source code and/or any other resource on the Internet. But make sure you dont copy any copyrighted/patented material.
- Ask us for help/clarifications. [However, if you ask us - how do we solve this problem? OR how do we write this application? --- you can expect nothing more than a frown from us!]
- Take a coffee/tea break in the middle or go for a walk to crystallize your ideas/algorithms for solving the problem.
- Go to the loo or even comfortably sit there.
So, we expect you to work on the programming challenge in a real development environment.
After attempting the programming challenge,
- We expect to get a complete and working solution written in Qt/C++. However many times we are happy to talk to you about our offer even if your solution is only partially complete. We are as much interested in your approach as we are in the final solution.
- We take a look at the way you write your code. Things like indentation, function/variable naming conventions, comments etc..
- We ask questions on the code you have written. For example, things like – why did you choose this approach over another approach.
The programming challenge
Programming challenges are typically small problems that we pick up from one or more of our existing projects/products. We pick our a small problem and generalize it so that you wont have a clue as to where the problem came from. We try to keep our programming challenges interesting and fun; so that you can enjoy working on them as well. The programming challenge is not a complicated problem, it is not a blatantly simple one either. It gives us an opportunity to take a look at how one approaches a problem.
For example, one of the programming challenges that we have been giving out for the past month or so is this.
Write a widget called PuzzleWidget that can take any image, divide it into a 4×4 grid puzzle for users to work and assemble the tiles into the original image. For example, consider an image as follows (filename = image.jpg):

We write a program as shown below that makes use of the PuzzleWidget class.
#include <QtGui>
#include "PuzzleWidget.h"
int main(int argc, char** argv)
{
QApplication a(argc, argv);
QImage puzzleImage("image.jpg");
PuzzleWidget puzzleWidget;
puzzleWidget.setPuzzleImage(puzzleImage);
puzzleWidget.show();
return a.exec();
}
When the above program is compiled and executed, we get a window in which
- the given image is split into a 4×4 grid
- one of the tiles (in the 4×4 grid) is randomly removed
- the other tiles are randomly dispersed
- the user can click on a tile next to the empty spot to move it.
- by repeatedly rearranging tiles, the user can reassemble the image.
Take a look at the expected output.
In our office, the lowest time taken for implementing a complete working solution for the programming challenge above is 12 minutes. On an average developers take about 40 minutes to come up with a complete working solution. The complete program is about 200 lines of code. This means that 3 hours is more than sufficient to work on the programming challenge.
Why do we take the programming challenge?
Because You do not truly know someone until you fight them. Moreover the projects/products that we are working on requires our developers to come up with solutions on their own. We require that our developers can produce results on their own as-much-as-possible. At the moment, we do not have the capacity to give training on Qt/C++ to hired developers. We also do not have the capacity to pre-solve problems that we face in our products/projects, explain the solution and then just expect team members to simply write code for it. We need our team members to create solutions by themselves for the most part. The programming challenge, for us, is the best way to figure out if we can work with a prospective candidate or not.
Note to prospective candidates
We welcome you to consider joining our company. We would love to hear from you! We will do as much work as possible to keep you happy in our company. In exchange for that, we would really love it if you can CODE! Our request is that – you take a look at this blog post, and attempt the above programming challenge by yourself. If you are confident, then please drop in an email expressing your interest to join us. We will then have a phone conversation with you and invite you for taking up the programming challenge. If you are through with that, WELCOME ABOARD!