Dedicated team for Learning Pool
Founded in 2006, Learning Pool creates educational content and technology solutions for public and private sector customers and learners around the world. The solutions include traditional Learning Management Systems (LMS), next-generation Learning Experience Platforms (LXP), the world's most installed Learning Record Store (LRS), agile learning content development tools, nearly 600 off-the-shelf e-learning modules, and award-winning custom content development.
Initial contact and onboarding
Learning Pool's CTO Mark Lynch and Onix's eLearning software development team began communication on an IT job platform where Learning Pool was looking for contractors. The company was experiencing rapid growth and a large influx of customers, and therefore had a growing need for software developers. It wasn't practical to open new offices and recruit the right staff quickly in the UK, so they decided to outsource a part of the software development tasks.
Onix's ‘scouting group' included three full-stack web developers and a project manager who acted as Learning Pool's eyes and ears in Ukraine. The team's primary goal was to build a relationship with the existing UK team, understand the project details, and proceed to the proper development as soon as possible. The PM had to facilitate the process and ensure a high level of quality.
Before the first team of LMS developers were able to start, Onix specialists went through a testing period that lasted six months. Learning Pool was looking for a long-term outsourcing partner, so they were keenly interested in all Onix's processes. Our managers walked them through every aspect, from the hiring procedure to the criteria for employee promotion, and from time management to learning process monitoring.
Start of the collaborationand initial challenges
From the start, it was not a client-contractor relationship. Instead, Onix developers were expected to become members of the existing team with its own processes, rules, and management that had been formalized over fifteen years.
It took a while, but the genuine efforts of the developers and management on both sides, friendly communication, and a sense of humor helped Onix’s developers integrate into the wider team. The same thing happened with subsequent teams and became easier each time.
It was important for us that Learning Pool software engineers should approve all our programmers’ work. Reviewing all the code written, they quickly noticed that it was very clear and, written to a very high standard. After a month of work, Onix developers began to review the code written by Learning Pool as well.
After two months, Onix programmers proceeded to work on AAA-level tasks like rewriting the query builder and removing SCSS. After three months, Onix engineer, Vadim, became a senior developer and was assigned to work with Production. Our specialists began to participate in the planning calls and advise Learning Pool on the implementation of complex structures.
Besides the infusion of new blood, Onix’s team brought a new outlook to the projects. Working primarily for outsourcing clients, our specialists develop flexibility and amass large personal libraries of solutions and methods over the course of 10–30 diverse projects. Learning Pool welcomed our suggestions for using different approaches in development, different methods, new processes, and much more.
So, through continuous hard work, high quality code, and a fresh approach to development tasks, within 3 months, Onix’s team was able to win over the customer and convince the leadership to hire more specialists from Onix.
The development process
At the very beginning, we were happy to discover that Learning Pool was using an Agile development process with a Kanban board.
1.The Product Owner works with the business and customers to create basic high-level tasks.
2.A Tech Lead and senior developers jointly analyze these tasks and describe what needs to be completed within the task.
3.The task card gets on the development board.
4.Upon execution, the code needs to be approved by at least two other developers.
5.Then, the task must be tested twice and goes to the stage branch where it is tested again.
6.Only then, will the task finally move to Production.
1.The Product Owner works with the business and customers to create basic high-level tasks.
2.A Tech Lead and senior developers jointly analyze these tasks and describe what needs to be completed within the task.
3.The task card gets on the development board.
4.Upon execution, the code needs to be approved by at least two other developers.
5.Then, the task must be tested twice and goes to the stage branch where it is tested again.
6.Only then, will the task finally move to Production.
1.The Product Owner works with the business and customers to create basic high-level tasks.
2.A Tech Lead and senior developers jointly analyze these tasks and describe what needs to be completed within the task.
3.The task card gets on the development board.
4.Upon execution, the code needs to be approved by at least two other developers.
5.Then, the task must be tested twice and goes to the stage branch where it is tested again.
6.Only then, will the task finally move to Production.
The process was familiar to us, practiced on multiple previous projects. The team was also accustomed to constant changes on Agile projects. However, some aspects of Learning Pool’s process were new to us, such as:
The team’s focus on absolute quality;
A considered, realistic approach to deadlines;
Constant pair programming to share knowledge;
Comprehensive documentation of everything so that new team members can adapt quickly;
Limitation of programming time to 5 hours per day — the rest of the time is allocated to meetings, reviews, planning, etc
Onix’s employees adapted naturally and quickly within the first month. Moreover, thanks to their experience in rapid development under the pressure of deadlines, the team has helped to speed development and task execution at Learning Pool without compromising quality.
There were also retrospectives after each 2-week sprint where they were able to introduce a lot of cool things, such as using Typescript on a large scale, phase-out of SCSS, the projects’ full coverage with tests, rewriting outdated elements, Kudo cards, and more.
The tasks were diverse. Learning Pool’s product comprises six separate but related projects revolving around e-learning. Each of them poses an extensive scope of work both on updating older components and creating new functionality.
The project we work on
Learning Pool is a large system that can be compared with the human body — all organs are independent but are working together to ensure seamless performance and commercial success.
Onix’s teams have been involved in two of Learning Pool’s six projects so far. Both projects are components of a Learning Experience Platform.
Project #1
Large data warehouse. It collects a lot of diverse information and data, analyzes it, and arranges in a certain format into a database. This data can be visualized in hundreds of different graphs or a dozen formats and tables, empowering individuals to make business decisions and draw lessons.
This data warehouse also aggregates data from other services and projects, which makes it a universal tool for work with large volumes of data or statistics.
Project #2
Video streaming and video hosting service with elements of machine learning. Learning Pool positions it as Netflix for learning. The video, audio, and text courses are presented conveniently, interactively, and most importantly, smartly.
The more people use the project, the better the system understands what to offer each user and how to do it compellingly.
Initially, Onix’s personnel included five full-stack developers:
Vadim
Onix’s Senior Developer on Project #1
Yevhenii
Developer on Project #1
Alexander
Onix’s Senior Developer on Project #2
Dmitryi
Developer on Project #2
Vlad
Developer shifting between the two projects
Another full-stack developer and 3 quality assurance specialists have joined them recently.
Onix’s teams both deliver on the client’s ideas, including the applications’ up-to-date and trendy designs, as well as helping to choose the best methods of implementing an idea at general meetings. The improvements we have proposed have been significant, from aspects of the database organization to the implementation of payment methods.
05.
Examples of Onix's work
to improve the product
Technologies update
Onix’s team had all technologies employed in the projects updated to more convenient new versions.
Elimination of the problem
Reviewing Project #2, senior developer Alexander detected a problem in Production related to payments.
Closing off that bug led to a better experience for the end user.
Existing code structuring
Alexander also structured the existing code and improved the format of code writing.
Reviewing and tidying up
Due to the numerous iterations and changes to the codebase over the life cycle of the product, a large amount of work was devoted to tidying up potential memory leaks and other areas that required optimization. One specific task led to over 2GB of RAM being reclaimed, which involved updates to over 1,000 files.
Vadim, Onix’s senior developer on Project #1, took up the immense task, which required reviewing the entire project and fixing every unique leak without breaking another element. The task took two months to complete into production.
Rewriting of the query builder
Yevgenii was tasked with a complete rewrite of the query builder, which required large updates to both the UX (to make it easier to use), but also within the code to remove large amounts of technical debt that had built up over previous iterations. The task required an in depth understanding of the functional requirements for each type of filter the builder is capable of creating.
Because all six projects are connected through a variety of services and threads, a change made incorrectly in one part might cause a bug in another project that no one would be able to explain.
The query builder work is going particularly well and the images we have seen from the progress so far have got myself and others very excited to see this in production. The work he has been doing on this front-end React skills is clearly starting to pay off.
Ian Blackburn, Product Manager,
said of our developer Yevgenii
Covering with tests
Onix’s team promoted covering the whole project with tests. Now we add tests to every pull request.
Updating component
Dmitryi updated the admin panel’s front-end component, namely, Material UI, on Project #2. It took 4,000 lines of code, and now Dmitryi is the main consultant on issues related to Material UI on the project.
Optimizing queries
Vlad, who has worked on both projects, optimized many queries that were not originally designed for the large number of users Learning Pool now had.
Paying attention to detail
On the dashboard, Vlad re-arranged the numerous objects and visual elements with great precision and attention to detail. The entire code was error-free, so the page works flawlessly now.
His work on the dashboard grid ticket was exceptional, many people commented on how closely his work matched Ollie’s designs.»
Ryan Smith, Software Development Team Lead,
said of our developer Vlad
[the dashboard grid] came out really well and has been well received around the business. It’s also been really great to see how Vlad has settled into working on the codebase…»
Ian Blackburn, Product Manager,
about our developer Vlad
06.
Technology stack
It’s difficult to list every technology that we have worked with on Learning Pool’s projects. The major ones include React, Redux, TypeScript, Javascript, PHP, NodeJS, Laravel, Yii, Mongo, MySQL, AWS, CSS, SCSS, HTML, and more.
The tech stack had come together over the last 20 years, influenced by market trends, and tested and proven by time. Consequently, it was legacy code that posed the main difficulty.
07.
Current status and plans
Long-term cooperation
We have been working together for a year, and the amount of work remains stable: an e-learning product development is a never-ending process. At the moment, Onix’s specialists are involved in two projects and are about to start working on the 3rd project for Learning Pool.
Onix’s teams are involved in software development, support, testing, analysis, study, and anything else that the client requires.
Uniting teams
The collaboration continues to go smoothly, members of the internal and offshore teams understand each other perfectly, everyone is encouraged to participate, all proposals are discussed openly, and the decisions are made collectively. Onix’s programmers are given sufficient time so they can fully concentrate on writing high-quality code.
Learning Pool’s achievements during this period have been significant. These include multiple awards, grants, and an unprecedented influx of investments from their clients. Currently, the company boasts:
800
customers worldwide
3.5M
active learners
98%
recommendation rate
Onix’s software developers pride themselves on having contributed to these achievements through their dedication to the projects and the high quality of implementation. Their merits are recognized by the whole team at Learning Pool.