[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"site-settings":3,"blogpost-how-to-speed-up-your-rails-backend-server":76},{"footer":4,"contact_form":6,"chat_widget":11,"accolades":19,"seo_social":67},{"iso_notice":5},"Wolfpack Digital is an ISO 9001:2015, ISO 27001:2013 and ISO 14001:2015 certified company - © _YEAR_ Wolfpack Digital. All rights reserved.",{"budgets":7},[8,9,10],"Under $50.000","Between $50.000 - 200.000","Over $200.000",{"consent":12},{"greeting":13,"title":14,"body":15,"accept_label":16,"decline_label":17,"declined_message":18},"Awoo! I'm Wolfpack Digital's AI assistant. Ask me anything about our services, process, or team, and if you want a project estimate, I can point you to our AI Estimator.","Data Privacy","\u003Cp>Hi there! We would love to talk with you. Under the EU General Data Protection Regulation, we need your approval for our use of personal information (e.g. your name and email address) you may provide as we communicate:\u003C\u002Fp>\n\u003Col>\n  \u003Cli>We'll store your personal information so that we can pick up the conversation if we talk later.\u003C\u002Fli>\n  \u003Cli>We may send you emails to follow up on our discussion here.\u003C\u002Fli>\n  \u003Cli>We may send you emails about our upcoming services and promotions.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>Is this okay with you?\u003C\u002Fp>","Yes, I Accept","No, Not Now","No problem. Come back if you change your mind.",{"winnersOfList":20,"awardsList":33,"inHouseAppImages":50,"certificationsList":54},[21,25,29],{"alt":22,"href":23,"image":24},"European Awards","https:\u002F\u002Fwww.theeuropeanawards.eu\u002Fpremiado\u002Fwolfpack-digital-awarded-in-the-app-development-category","\u002Fimages\u002Fabout-us\u002Fwinners\u002Feuropean.svg",{"alt":26,"href":27,"image":28},"Webby Awards","https:\u002F\u002Fwinners.webbyawards.com\u002F2024\u002Fwebsites-and-mobile-sites\u002Fresponsible-technology\u002Fresponsible-ai\u002F275408\u002Fequality-ai-fair-and-unbiased-algorithms-to-eliminate-discrimination-in-machine-learning-models","\u002Fimages\u002Fabout-us\u002Fwinners\u002Fwebby.svg",{"alt":30,"href":31,"image":32},"Wolfpack Digital — Gold, Digital & Creative Agency Excellence, eir business Chambers Ireland Awards 2026","https:\u002F\u002Fchambersawards.ie\u002F2026-winners\u002F","https:\u002F\u002Fcdn.wolfpack-digital.com\u002Fstore\u002Fcb786b7ba09fce584e78fac33bc70a07.png",[34,38,42,46],{"alt":35,"href":36,"image":37},"Clutch 1000 List Reveals Top-Rated Business Service Providers of 2023","https:\u002F\u002Fclutch.co\u002Fpress-releases\u002Fclutch-1000-fall-2023","\u002Fimages\u002Fabout-us\u002Fawards\u002Fclutch.svg",{"alt":39,"href":40,"image":41},"Clutch Recognizes the 1000 Best B2B Service Providers in its Exclusive 2019 Clutch 1000 List","https:\u002F\u002Fclutch.co\u002Fpress-releases\u002Frecognizes-1000-best-b2b-service-providers-its-exclusive-2019-1000-list","\u002Fimages\u002Fabout-us\u002Fawards\u002Fglobal.svg",{"alt":43,"href":44,"image":45},"Mobile App Daily Award","","\u002Fimages\u002Fabout-us\u002Fawards\u002Fmobile-app-daily.svg",{"alt":47,"href":48,"image":49},"Manifest Award","https:\u002F\u002Fthemanifest.com\u002Fro\u002Fweb-development\u002Fcompanies","\u002Fimages\u002Fabout-us\u002Fawards\u002Fmanifest.svg",[51],{"alt":52,"href":44,"image":53},"Wolfpack Labs","\u002Fimages\u002Fhomepage\u002Fawards\u002Flabs.svg",[55,59,63],{"alt":56,"href":57,"image":58},"ISO 27001 Certification","https:\u002F\u002Fwww.qscert.com\u002Fcs\u002Fissued-certificates\u002F?certID=_7690LD367","\u002Fimages\u002Fabout-us\u002Fcertifications\u002Fiso-27001.svg",{"alt":60,"href":61,"image":62},"ISO 9001 Certification","https:\u002F\u002Fwww.qscert.com\u002Fcs\u002Fissued-certificates\u002F?certID=_7690LBDB0","\u002Fimages\u002Fabout-us\u002Fcertifications\u002Fiso-9001.svg",{"alt":64,"href":65,"image":66},"ISO 14001 Certification","https:\u002F\u002Fwww.qscert.com\u002Fma\u002Fissued-certificates\u002F?certID=_7690LZSGS","\u002Fimages\u002Fabout-us\u002Fcertifications\u002Fiso-14001.svg",{"default_og_image_urls":68,"default_og_image_alt":72,"og_site_name":72,"og_locale":73,"twitter_site":74,"page_type_defaults":75},[69],{"style":70,"url":71},"og","\u002Fimages\u002Fsocial_share_preview.jpg","Wolfpack Digital","en_US","@DigitalWolfpack",{},["Reactive",77],{"title":78,"body":79,"slug":80,"featured_image_urls":81,"meta_tags":106,"reading_time":114,"title_size":115,"tag_list":116,"formatted_published_at":119,"short_description":120,"categories":121,"alt_text":113,"published_at":122,"content_updated_at":123,"formatted_content_updated_at":123,"key_takeaways":124,"faqs":130,"updated_at":146,"canonical_override":44,"no_index":147,"canonical_url":148,"publishers":149},"How to Speed Up Your Rails Backend Server","\u003Cp>Many small things can slow down a Rails backend server. We cannot cover them all in one article. So today we focus on the most common culprit: the N+1 query problem.\u003C\u002Fp>\u003Ch2>What is an N+1 query?\u003C\u002Fh2>\u003Cp>Let's start with the basics. What is an N+1 query, and why is it a problem?\u003C\u002Fp>\u003Cp>An N+1 query is a common mistake that can slow your app badly. It happens when your code runs N extra queries to fetch data that the first query could have loaded. The larger the N, the slower your app gets.\u003C\u002Fp>\u003Cp>Here is a simple example. Say you have a one-to-many relationship and you want all parent records with their children. A naive query loads all the parents first. Then it runs one more query per parent to load the children.\u003C\u002Fp>\u003Cp>This creates a flood of queries. Each one adds latency and drags down Ruby on Rails performance. Worse, they are hard to spot. Every single query runs fast, so benchmarking tools often miss them.\u003C\u002Fp>\u003Ch2>How do you fix N+1 queries?\u003C\u002Fh2>\u003Cp>The general fix, in any framework, is to use \u003Ccode>JOINS\u003C\u002Fcode>. A join pulls the lazy-loaded child records in the first query. So you avoid one extra query per record.\u003C\u002Fp>\u003Cp>Most frameworks also offer libraries that detect N+1 queries or eager-load associations for you. Rails is no exception.\u003C\u002Fp>\u003Ch2>Our example setup\u003C\u002Fh2>\u003Cp>For the rest of this guide, we use a simple \u003Ca href=\"https:\u002F\u002Fwww.wolfpack-digital.com\u002Fblogposts\u002Fwhy-use-ruby-on-rails-for-web-app-development\" rel=\"noopener noreferrer\" target=\"_blank\" style=\"color: rgb(250, 53, 123)\">Ruby on Rails\u003C\u002Fa> example. It is prone to N+1 queries, but easy to fix. We have a \u003Ccode>Parent\u003C\u002Fcode> class and a \u003Ccode>Child\u003C\u002Fcode> class in a one-to-many relationship.\u003C\u002Fp>\u003Cp>\u003Ccode># models\u002Fparent.rb\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Ccode> class Parent &lt; ApplicationRecord\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Ccode>   has_many :children\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Ccode> end\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Ccode> \u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Ccode> # models\u002Fchild.rb\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Ccode> class Child &lt; ApplicationRecord\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Ccode>   belongs_to :parent\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Ccode> end\u003C\u002Fcode>\u003C\u002Fp>\u003Ch2>The Rails way: includes\u003C\u002Fh2>\u003Cp>As noted, joins are a good fix. Luckily, Rails and Active Record give us a great method for this: \u003Ccode>includes\u003C\u002Fcode>. It eager-loads the associations you name.\u003C\u002Fp>\u003Cp>In a serializer and controller, natural code looks like this:\u003C\u002Fp>\u003Cp>\u003Ccode># serializers\u002Fparent_serializer.rb\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Ccode> class ParentSerializer &lt; ActiveModel::Serializer\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Ccode>   attributes :id, :string_field\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Ccode>   has_many :children\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Ccode> end\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Ccode> \u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Ccode> # controllers\u002Fparents_controller.rb\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Ccode> def index\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Ccode>   render json: Parent.all\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Ccode> end\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>The serializer also renders each parent's children. Because of how Active Record works, this runs a new query for every parent.\u003C\u002Fp>\u003Cp>Our database held 21 \u003Ccode>Parent\u003C\u002Fcode> records. This logic ran a fresh query for each one. Now imagine 10,000 records.\u003C\u002Fp>\u003Cp>\u003Cimg src=\"https:\u002F\u002Fs3-eu-west-2.amazonaws.com\u002Fwolfpack-digital-attachments-production\u002Fckeditor_assets\u002Fpictures\u002F367\u002Fcontent_How_to_speed_up_your_Rails_backend_server.png\" alt=\"Rails server log showing dozens of repeated Child Load SELECT queries, one per parent, illustrating the N+1 problem\">\u003C\u002Fp>\u003Cp>The simplest fix adds just a few characters:\u003C\u002Fp>\u003Cp>\u003Ccode># old: render json: Parent.all\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Ccode> render json: Parent.includes(:children).all\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>Now the log looks very different:\u003C\u002Fp>\u003Cp>\u003Cimg src=\"https:\u002F\u002Fs3-eu-west-2.amazonaws.com\u002Fwolfpack-digital-attachments-production\u002Fckeditor_assets\u002Fpictures\u002F368\u002Fcontent_How_to_speed_up_your_Rails_backend_server_2.png\" alt=\"Rails log after using includes: just one Parent Load and one Child Load query with a single WHERE parent_id IN clause\">\u003C\u002Fp>\u003Cp>This is a clear win. The logs now show 2 queries instead of N+1: one to load the parents, and one to load all their children.\u003C\u002Fp>\u003Ch2>How does includes work?\u003C\u002Fh2>\u003Cp>The \u003Ccode>includes\u003C\u002Fcode> method works in two ways, based on the query. Most of the time it uses \u003Ccode>preload\u003C\u002Fcode>. In some cases it uses \u003Ccode>eager_load\u003C\u002Fcode>. Active Record picks \u003Ccode>preload\u003C\u002Fcode> by default, unless the association also appears in another clause, such as \u003Ccode>where\u003C\u002Fcode>.\u003C\u002Fp>\u003Cp>The nice part is flexibility. You can preload several relations at once with \u003Ccode>Parent.includes(:child1, :child2, :child3)\u003C\u002Fcode>. You can also load nested associations with \u003Ccode>Parent.includes(child: :grandchild)\u003C\u002Fcode>, and even deeper.\u003C\u002Fp>\u003Ch2>Other options: references and joins\u003C\u002Fh2>\u003Cp>Rails and Active Record give you three main methods for handling associations:\u003C\u002Fp>\u003Col>\n\u003Cul>\u003Cli>\n\u003Cstrong>includes\u003C\u002Fstrong> preloads associated models to avoid N+1 queries. Use it when you plan to render those models.\u003C\u002Fli>\u003C\u002Ful>\n\u003Cul>\u003Cli>\n\u003Cstrong>references\u003C\u002Fstrong> works with includes. It forces the tables to be joined rather than loaded separately.\u003C\u002Fli>\u003C\u002Ful>\n\u003Cul>\u003Cli>\n\u003Cstrong>joins\u003C\u002Fstrong> is for when you need an associated table in a \u003Ccode>where\u003C\u002Fcode> or \u003Ccode>order\u003C\u002Fcode> clause, but don't need to render it.\u003C\u002Fli>\u003C\u002Ful>\n\u003C\u002Fol>\u003Ch2>How to catch N+1 queries\u003C\u002Fh2>\u003Cp>We don't think about N+1 queries on every line of code. And we shouldn't. That is what tools are for.\u003C\u002Fp>\u003Cp>You can also run an eye test. Debug a slow controller action and watch how many queries it fires. The problem is usually obvious.\u003C\u002Fp>\u003Cp>For an easier way, many libraries can help. The one we use most is Bullet, the most popular Rails option. The basic setup takes only a few lines:\u003C\u002Fp>\u003Cp>\u003Ccode>config.after_initialize do\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Ccode>   Bullet.enable = true\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Ccode>   Bullet.bullet_logger = true\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Ccode>   Bullet.raise = true # fail the test if an N+1 query occurs\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Ccode> end\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>We add this to the test environment. That way, we catch issues when running tests locally and in CI. Bullet also supports many options, such as whitelisting associations so valid cases don't fail tests.\u003C\u002Fp>\u003Ch2>Does it matter? The benchmarks\u003C\u002Fh2>\u003Cp>There are many benchmark resources on N+1 queries already. Here we ran a quick local test to show how much even a few records can slow things down.\u003C\u002Fp>\u003Cp>We used the same \u003Ccode>Parent\u003C\u002Fcode> and \u003Ccode>Child\u003C\u002Fcode> models. We tested 20, 100, and 1,000 parent records. We compared the naive version (with N+1 queries) against the version using \u003Ccode>includes\u003C\u002Fcode>. To make it realistic, each test had ten times more children than parents:\u003C\u002Fp>\u003Cp>\u003Ccode>FactoryBot.create_list(:parent, number)\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>\u003Ccode> FactoryBot.create_list(:child, number * 10, parent_id: Parent.all.pluck(:id).sample)\u003C\u002Fcode>\u003C\u002Fp>\u003Cp>Here are the results:\u003C\u002Fp>\u003Col>\n\u003Cul>\u003Cli>\n\u003Cstrong>20 parents, 200 children (about 4x slower):\u003C\u002Fstrong> 540ms without \u003Ccode>includes\u003C\u002Fcode>, 136ms with it.\u003C\u002Fli>\u003C\u002Ful>\n\u003Cul>\u003Cli>\n\u003Cstrong>100 parents, 1,000 children (about 2x slower):\u003C\u002Fstrong> 716ms without \u003Ccode>includes\u003C\u002Fcode>, 339ms with it.\u003C\u002Fli>\u003C\u002Ful>\n\u003Cul>\u003Cli>\n\u003Cstrong>1,000 parents, 10,000 children (about 2x slower):\u003C\u002Fstrong> 3.38s without \u003Ccode>includes\u003C\u002Fcode>, 1.85s with it.\u003C\u002Fli>\u003C\u002Ful>\n\u003C\u002Fol>\u003Cp>The takeaway is clear. Fixing N+1 queries is one of the easiest wins for Ruby on Rails performance. And it costs you only a few extra characters.\u003C\u002Fp>\u003Ch2>Speed up your Rails app with Wolfpack Digital\u003C\u002Fh2>\u003Cp>Fast backends make happy users. Fixing N+1 queries is just one step. Want a Rails app that scales? Learn \u003Ca href=\"https:\u002F\u002Fwww.wolfpack-digital.com\u002Fblogposts\u002Fwhy-use-ruby-on-rails-for-web-app-development\" rel=\"noopener noreferrer\" target=\"_blank\" style=\"color: rgb(250, 53, 123)\">why we build with Ruby on Rails\u003C\u002Fa>, or read our tips on \u003Ca href=\"https:\u002F\u002Fwww.wolfpack-digital.com\u002Fblogposts\u002Fdeveloping-secure-web-apps-with-ruby-on-rails\" rel=\"noopener noreferrer\" target=\"_blank\" style=\"color: rgb(250, 53, 123)\">secure Rails apps\u003C\u002Fa>.\u003C\u002Fp>\u003Cp>You can also see how our \u003Ca href=\"https:\u002F\u002Fwww.wolfpack-digital.com\u002Fservices\u002Fweb-development\" rel=\"noopener noreferrer\" target=\"_blank\" style=\"color: rgb(250, 53, 123)\">web development team\u003C\u002Fa> works, or dig into the official \u003Ca href=\"https:\u002F\u002Fguides.rubyonrails.org\u002Factive_record_querying.html\" rel=\"noopener noreferrer\" target=\"_blank\" style=\"color: rgb(250, 53, 123)\">Active Record Query Interface\u003C\u002Fa> guide. Ready to build? \u003Cstrong style=\"color: rgb(250, 53, 123)\">\u003Ca href=\"https:\u002F\u002Fwww.wolfpack-digital.com\u002Fcontact\" rel=\"noopener noreferrer\" target=\"_blank\">Get in touch\u003C\u002Fa>\u003C\u002Fstrong>.\u003C\u002Fp>","how-to-speed-up-your-rails-backend-server",[82,85,88,91,94,97,100,103],{"style":83,"url":84},"640","https:\u002F\u002Fcdn.wolfpack-digital.com\u002Fstore\u002Fblogpost\u002F104\u002Ffeatured_image\u002F640\u002Fwolfpack_digital_How_to_speed_up_your_Rails_backend_server_.webp",{"style":86,"url":87},"768","https:\u002F\u002Fcdn.wolfpack-digital.com\u002Fstore\u002Fblogpost\u002F104\u002Ffeatured_image\u002F768\u002Fwolfpack_digital_How_to_speed_up_your_Rails_backend_server_.webp",{"style":89,"url":90},"1024","https:\u002F\u002Fcdn.wolfpack-digital.com\u002Fstore\u002Fblogpost\u002F104\u002Ffeatured_image\u002F1024\u002Fwolfpack_digital_How_to_speed_up_your_Rails_backend_server_.webp",{"style":92,"url":93},"1366","https:\u002F\u002Fcdn.wolfpack-digital.com\u002Fstore\u002Fblogpost\u002F104\u002Ffeatured_image\u002F1366\u002Fwolfpack_digital_How_to_speed_up_your_Rails_backend_server_.webp",{"style":95,"url":96},"1600","https:\u002F\u002Fcdn.wolfpack-digital.com\u002Fstore\u002Fblogpost\u002F104\u002Ffeatured_image\u002F1600\u002Fwolfpack_digital_How_to_speed_up_your_Rails_backend_server_.webp",{"style":98,"url":99},"1920","https:\u002F\u002Fcdn.wolfpack-digital.com\u002Fstore\u002Fblogpost\u002F104\u002Ffeatured_image\u002F1920\u002Fwolfpack_digital_How_to_speed_up_your_Rails_backend_server_.webp",{"style":101,"url":102},"thumb","https:\u002F\u002Fcdn.wolfpack-digital.com\u002Fstore\u002Fblogpost\u002F104\u002Ffeatured_image\u002Fthumb\u002Fwolfpack_digital_How_to_speed_up_your_Rails_backend_server_.webp",{"style":104,"url":105},"original","https:\u002F\u002Fcdn.wolfpack-digital.com\u002Fstore\u002Fblogpost\u002F104\u002Ffeatured_image\u002Foriginal\u002Fwolfpack_digital_How_to_speed_up_your_Rails_backend_server_.webp",{"title":78,"description":107,"keywords":108,"contact_form:title":109,"contact_form:cta":110,"og:site_name":72,"og:type":111,"og:locale":73,"twitter:card":112,"twitter:site":74,"twitter:creator":74,"og:title":78,"og:image:alt":113,"twitter:title":78},"Fix the N+1 query problem to speed up your Rails backend. Learn how includes, references, and joins boost Ruby on Rails performance, with benchmarks.","ruby on rails performance, rails backend, n+1 queries, rails performance optimization, wolfpack digital","contact us","send message","article","summary_large_image","Purple collage of railway tracks merging into server racks, titled How to Speed up your Rails Backend Server","5 min",32,[117,118],"ruby-on-rails","web-development","Jun 10, 2021","How to speed up your Rails backend by fixing the N+1 query problem, the most common cause of slow Ruby on Rails performance.",[118],"2021-06-10T14:14:16.000Z",null,[125,126,127,128,129],"The N+1 query problem is the most common cause of a slow Rails backend, running one extra query per record.","N+1 queries are hard to spot because each individual query runs fast and slips past benchmarking tools.","In Rails, the includes method eager-loads associations and collapses N+1 queries into just two queries.","Use references and joins alongside includes, depending on whether you need to render the associated data.","Catch N+1 queries automatically with the Bullet gem in your test and CI environments; benchmarks show 2-4x speedups.",[131,134,137,140,143],{"answer":132,"question":133},"It happens when your code runs one query to load a set of records, then one extra query per record to load an association. With N records, you get N+1 queries, which adds latency and slows your backend.","What is the N+1 query problem in Rails?",{"answer":135,"question":136},"Use the includes method to eager-load associations, for example Parent.includes(:children).all. This collapses the N+1 queries into two: one to load the parents and one to load all the children.","How do you fix N+1 queries in Ruby on Rails?",{"answer":138,"question":139},"includes preloads associated models to avoid N+1 queries. references forces those tables to be joined rather than loaded separately. joins is used when you only need an associated table in a where or order clause and won't render it.","What is the difference between includes, references, and joins?",{"answer":141,"question":142},"Use the Bullet gem, the most popular Rails option. Enable it in your test environment so it flags N+1 queries when you run tests locally and in CI. You can also inspect a slow controller's query logs by eye.","How can I detect N+1 queries automatically?",{"answer":144,"question":145},"In our local benchmarks, using includes made queries roughly 2 to 4 times faster. For example, 1,000 parents with 10,000 children dropped from 3.38 seconds to 1.85 seconds.","How much faster is a Rails app after fixing N+1 queries?","2026-07-02T06:48:10.129Z",false,"https:\u002F\u002Fwww.wolfpack-digital.com\u002Fblogposts\u002Fhow-to-speed-up-your-rails-backend-server",[150],{"id":151,"author":152,"short_description":153,"role":154,"avatar_urls":155,"cover_urls":163,"linkedin_link":182,"instagram_link":44,"x_link":44,"meta_tags":183,"last_published_at":187,"same_as":188},14,"Victor Motogna","\u003Cp>Victor Motogna is the Head of Web Development at Wolfpack Digital, leading the web development team and driving innovation in scalable, secure web applications. With a Bachelor's in Computer Science and a Master's in High Performance Computing &amp; Big Data Analytics, he brings deep technical expertise and a forward-thinking approach to building enterprise-grade solutions.\u003C\u002Fp>\u003Cbr>\u003Cp>As both a technical leader and hands-on contributor, Victor works across the full technology stack including Ruby on Rails, Vue.js, Nuxt.js, JavaScript, and Python, with extensive experience in DevOps frameworks and cloud infrastructure (Azure, AWS, Kubernetes). His role extends beyond traditional web development—he plays a key part in architecting AI-powered features, training machine learning models, and ensuring AI integration delivers genuine business value rather than following trends.\u003C\u002Fp>\u003Cbr>\u003Cp>Victor's leadership philosophy centers on balancing technical excellence with practical delivery. He excels at translating complex technical concepts into clear business language, architecting solutions that strike the right balance between technical sophistication and MVP speed, and staying ahead of rapid technological change. His approach emphasizes building stable, secure end-to-end solutions while constantly seeking smarter, more efficient development processes.\u003C\u002Fp>\u003Cbr>\u003Cp>A frequent speaker at technology conferences across Europe, Victor shares insights on modern web development practices, AI integration strategies, cloud architecture, and building high-performing development teams. His writing draws on real-world experience delivering 250+ digital products and reflects his commitment to using technology to create meaningful solutions that improve people's lives.\u003C\u002Fp>\u003Cbr>\u003Cp>Through his blog contributions, Victor explores topics at the intersection of web development, AI, and entrepreneurship, focusing on practical implementation strategies, technology decision-making, and fostering knowledge exchange within development teams.\u003C\u002Fp>\u003Cbr>\u003Cp>\u003Cstrong>Areas of expertise:\u003C\u002Fstrong> Web application architecture, Ruby on Rails development, Vue.js\u002FNuxt.js, AI integration, machine learning model training, DevOps and cloud infrastructure, team leadership, full-stack development, technical strategy, scalable systems design.\u003C\u002Fp>","Head of Web Development",[156,158,161],{"style":101,"url":157},"https:\u002F\u002Fcdn.wolfpack-digital.com\u002Fstore\u002Fpublisher\u002F14\u002Favatar\u002Fthumb\u002Fimage_processing20211021-4-tz7chx%20%281%29.webp",{"style":159,"url":160},"medium","https:\u002F\u002Fcdn.wolfpack-digital.com\u002Fstore\u002Fpublisher\u002F14\u002Favatar\u002Fmedium\u002Fimage_processing20211021-4-tz7chx%20%281%29.webp",{"style":104,"url":162},"https:\u002F\u002Fcdn.wolfpack-digital.com\u002Fstore\u002Fpublisher\u002F14\u002Favatar\u002Foriginal\u002Fimage_processing20211021-4-tz7chx%20%281%29.webp",[164,166,168,170,172,174,176,178,180],{"style":83,"url":165},"https:\u002F\u002Fcdn.wolfpack-digital.com\u002Fstore\u002Fpublisher\u002F14\u002Fcover_image\u002F640\u002FVictor.webp",{"style":86,"url":167},"https:\u002F\u002Fcdn.wolfpack-digital.com\u002Fstore\u002Fpublisher\u002F14\u002Fcover_image\u002F768\u002FVictor.webp",{"style":89,"url":169},"https:\u002F\u002Fcdn.wolfpack-digital.com\u002Fstore\u002Fpublisher\u002F14\u002Fcover_image\u002F1024\u002FVictor.webp",{"style":92,"url":171},"https:\u002F\u002Fcdn.wolfpack-digital.com\u002Fstore\u002Fpublisher\u002F14\u002Fcover_image\u002F1366\u002FVictor.webp",{"style":95,"url":173},"https:\u002F\u002Fcdn.wolfpack-digital.com\u002Fstore\u002Fpublisher\u002F14\u002Fcover_image\u002F1600\u002FVictor.webp",{"style":98,"url":175},"https:\u002F\u002Fcdn.wolfpack-digital.com\u002Fstore\u002Fpublisher\u002F14\u002Fcover_image\u002F1920\u002FVictor.webp",{"style":101,"url":177},"https:\u002F\u002Fcdn.wolfpack-digital.com\u002Fstore\u002Fpublisher\u002F14\u002Fcover_image\u002Fthumb\u002FVictor.webp",{"style":159,"url":179},"https:\u002F\u002Fcdn.wolfpack-digital.com\u002Fstore\u002Fpublisher\u002F14\u002Fcover_image\u002Fmedium\u002FVictor.webp",{"style":104,"url":181},"https:\u002F\u002Fcdn.wolfpack-digital.com\u002Fstore\u002Fpublisher\u002F14\u002Fcover_image\u002Foriginal\u002FVictor.webp","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fvictor-motogna\u002F",{"title":184,"description":185,"keywords":44,"contact_form:title":109,"contact_form:cta":110,"og:site_name":72,"og:type":186,"og:locale":73,"twitter:card":112,"twitter:site":74,"twitter:creator":74},"Victor - Head of Web Development | Wolfpack Digital Blog","Web development leader specializing in Ruby on Rails, Vue.js, and AI integration. Victor shares insights on scalable architecture, cloud infrastructure, and modern web development.","website","2025-09-26T09:15:00.000Z",[182]]