Interviewing Odoo Candidate | Tips for Recruiters
Odoo is very specific software with very specific requirements. Odoo is ERP and Odoo developer should be ERP developer. As Odoo is written on Python, an Odoo developer is a person who understands both ERP development and Python programming language. It is not so easy to find ERP developer, as well as to find Python developer.
Based on our experience, creating Odoo developer from ordinary Python developer, or from ERP developer is easier than finding an Odoo developer. This leads us to interviewing the candidates.
List of Things Every Odoo Developer Should Learn
Odoo is written as “all in one”. This means that it has everything necessary inside and additional software is not needed. PostgreSQL is the only middleware used in Odoo, but all you need is to install it on server creating and specifying user, password and port in Odoo configuration file. After that your relationships with PostgreSQL are done.
Of course, there are few core skills which Odoo developer should have:
- The knowledge of Python itself. Before learning Odoo he must master the Python language. Besides, the knowledge of OOP and understanding of model-view-controller pattern are must have, as these are strongly used by Odoo.
- SQL. Odoo has a great ORM layer, but sometimes you will have specific reports or situations when you would need query data directly. Or you may need to debug and understand some functionality which uses direct queries. That’s when SQL will come in-handy.
These are skills not specific only for ODOO developer, more for every Python web development framework developer. Django, Web2py, Flask developers are also familiar with technologies described in the list above.
What Are Specific Skills of Odoo Developer
First of all, It would be better if your candidate had experience in ERP development. It could be Microsoft Dynamics NAV, IBM MAXIMO, SAP, ORACLE Business Suite, or even young Odoo concurrent – NextERP, which is also written in Python.
What if your candidate says that he has Odoo skills and has already developed in Odoo? Here the list of skills to test him during the interview:
- ORM API – API for creating data models in Odoo. Model is representation of entity which will be stored or used in some operations. It will be stored as a table in database. Odoo developer must have the knowledge about fields types, model types and specific methods and inheritance.
- QWEB – templating engine of Odoo. Developer must know its rules and directives. Also he must know how to add its own parsers to handle specific functions.
- UI/Menus/Views/Actions – specific objects for user interface. Everything seen by user while working with Odoo except website is handled by these. Each menu points to action leading to view which describes the generated form finally shown to users.
- Modules. Every application in Odoo is one separate module. Of course, they can be connected and oftenly depend on each other. But they have some separated specific functionality. Odoo developer must know module structure and be able to create or read manifest files.
- Controllers. Odoo is web based system. And it will listen to network, get requests, generate and send responses. All of this is done by controllers. This is the easiest part to learn if you have experience with Python web frameworks like Django and Flask. Odoo developer must be able to create his own controllers or inherit present one.
These are skills specific for Odoo. They are well pointed out in Odoo developer documentation and reading this manuals must be strongly required for candidates.
Top 10 Questions About Odoo to Ask Odoo Developer
Below are just examples of questions which will show experience and skills of interviewed candidate.
What is the purpose of key “data” in manifest file?
It contains the predefined data records in XML or CSV formats. They can contain menus and views and predefined configuration data (payment types, charts of account etc)
Which type of models used for wizards?
Wizard models are not stored in database. Records are created temporary and removed when operations are finished. Special class TransientModel is used for them.
What is the purpose of record rules?
Record rules let you configure access based on record data. For example, you can see products only with specific tags, or invoices created only by user or his subordinates.
How to make your custom function be parsed by “t-esc” directive of QWeb engine?
I need to inherit from report_sxw.rml_parse, and then add this class as _wrapped_report_class in abstract report model.
For creating One2many relation to other model what additionals you need?
Many2one field in relation model.
Which fields used for model inheritance?
Internal fields _inherit, _inherits, _name are used to specify inheritance type.
What different types of model inheritance are used in Odoo?
- Class inheritance with same _name and parent name in _inherit, used to add features. Compatible with existing views and stored in same table.
- Prototype inheritance. New _name and parent name in _inherit. Used to copy features. Stored in different tables. Ignored by views.
- Delegation inheritance. New _name and using _inherits. Multiple inheritance with created embedded instances of inherited objects.
What will be “id” attribute in “record” tag of XML file?
With prefixed module name it will be unique external identifier in Odoo database. It will be accessible by self.env.ref(“id”) in any part of code.
Describe developer mode of Odoo.
In this mode administrator will get several additional menus and operations. Able to read and edit views, see metadata, read information about each field etc.
You added new field in inherited model. How you will add this field to view?
I will inherit the base view and add field specifying its position by xpath or by linking to unique element.
Samples of Practical Tasks for Odoo Candidates
Here there are several test tasks for new candidates. Each of them covera all sides of Odoo development views, controllers, models.
Task #1 Create Courses module with following functionalities:
Courses – each course have instructor, room, and lists of attendees and lessons. Each lesson is linked to room.
- Rooms – locations where lessons will be performed. Each room have it’s capacity. And number of attendees can not exceed capacity.
- Modify Contacts model: add fields “instructor” and “courses” in contact form. Check that person can not be instructor and attendee of same course and same lesson.
- At website add menu and page where external users can read description of course, locations and schedule. Create report about courses including number of lessons.
Task #2 Modify Survey module adding new type of question. Change frontend templates to correctly process data from user and for creating correct statistic. New question can be:
- New type of matrix. Textboxes or dropdown lists.
- Formatted enter of information containing several fields like address or formula.
- Selection of one or more images.
Result should be separated module depending from Survey.
Task #3 Create module “Scheduled reminders” where user can create notes with following info:
- List of scheduled reminds.
Create cron task which will check records and will create and send e-mail message to recipients in scheduled time.
How Mobilunity Can Help Hiring a Professional Odoo Developer
As you can see, being an Odoo developer, as well as finding a good Odoo developer is not the easy. We are here to help you find and test the right Odoo developer who would meet all your project requirements. Our experts of IT recruiters with more than 8 years of experience in outstaffing are ready to provide you with the best candidate within 2-4 weeks.