Position: Ruby (on Rails) Engineer
Category: Ruby
English level: fluent
Years of experience: 11

I’m really into optimizations. One of the most interesting tech problems I ever needed to solve was improving the loading speed of the main page of the google stylesheet-like SPA for tracking hours and event of employees. Each row was a representation of a person in some project, and each column was the day. The resulting cell could contain both a number, which meant an offset from standard 8 hours per day, a color, which represented a type of the event that happened that day, and a comment, where some additional things could be put. Each manager had a possibility to see all their people project-wise, that is, many rows and columns. Some top-level managers had too many rows (300+ people in the hierarchy), and while having a full monthly calendar open (≥28 columns), it all resulted in almost 10k+ cells, which, under the hood, required a huge amount of data to be extracted, calculated, and displayed. Previously, it took around 3-5 seconds to render it all, sometimes even more. Briefly, first, I tried to cache some data but we needed some reactivity on the user's side (since the app could be used simultaneously with different people) so caching was a bad strategy. Then I tried to figure out which data is really used, and reduced amount of data and fields to transfer. It saved some hundreds of milliseconds but it surely wasn’t enough. Then, I came to my most favorite thingy, databases, pure SQL, query optimizations. I adjusted and added several ndices (B-tree and bitmap). Then, I extracted ~70% of backend logics and converted it to pure PL/SQL (procedural extension over SQL in Oracle) stored procedures, while also accurately separating (= DRYing) them along different packages. At the end, for the most complex queries I played around with the cost optimizer and introduced some optimization techniques (hints, pipelines, etc). Ultimately, after several weeks, the speed of the page load (calculation + extraction + transfer + display) for the very top manager (1300 people, almost 40k cells) wasn’t higher than 400ms, that is 10x less than the initial figure. I’m really proud of such an optimization.
I’m deeply familiar with Ruby and Ruby on Rails. Since 2014 I’ve been working on and building a dozen of apps from huge monoliths to small API-only apps, and touched versions 3.2–7.0 of Rails and 1.9–3.2 of Ruby. Besides Ruby/Rails (and Sinatra, and Cuba), my strong points are Oracle & PL/SQL and PostgreSQL (writing and tuning complex SQL queries), Shell scripting (from Bash with grep/sed/awk to Perl/Python/C), User testing (Watir, Cypress), and Crystal. I also have a couple-year experience with React and Vue, and I can do some assignments on it, however I’m not a super expert in it. Also, I’m tool agnostic and hence not constraining myself only with Ruby or Rails. For 11+ years I’ve been using various technologies and tools, and always open for new things.