[{"data":1,"prerenderedAt":998},["ShallowReactive",2],{"/blog/commits-do-not-equal-productivity":3,"navigation-en-us":210,"banner-en-us":638,"footer-en-us":648,"blog-post-authors-en-us-Job van der Voort":893,"blog-related-posts-en-us-commits-do-not-equal-productivity":909,"blog-promotions-en-us":934,"next-steps-en-us":988},{"id":4,"title":5,"authors":6,"body":8,"category":186,"date":187,"description":188,"extension":189,"externalUrl":190,"faq":190,"featured":191,"heroImage":192,"meta":193,"navigation":200,"path":201,"seo":202,"slug":206,"stem":207,"tags":190,"template":208,"updatedDate":190,"__hash__":209},"blogPosts/en-us/blog/commits-do-not-equal-productivity.md","Commits Do Not Equal Productivity",[7],"Job van der Voort",{"type":9,"value":10,"toc":176},"minimark",[11,20,25,28,31,34,37,41,44,55,63,66,69,73,76,83,89,93,96,102,105,109,112,119,122,128,135,138,145,149,152,155,173],[12,13,14,15,19],"p",{},"If you’re interested in an indication of productivity of individual software engineers (programmers), don’t look at commits or other measures of activity. Look at ",[16,17,18],"em",{},"consistent progress"," instead.\nIn this post we'll consider some ways people evaluate or represent productivity,\nand I ask for your thoughts on what you track and what you think matters.",[21,22,24],"h2",{"id":23},"commits","Commits",[12,26,27],{},"Commits are arbitrary changes captured in a single moment in time. Their size and frequency do not correlate with the work needed to achieve that change. At best, commits can be viewed as an indication of activity.",[12,29,30],{},"As a general rule, a programmer should consistently be making commits throughout their work. This can be reduced to ‘a programmer should write code’, which is not very enlightening.\nThe frequency of the commits, nor the size should be compared between programmers. What should be committed is often a matter of personal preference and is subject to debate.",[12,32,33],{},"It can be argued that diminishing commits by a single engineer on a single project can be an indicator of lower productivity. However, that engineer might’ve just read a Hacker News thread that argues for squashing smaller commits.",[12,35,36],{},"Don’t measure productivity with commits.",[21,38,40],{"id":39},"weights-and-points","Weights and Points",[12,42,43],{},"Are you using an issue tracker with weights or points? That’s a good start. You can now get a sense of the total volume of work planned and delivered by a team.",[12,45,46,47,50,51,54],{},"Typically, you’d sum the total sum of delivered work and call that ",[16,48,49],{},"velocity",". You now have a good idea how well your ",[16,52,53],{},"team"," can estimate the effort required to build things versus how much they actually build things.",[12,56,57,58,62],{},"Estimating issue weights is notoriously hard and is advised to be done in a group, using games like ",[59,60,61],"span",{},"Planning Poker",". The issue weight should be taken as an abstract idea of the total body of work, not directly related to the amount of time necessary for this task (this is also why people often use the Fibonacci sequence, and as bigger tasks are harder to estimate).",[12,64,65],{},"Measuring the productivity of individuals by looking at velocity on an engineer-by-engineer basis would mean they’d be measured against the ability of the group to estimate work load. Worse is that this would encourage engineers to over-estimate or otherwise ‘play the system’.",[12,67,68],{},"Don’t measure productivity with velocity.",[21,70,72],{"id":71},"progress","Progress",[12,74,75],{},"To get an indication of productivity, look at the progress someone is making in their work. In this sense, progress means someone is taking deliberate steps to work towards solving the problem they are working on.",[12,77,78,79,82],{},"The best way to get an idea of someone’s progress is to look at ",[16,80,81],{},"both their communication and activity",". An effective engineer will either be making commits to further their progress or communicate in some way about their work. It’s only when you look at both these factors that you can say something about their productivity.",[12,84,85],{},[86,87,88],"strong",{},"A productive engineer communicates and commits. At times, only one of the two.",[21,90,92],{"id":91},"how-to-gauge-productivity","How to Gauge Productivity",[12,94,95],{},"I argue that an engineer’s productivity should not be judged by their deliverables or direct output, rather it should be measured by progress. Progress as I define it, is hard to measure, but easy to gauge:",[97,98,99],"blockquote",{},[12,100,101],{},"How is your work going?",[12,103,104],{},"A productive programmer will tell you to stop distracting them and come back\nin an hour. And then they’ll give you a pretty good idea of their productivity.",[21,106,108],{"id":107},"how-to-measure-productivity","How to Measure Productivity",[12,110,111],{},"Right now, in GitLab you can see your commit activity in your profile:",[12,113,114],{},[115,116],"img",{"alt":117,"src":118},"In your profile, view commits per day in GitLab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782404837/site/Content%20Images/commitsprod/commits.png",[12,120,121],{},"and get an idea of how everyone in a project is committing on average during\nthe day:",[12,123,124],{},[115,125],{"alt":126,"src":127},"View average project commit activity in GitLab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782404838/site/Content%20Images/commitsprod/perday.png",[12,129,130,131,134],{},"But both of these measures only relate to direct commit activity.\nIn GitLab Enterprise Edition, you can get a detailed overview of\nthe activity of everyone in a group with our ",[59,132,133],{},"Contribution Analytics",".\nHere, we give a better overview of the total amount of activity of any\ndeveloper, but in all fairness doesn't resolve all problems that I've outlined.",[12,136,137],{},"In future releases, we're planning to add more analytics to GitLab,\nboth relating to code (quality) and activity of its users. I hope that by\ncombining more data in smart ways, we can give better insights into developer\nactivity.",[12,139,140,141,144],{},"I'm especially interested to hear what you think we should measure.\nPlease feel free to leave a comment below or ",[59,142,143],{},"create an issue"," suggesting\nhow we can improve analytics in GitLab.",[21,146,148],{"id":147},"live-tutorial-gitlab-workflow","Live tutorial: GitLab workflow",[12,150,151],{},"In our next webcast on March 10th, we'll dig into the GitLab workflow.",[12,153,154],{},"This will take you through the steps of making an issue, merge requests, and\nusing tools in GitLab for cross-referencing and keeping your issue tracker\norganized with labels and milestones.",[156,157,158,162,165],"ul",{},[159,160,161],"li",{},"Date: Thursday, March 10, 2016",[159,163,164],{},"Time: 5pm (17:00) UTC; 12pm EST; 9am PST",[159,166,167],{},[168,169,172],"a",{"href":170,"rel":171},"http://page.gitlab.com/mar-2016-gitlab-introduction.html",[],"Register here",[12,174,175],{},"Can't make it? Register anyway, and we'll send you a link to watch it later.",{"title":177,"searchDepth":178,"depth":178,"links":179},"",2,[180,181,182,183,184,185],{"id":23,"depth":178,"text":24},{"id":39,"depth":178,"text":40},{"id":71,"depth":178,"text":72},{"id":91,"depth":178,"text":92},{"id":107,"depth":178,"text":108},{"id":147,"depth":178,"text":148},"insights","2016-03-08","In this post we'll consider some ways people evaluate or represent productivity, and I ask for your thoughts on what you track and what you think matters.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749684616/Blog/Hero%20Images/racing.png",{"excerpt":194},{"type":9,"value":195},[196],[12,197,14,198,19],{},[16,199,18],{},true,"/en-us/blog/commits-do-not-equal-productivity",{"title":5,"description":188,"ogTitle":5,"ogDescription":188,"noIndex":191,"ogImage":192,"ogUrl":203,"ogSiteName":204,"ogType":205,"canonicalUrls":203},"https://about.gitlab.com/blog/commits-do-not-equal-productivity","https://about.gitlab.com","article","commits-do-not-equal-productivity","en-us/blog/commits-do-not-equal-productivity","BlogPost","JDSqenSMY6egLSprQwfyzqbpGjfCuLE_5VF6rfSvQG0",{"logo":211,"freeTrial":216,"sales":221,"login":226,"items":231,"search":558,"minimal":589,"duo":608,"switchNav":617,"pricingDeployment":628},{"config":212},{"href":213,"dataGaName":214,"dataGaLocation":215},"/","gitlab logo","header",{"text":217,"config":218},"Get free trial",{"href":219,"dataGaName":220,"dataGaLocation":215},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":222,"config":223},"Request a demo",{"href":224,"dataGaName":225,"dataGaLocation":215},"/sales/?contact-topic=request-demo","sales",{"text":227,"config":228},"Sign in",{"href":229,"dataGaName":230,"dataGaLocation":215},"https://gitlab.com/users/sign_in/","sign in",[232,261,361,366,480,536],{"text":233,"config":234,"menu":236},"Platform",{"dataNavLevelOne":235},"platform",{"type":237,"columns":238},"cards",[239,245,253],{"title":233,"description":240,"link":241},"The intelligent orchestration platform for DevSecOps",{"text":242,"config":243},"Explore our Platform",{"href":244,"dataGaName":235,"dataGaLocation":215},"/platform/",{"title":246,"description":247,"link":248},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":249,"config":250},"Meet GitLab Duo",{"href":251,"dataGaName":252,"dataGaLocation":215},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":254,"description":255,"link":256},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":257,"config":258},"Learn more",{"href":259,"dataGaName":260,"dataGaLocation":215},"/why-gitlab/","why gitlab",{"text":262,"left":200,"config":263,"menu":265},"Product",{"dataNavLevelOne":264},"solutions",{"type":266,"link":267,"columns":271,"feature":340},"lists",{"text":268,"config":269},"View all Solutions",{"href":270,"dataGaName":264,"dataGaLocation":215},"/solutions/",[272,296,319],{"title":273,"description":274,"link":275,"items":280},"Automation","CI/CD and automation to accelerate deployment",{"config":276},{"icon":277,"href":278,"dataGaName":279,"dataGaLocation":215},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[281,285,288,292],{"text":282,"config":283},"CI/CD",{"href":284,"dataGaLocation":215,"dataGaName":282},"/solutions/continuous-integration/",{"text":246,"config":286},{"href":251,"dataGaLocation":215,"dataGaName":287},"gitlab duo agent platform - product menu",{"text":289,"config":290},"Source Code Management",{"href":291,"dataGaLocation":215,"dataGaName":289},"/solutions/source-code-management/",{"text":293,"config":294},"Automated Software Delivery",{"href":278,"dataGaLocation":215,"dataGaName":295},"Automated software delivery",{"title":297,"description":298,"link":299,"items":304},"Security","Deliver code faster without compromising security",{"config":300},{"href":301,"dataGaName":302,"dataGaLocation":215,"icon":303},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[305,309,314],{"text":306,"config":307},"Application Security Testing",{"href":301,"dataGaName":308,"dataGaLocation":215},"Application security testing",{"text":310,"config":311},"Software Supply Chain Security",{"href":312,"dataGaLocation":215,"dataGaName":313},"/solutions/supply-chain/","Software supply chain security",{"text":315,"config":316},"Software Compliance",{"href":317,"dataGaName":318,"dataGaLocation":215},"/solutions/software-compliance/","software compliance",{"title":320,"link":321,"items":326},"Measurement",{"config":322},{"icon":323,"href":324,"dataGaName":325,"dataGaLocation":215},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[327,331,335],{"text":328,"config":329},"Visibility & Measurement",{"href":324,"dataGaLocation":215,"dataGaName":330},"Visibility and Measurement",{"text":332,"config":333},"Value Stream Management",{"href":334,"dataGaLocation":215,"dataGaName":332},"/solutions/value-stream-management/",{"text":336,"config":337},"Analytics & Insights",{"href":338,"dataGaLocation":215,"dataGaName":339},"/solutions/analytics-and-insights/","Analytics and insights",{"title":341,"type":266,"items":342},"GitLab for",[343,349,355],{"text":344,"config":345},"Enterprise",{"icon":346,"href":347,"dataGaLocation":215,"dataGaName":348},"Building","/enterprise/","enterprise",{"text":350,"config":351},"Small Business",{"icon":352,"href":353,"dataGaLocation":215,"dataGaName":354},"Work","/small-business/","small business",{"text":356,"config":357},"Public Sector",{"icon":358,"href":359,"dataGaLocation":215,"dataGaName":360},"Organization","/solutions/public-sector/","public sector",{"text":362,"config":363},"Pricing",{"href":364,"dataGaName":365,"dataGaLocation":215,"dataNavLevelOne":365},"/pricing/","pricing",{"text":367,"config":368,"menu":370},"Resources",{"dataNavLevelOne":369},"resources",{"type":266,"link":371,"columns":375,"feature":469},{"text":372,"config":373},"View all resources",{"href":374,"dataGaName":369,"dataGaLocation":215},"/resources/",[376,409,436],{"title":377,"items":378},"Getting started",[379,384,389,394,399,404],{"text":380,"config":381},"Install",{"href":382,"dataGaName":383,"dataGaLocation":215},"/install/","install",{"text":385,"config":386},"Quick start guides",{"href":387,"dataGaName":388,"dataGaLocation":215},"/get-started/","quick setup checklists",{"text":390,"config":391},"Learn",{"href":392,"dataGaLocation":215,"dataGaName":393},"https://university.gitlab.com/","learn",{"text":395,"config":396},"Product documentation",{"href":397,"dataGaName":398,"dataGaLocation":215},"https://docs.gitlab.com/","product documentation",{"text":400,"config":401},"Best practice videos",{"href":402,"dataGaName":403,"dataGaLocation":215},"/getting-started-videos/","best practice videos",{"text":405,"config":406},"Integrations",{"href":407,"dataGaName":408,"dataGaLocation":215},"/integrations/","integrations",{"title":410,"items":411},"Discover",[412,417,422,427,431],{"text":413,"config":414},"Customer success stories",{"href":415,"dataGaName":416,"dataGaLocation":215},"/customers/","customer success stories",{"text":418,"config":419},"Blog",{"href":420,"dataGaName":421,"dataGaLocation":215},"/blog/","blog",{"text":423,"config":424},"Demo Hub",{"href":425,"dataGaName":426,"dataGaLocation":215},"/demo-hub/","demo hub",{"text":428,"config":429},"The Source",{"href":430,"dataGaName":421,"dataGaLocation":215},"/the-source/",{"text":432,"config":433},"Remote",{"href":434,"dataGaName":435,"dataGaLocation":215},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":437,"items":438},"Connect",[439,444,449,454,459,464],{"text":440,"config":441},"GitLab Services",{"href":442,"dataGaName":443,"dataGaLocation":215},"/services/","services",{"text":445,"config":446},"Contribute",{"href":447,"dataGaName":448,"dataGaLocation":215},"https://contributors.gitlab.com","contribute",{"text":450,"config":451},"Community",{"href":452,"dataGaName":453,"dataGaLocation":215},"/community/","community",{"text":455,"config":456},"Forum",{"href":457,"dataGaName":458,"dataGaLocation":215},"https://forum.gitlab.com/","forum",{"text":460,"config":461},"Events",{"href":462,"dataGaName":463,"dataGaLocation":215},"/events/","events",{"text":465,"config":466},"Partners",{"href":467,"dataGaName":468,"dataGaLocation":215},"/partners/","partners",{"config":470,"title":473,"text":474,"link":475},{"background":471,"textColor":472},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1777322348/qpq8yrgn8knii57omj0c.png')","#000","What’s new in GitLab","Stay updated with our latest features and improvements.",{"text":476,"config":477},"Read the latest",{"href":478,"dataGaName":479,"dataGaLocation":215},"/whats-new/","whats new",{"text":481,"config":482,"menu":484},"Company",{"dataNavLevelOne":483},"company",{"type":266,"columns":485},[486],{"items":487},[488,493,499,501,506,511,516,521,526,531],{"text":489,"config":490},"About",{"href":491,"dataGaName":492,"dataGaLocation":215},"/company/","about",{"text":494,"config":495,"footerGa":498},"Jobs",{"href":496,"dataGaName":497,"dataGaLocation":215},"/jobs/","jobs",{"dataGaName":497},{"text":460,"config":500},{"href":462,"dataGaName":463,"dataGaLocation":215},{"text":502,"config":503},"Leadership",{"href":504,"dataGaName":505,"dataGaLocation":215},"/company/team/e-group/","leadership",{"text":507,"config":508},"Handbook",{"href":509,"dataGaName":510,"dataGaLocation":215},"https://handbook.gitlab.com/","handbook",{"text":512,"config":513},"Investor relations",{"href":514,"dataGaName":515,"dataGaLocation":215},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":517,"config":518},"Trust Center",{"href":519,"dataGaName":520,"dataGaLocation":215},"/security/","trust center",{"text":522,"config":523},"AI Transparency Center",{"href":524,"dataGaName":525,"dataGaLocation":215},"/ai-transparency-center/","ai transparency center",{"text":527,"config":528},"Newsletter",{"href":529,"dataGaName":530,"dataGaLocation":215},"/company/contact/#contact-forms","newsletter",{"text":532,"config":533},"Press",{"href":534,"dataGaName":535,"dataGaLocation":215},"/press/","press",{"text":537,"config":538,"menu":539},"Contact us",{"dataNavLevelOne":483},{"type":266,"columns":540},[541],{"items":542},[543,548,553],{"text":544,"config":545},"Talk to sales",{"href":546,"dataGaName":547,"dataGaLocation":215},"/sales/","talk to sales",{"text":549,"config":550},"Support portal",{"href":551,"dataGaName":552,"dataGaLocation":215},"https://support.gitlab.com/hc/en-us","support portal",{"text":554,"config":555},"Customer portal",{"href":556,"dataGaName":557,"dataGaLocation":215},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":559,"login":560,"suggestions":567},"Close",{"text":561,"link":562},"To search repositories and projects, login to",{"text":563,"config":564},"gitlab.com",{"href":229,"dataGaName":565,"dataGaLocation":566},"search login","search",{"text":568,"default":569},"Suggestions",[570,572,576,578,582,586],{"text":246,"config":571},{"href":251,"dataGaName":246,"dataGaLocation":566},{"text":573,"config":574},"Code Suggestions (AI)",{"href":575,"dataGaName":573,"dataGaLocation":566},"/solutions/code-suggestions/",{"text":282,"config":577},{"href":284,"dataGaName":282,"dataGaLocation":566},{"text":579,"config":580},"GitLab on AWS",{"href":581,"dataGaName":579,"dataGaLocation":566},"/partners/technology-partners/aws/",{"text":583,"config":584},"GitLab on Google Cloud",{"href":585,"dataGaName":583,"dataGaLocation":566},"/partners/technology-partners/google-cloud-platform/",{"text":587,"config":588},"Why GitLab?",{"href":259,"dataGaName":587,"dataGaLocation":566},{"freeTrial":590,"mobileIcon":595,"desktopIcon":600,"secondaryButton":603},{"text":591,"config":592},"Start free trial",{"href":593,"dataGaName":220,"dataGaLocation":594},"https://gitlab.com/-/trials/new/","nav",{"altText":596,"config":597},"Gitlab Icon",{"src":598,"dataGaName":599,"dataGaLocation":594},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":596,"config":601},{"src":602,"dataGaName":599,"dataGaLocation":594},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":604,"config":605},"Get Started",{"href":606,"dataGaName":607,"dataGaLocation":594},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":609,"mobileIcon":613,"desktopIcon":615},{"text":610,"config":611},"Learn more about GitLab Duo",{"href":251,"dataGaName":612,"dataGaLocation":594},"gitlab duo",{"altText":596,"config":614},{"src":598,"dataGaName":599,"dataGaLocation":594},{"altText":596,"config":616},{"src":602,"dataGaName":599,"dataGaLocation":594},{"button":618,"mobileIcon":623,"desktopIcon":625},{"text":619,"config":620},"/switch",{"href":621,"dataGaName":622,"dataGaLocation":594},"#contact","switch",{"altText":596,"config":624},{"src":598,"dataGaName":599,"dataGaLocation":594},{"altText":596,"config":626},{"src":627,"dataGaName":599,"dataGaLocation":594},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":629,"mobileIcon":634,"desktopIcon":636},{"text":630,"config":631},"Back to pricing",{"href":364,"dataGaName":632,"dataGaLocation":594,"icon":633},"back to pricing","GoBack",{"altText":596,"config":635},{"src":598,"dataGaName":599,"dataGaLocation":594},{"altText":596,"config":637},{"src":602,"dataGaName":599,"dataGaLocation":594},{"title":639,"titleMobile":640,"button":641,"config":646},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":257,"config":642},{"href":643,"dataGaName":644,"dataGaLocation":645},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":647,"disabled":191},"release",{"data":649},{"text":650,"source":651,"edit":657,"contribute":662,"config":667,"items":672,"minimal":882},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":652,"config":653},"View page source",{"href":654,"dataGaName":655,"dataGaLocation":656},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":658,"config":659},"Edit this page",{"href":660,"dataGaName":661,"dataGaLocation":656},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":663,"config":664},"Please contribute",{"href":665,"dataGaName":666,"dataGaLocation":656},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":668,"facebook":669,"youtube":670,"linkedin":671},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[673,720,774,818,850],{"title":362,"links":674,"subMenu":689},[675,679,684],{"text":676,"config":677},"View plans",{"href":364,"dataGaName":678,"dataGaLocation":656},"view plans",{"text":680,"config":681},"Why Premium?",{"href":682,"dataGaName":683,"dataGaLocation":656},"/pricing/premium/","why premium",{"text":685,"config":686},"Why Ultimate?",{"href":687,"dataGaName":688,"dataGaLocation":656},"/pricing/ultimate/","why ultimate",[690],{"title":691,"links":692},"Contact Us",[693,696,698,700,705,710,715],{"text":694,"config":695},"Contact sales",{"href":546,"dataGaName":225,"dataGaLocation":656},{"text":549,"config":697},{"href":551,"dataGaName":552,"dataGaLocation":656},{"text":554,"config":699},{"href":556,"dataGaName":557,"dataGaLocation":656},{"text":701,"config":702},"Status",{"href":703,"dataGaName":704,"dataGaLocation":656},"https://status.gitlab.com/","status",{"text":706,"config":707},"Terms of use",{"href":708,"dataGaName":709,"dataGaLocation":656},"/terms/","terms of use",{"text":711,"config":712},"Privacy statement",{"href":713,"dataGaName":714,"dataGaLocation":656},"/privacy/","privacy statement",{"text":716,"config":717},"Cookie preferences",{"dataGaName":718,"dataGaLocation":656,"id":719,"isOneTrustButton":200},"cookie preferences","ot-sdk-btn",{"title":262,"links":721,"subMenu":730},[722,726],{"text":723,"config":724},"DevSecOps platform",{"href":244,"dataGaName":725,"dataGaLocation":656},"devsecops platform",{"text":727,"config":728},"AI-Assisted Development",{"href":251,"dataGaName":729,"dataGaLocation":656},"ai-assisted development",[731],{"title":732,"links":733},"Topics",[734,739,744,749,754,759,764,769],{"text":735,"config":736},"CICD",{"href":737,"dataGaName":738,"dataGaLocation":656},"/topics/ci-cd/","cicd",{"text":740,"config":741},"GitOps",{"href":742,"dataGaName":743,"dataGaLocation":656},"/topics/gitops/","gitops",{"text":745,"config":746},"DevOps",{"href":747,"dataGaName":748,"dataGaLocation":656},"/topics/devops/","devops",{"text":750,"config":751},"Version Control",{"href":752,"dataGaName":753,"dataGaLocation":656},"/topics/version-control/","version control",{"text":755,"config":756},"DevSecOps",{"href":757,"dataGaName":758,"dataGaLocation":656},"/topics/devsecops/","devsecops",{"text":760,"config":761},"Cloud Native",{"href":762,"dataGaName":763,"dataGaLocation":656},"/topics/cloud-native/","cloud native",{"text":765,"config":766},"AI for Coding",{"href":767,"dataGaName":768,"dataGaLocation":656},"/topics/devops/ai-for-coding/","ai for coding",{"text":770,"config":771},"Agentic AI",{"href":772,"dataGaName":773,"dataGaLocation":656},"/topics/agentic-ai/","agentic ai",{"title":775,"links":776},"Solutions",[777,779,781,786,790,793,797,800,802,805,808,813],{"text":306,"config":778},{"href":301,"dataGaName":306,"dataGaLocation":656},{"text":295,"config":780},{"href":278,"dataGaName":279,"dataGaLocation":656},{"text":782,"config":783},"Agile development",{"href":784,"dataGaName":785,"dataGaLocation":656},"/solutions/agile-delivery/","agile delivery",{"text":787,"config":788},"SCM",{"href":291,"dataGaName":789,"dataGaLocation":656},"source code management",{"text":735,"config":791},{"href":284,"dataGaName":792,"dataGaLocation":656},"continuous integration & delivery",{"text":794,"config":795},"Value stream management",{"href":334,"dataGaName":796,"dataGaLocation":656},"value stream management",{"text":740,"config":798},{"href":799,"dataGaName":743,"dataGaLocation":656},"/solutions/gitops/",{"text":344,"config":801},{"href":347,"dataGaName":348,"dataGaLocation":656},{"text":803,"config":804},"Small business",{"href":353,"dataGaName":354,"dataGaLocation":656},{"text":806,"config":807},"Public sector",{"href":359,"dataGaName":360,"dataGaLocation":656},{"text":809,"config":810},"Education",{"href":811,"dataGaName":812,"dataGaLocation":656},"/solutions/education/","education",{"text":814,"config":815},"Financial services",{"href":816,"dataGaName":817,"dataGaLocation":656},"/solutions/finance/","financial services",{"title":367,"links":819},[820,822,824,826,829,831,834,836,838,840,842,844,846,848],{"text":380,"config":821},{"href":382,"dataGaName":383,"dataGaLocation":656},{"text":385,"config":823},{"href":387,"dataGaName":388,"dataGaLocation":656},{"text":390,"config":825},{"href":392,"dataGaName":393,"dataGaLocation":656},{"text":395,"config":827},{"href":397,"dataGaName":828,"dataGaLocation":656},"docs",{"text":418,"config":830},{"href":420,"dataGaName":421,"dataGaLocation":656},{"text":832,"config":833},"What's new",{"href":478,"dataGaName":479,"dataGaLocation":656},{"text":413,"config":835},{"href":415,"dataGaName":416,"dataGaLocation":656},{"text":432,"config":837},{"href":434,"dataGaName":435,"dataGaLocation":656},{"text":440,"config":839},{"href":442,"dataGaName":443,"dataGaLocation":656},{"text":445,"config":841},{"href":447,"dataGaName":448,"dataGaLocation":656},{"text":450,"config":843},{"href":452,"dataGaName":453,"dataGaLocation":656},{"text":455,"config":845},{"href":457,"dataGaName":458,"dataGaLocation":656},{"text":460,"config":847},{"href":462,"dataGaName":463,"dataGaLocation":656},{"text":465,"config":849},{"href":467,"dataGaName":468,"dataGaLocation":656},{"title":481,"links":851},[852,854,856,858,860,862,866,871,873,875,877],{"text":489,"config":853},{"href":491,"dataGaName":483,"dataGaLocation":656},{"text":494,"config":855},{"href":496,"dataGaName":497,"dataGaLocation":656},{"text":502,"config":857},{"href":504,"dataGaName":505,"dataGaLocation":656},{"text":507,"config":859},{"href":509,"dataGaName":510,"dataGaLocation":656},{"text":512,"config":861},{"href":514,"dataGaName":515,"dataGaLocation":656},{"text":863,"config":864},"Sustainability",{"href":865,"dataGaName":863,"dataGaLocation":656},"/sustainability/",{"text":867,"config":868},"Diversity, inclusion and belonging (DIB)",{"href":869,"dataGaName":870,"dataGaLocation":656},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":517,"config":872},{"href":519,"dataGaName":520,"dataGaLocation":656},{"text":527,"config":874},{"href":529,"dataGaName":530,"dataGaLocation":656},{"text":532,"config":876},{"href":534,"dataGaName":535,"dataGaLocation":656},{"text":878,"config":879},"Modern Slavery Transparency Statement",{"href":880,"dataGaName":881,"dataGaLocation":656},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":883},[884,887,890],{"text":885,"config":886},"Terms",{"href":708,"dataGaName":709,"dataGaLocation":656},{"text":888,"config":889},"Cookies",{"dataGaName":718,"dataGaLocation":656,"id":719,"isOneTrustButton":200},{"text":891,"config":892},"Privacy",{"href":713,"dataGaName":714,"dataGaLocation":656},[894],{"id":895,"title":896,"body":190,"config":897,"content":899,"description":190,"extension":903,"meta":904,"navigation":200,"path":905,"seo":906,"stem":907,"__hash__":908},"blogAuthors/en-us/blog/authors/job-van-der-voort.yml","Job Van Der Voort",{"template":898},"BlogAuthor",{"name":7,"config":900},{"headshot":901,"ctfId":902},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659488/Blog/Author%20Headshots/gitlab-logo-extra-whitespace.png","Job-van-der-Voort","yml",{},"/en-us/blog/authors/job-van-der-voort",{},"en-us/blog/authors/job-van-der-voort","w8TOn_hGFgQQOv35VnObjxoMM-hviRbwtijFETooJCM",[910,918,926],{"title":911,"description":912,"heroImage":913,"category":186,"date":914,"authors":915,"slug":917,"externalUrl":190},"How we overhauled GitLab navigation","Users weren't getting what they needed from our navigation. Here are the steps we took to turn that experience around.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749682884/Blog/Hero%20Images/navigation.jpg","2023-08-15",[916],"Ashley Knobloch","navigation-research-blog-post",{"title":919,"description":920,"heroImage":921,"category":186,"date":922,"authors":923,"slug":925,"externalUrl":190},"Beautifying our UI: Giving GitLab build features a fresh look","Get an inside look at how we are improving the usability of GitLab build features with multiple visual design improvements.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749682807/Blog/Hero%20Images/beautify.jpg","2023-07-05",[924],"Veethika Mishra","beautifying-of-our-ui",{"title":927,"description":928,"heroImage":929,"category":186,"date":930,"authors":931,"slug":933,"externalUrl":190},"4 best practices leading orgs to release software faster","GitLab's 2023 Global DevSecOps Survey illuminates the strategies that organizations deploying more frequently have in common.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663908/Blog/Hero%20Images/2023-devsecops-report-blog-banner2.png","2023-06-08",[932],"Kristina Weis","best-practices-leading-orgs-to-release-software-faster",{"promotions":935},[936,950,962,974],{"id":937,"categories":938,"header":940,"text":941,"button":942,"image":947},"ai-modernization",[939],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":943,"config":944},"Get your AI maturity score",{"href":945,"dataGaName":946,"dataGaLocation":421},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":948},{"src":949},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":951,"categories":952,"header":954,"text":941,"button":955,"image":959},"devops-modernization",[953,758],"product","Are you just managing tools or shipping innovation?",{"text":956,"config":957},"Get your DevOps maturity score",{"href":958,"dataGaName":946,"dataGaLocation":421},"/assessments/devops-modernization-assessment/",{"config":960},{"src":961},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":963,"categories":964,"header":966,"text":941,"button":967,"image":971},"security-modernization",[965],"security","Are you trading speed for security?",{"text":968,"config":969},"Get your security maturity score",{"href":970,"dataGaName":946,"dataGaLocation":421},"/assessments/security-modernization-assessment/",{"config":972},{"src":973},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":975,"paths":976,"header":979,"text":980,"button":981,"image":986},"github-azure-migration",[977,978],"migration-from-azure-devops-to-gitlab","integrating-azure-devops-scm-and-gitlab","Is your team ready for GitHub's Azure move?","GitHub is already rebuilding around Azure. Find out what it means for you.",{"text":982,"config":983},"See how GitLab compares to GitHub",{"href":984,"dataGaName":985,"dataGaLocation":421},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":987},{"src":961},{"header":989,"blurb":990,"button":991,"secondaryButton":996},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":992,"config":993},"Get your free trial",{"href":994,"dataGaName":220,"dataGaLocation":995},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":694,"config":997},{"href":546,"dataGaName":225,"dataGaLocation":995},1786803748399]