What's it like to be a Software Developer at Kimola?
Kimola is built to develop beautifully designed software products that understand consumer conversations and generate self-explanatory reports for marketing and research professionals. From the day it started, Kimola has been the place for developing NLP technologies and enabling our clients to access data analysis on dashboards with a fascinating user experience.
The company journey officially started in 2014 by presenting the core technology as a project to Dan'l Lewin at Microsoft Innovation Center. The core technology was a common purpose search engine that can detect and connect phrases in a website's content, which leads to creating a Wikipedia-like environment from the Internet. Keeping these NLP technologies at the core, Kimola evolved to a consumer opinion search engine and SaaS products** as it is today.
Programming Languages, Environment and Databases
The primary programming language at Kimola is C#. The entire product family, including Machine Learning infrastructure, is developed on .NET, recently upgraded to .NET 6. Each product consists of more than one project like Web UI, API, Background Apps to isolate engineers in different specialities during the development process.
All SaaS products of Kimola work as a SPA and use React as the javascript library to build web interfaces. On the other hand, Kimola uses Bootstrap as the front-end toolkit to ensure mobile-first development.
Kimola uses Git for the source code management on GitHub. All the projects have an explanatory and up-to-date readme file to onboard a new developer as fast as possible.
Environment
Kimola uses Azure App Service as the serverless application environment. Also, all virtual machines which are dedicated to Kimola's background services and external applications like Redis, RabbitMQ, Elasticsearch and PostgreSQL are hosted on Azure.
92% of the technical infrastructure of Kimola products are running on Ubuntu servers. Developers need to be defined as a user on Kimola's VPN to connect these sources from their local IP addresses. Kimola's VPN also ensures internet access without restrictions for developers who live in countries with internet bans.
As the CI/CD pipeline, Kimola uses Azure Web Apps and GitHub Actions. After the code review process, merging a pull request to the main branch automatically publishes the latest version of the product.
Databases
As a data analytics company, Kimola has an intense relationship with databases and data storing solutions. Currently, Kimola is in a transition period moving from MS SQL to PostgreSQL, and that means shortly Kimola's main SQL database will be PostgreSQL. Despite the popularity of Entity Framework in the .NET world, Kimola uses Dapper as the object-relational mapping tool. So, working as a Software Developer at Kimola requires a good understanding of database query languages.
Kimola uses Apache Cassandra as the main NoSQL database. Write performance of Apache Cassandra as a column-based database provides a robust real-time value handling power to Kimola's products. When Kimola's infrastructure was on Windows servers, Kimola developed Cassandrows, a free packaged distribution of Apache Cassandra. This package easily installs and configures Apache Cassandra as a Windows service, and it's still the most popular distribution for Windows environments.
At Kimola, textual data is pre-processed to semantically evaluate the weight for each text unit like words, phrases or expression patterns. After that, the structured text data is stored in Elasticsearch to apply a special scoring algorithm to provide the most relevant search results based on the business logic in different products.
Also, Kimola uses Redis as the in-memory database. It ensures data consistency across Kimola products in different domains and the best performance for a fluent user experience.
A Typical Day as a Software Developer
Like any other team member at Kimola, a software developer starts the day with the morning meeting. During the call, team members quickly synchronize on their daily plan in less than 30 minutes.
After the morning meeting, a software developer starts working on her tasks, which may be bug fixes or a new feature development. Kimola uses Jira for task management and Slack for daily conversations. All team members stay online on Slack so quick meetings can be held when unexpected issues happen. There will always be unforeseen issues along with routine tasks on Jira.
The day ends again with a meeting where every team member talks about the job they finished. The main goal of the evening meetings is to update all team members with different specialities. So if a software developer completes a new feature development task, an evening meeting is the right time to share the screen and show that new feature in action.
From the day Kimola started, Mustafa Savas, the founder of the company, led the software development and 71% of this time, he built all the products as a single developer. Software developers work closely with him for a smooth onboarding and be guided in different technologies quickly.
Conclusion
At Kimola, we are dedicated to providing the best experience for users and developers who build these products. That is why, we encourage software developer candidates to create a free account on our products to observe the world that we are invited to be a part of.