[{"data":1,"prerenderedAt":1028},["ShallowReactive",2],{"/blog/remote-agile-at-gitlab":3,"navigation-en-us":241,"banner-en-us":668,"footer-en-us":678,"blog-post-authors-en-us-Job van der Voort":923,"blog-related-posts-en-us-remote-agile-at-gitlab":939,"blog-promotions-en-us":964,"next-steps-en-us":1018},{"id":4,"title":5,"authors":6,"body":8,"category":210,"date":211,"description":212,"extension":213,"externalUrl":214,"faq":214,"featured":215,"heroImage":216,"meta":217,"navigation":231,"path":232,"seo":233,"slug":237,"stem":238,"tags":214,"template":239,"updatedDate":214,"__hash__":240},"blogPosts/en-us/blog/remote-agile-at-gitlab.md","Remote Agile at GitLab",[7],"Job van der Voort",{"type":9,"value":10,"toc":196},"minimark",[11,15,18,28,31,36,39,42,45,48,53,56,60,69,72,75,78,112,120,123,126,130,133,136,144,147,151,154,157,165,168,171,175],[12,13,14],"p",{},"Every month on the 22nd a new version of GitLab is released. It always\nincludes major changes, with features, bug fixes and performance improvements.\nWe haven't missed a single month since our inception.",[12,16,17],{},"We are completely remote, save for the Experience Center in San Francisco that not a single\ndeveloper frequents (a 10,000km commute is a bit much for most). We do not have\npredefined teams and almost everyone works independently (i.e. without someone telling\nthem what to do).",[12,19,20,21,27],{},"We do not practice any specific agile methodology, but meet the principles\nof the ",[22,23,26],"a",{"href":24,"rel":25},"http://www.agilemanifesto.org/iso/en/principles.html",[],"agile manifesto"," quite well.",[12,29,30],{},"This is a start in describing the workflow that we've established over\nthe past year at GitLab, as it seems to work for us and might for you. It's\nlightweight and self organizing. It might or might not scale.",[32,33,35],"h2",{"id":34},"incoming-issues","Incoming issues",[12,37,38],{},"A large part of everything we build in terms of features is based on feedback from the\ncommunity and customers.",[12,40,41],{},"When a request comes in from a customer (through support or sales usually),\nthe person receiving this request creates an issue to discuss it.\nThey are responsible for mentioning relevant parties. For most features that\nis the product manager, CTO, and any developers or other people that might be\ninterested in this feature.",[12,43,44],{},"Next, anyone with an opinion responds to the issue. This is often done in direct\nresponse to others, including more people in the discussion if necessary. The\npoint is to reach some form of consensus. Once this has been reached, the issue\nis scheduled for an upcoming release (e.g. 8.1 or 8.2). Anyone can do this based\non the information in the issue and on how full the upcoming releases are versus\nhow important this is.",[12,46,47],{},"Everyone that has participated in the conversation will be updated with any status\nchange. Therefore anyone can freely schedule things. If someone disagrees, they'll\nspeak up.",[49,50,52],"h3",{"id":51},"known-issues","Known issues",[12,54,55],{},"It's very hard to schedule things. We simply do not have a good way to estimate\nwhether something will be doable, besides estimating based on previous releases.\nHowever, we prefer the scheduling to be hard over adding overhead with estimating\nweights and velocity for the team. We might change our minds on this.",[32,57,59],{"id":58},"working-and-prioritizing","Working and Prioritizing",[12,61,62,63,68],{},"A developer can pick up any issue at any time they're working.\nThey simply assign themselves, marking it as \"Ongoing\" in ",[22,64,67],{"href":65,"rel":66},"https://gitlab.com/gitlab-org/gitlab-ce/milestones/13",[],"GitLab's Milestone\nView",".",[12,70,71],{},"Some issues have a clear owner in terms of knowledge and ownership of that part\nof the code. Usually this developer has already been active in the issue. The\ndeveloper likely picks these issues. This is a self-organizing process.",[12,73,74],{},"A small part of the issues is promised to a customer. This means that we told the\ncustomer: \"Feature X will be done in release Y\". We always intend to keep our\npromise, so these issues get prioritized by everyone.",[12,76,77],{},"There is also a general guideline to prioritization of work. This does not\nwork as a hard rule and also depends on your skills and responsibilities:",[79,80,81,85,88,91,94,97,100,103,106,109],"ol",{},[82,83,84],"li",{},"Emergency issues",[82,86,87],{},"Security issues",[82,89,90],{},"Data integrity (not losing data)",[82,92,93],{},"Availability of GitLab.com",[82,95,96],{},"Subscriber questions",[82,98,99],{},"Regression issues",[82,101,102],{},"Consultancy work",[82,104,105],{},"Promised features",[82,107,108],{},"Growth efforts",[82,110,111],{},"Other work",[12,113,114,115,68],{},"Find this ",[22,116,119],{"href":117,"rel":118},"https://handbook.gitlab.com/handbook/communication/#gitlab-workflow",[],"in our handbook",[49,121,52],{"id":122},"known-issues-1",[12,124,125],{},"People can choose their own issues, which can result in a situation where\nissues that are not 'fun' are not being picked up. This can be solved with\nproper handling of overflow issues, as described below.",[32,127,129],{"id":128},"overflow","Overflow",[12,131,132],{},"Overflow of issues is something that happens every month. Meaning, not all issues\nassigned to a release get completed or worked on.",[12,134,135],{},"In the past, we would simply move everything to the next milestone. This 'waterfall'\nworkflow didn't work, as unpopular things would get dragged on for many releases.\nNowadays, we (I) go through all leftover issues and investigate why they didn't get\ndone and what we can do with them.\nThis often results in dropping the issue as it's no longer relevant or moving it\nup to a future release and pinging a developer to take ownership of it.",[12,137,138,139,143],{},"Managing overflow issues is a very hard balance between capacity and process.\nMostly we blame a lack of developer capacity with overflow issues\n(",[22,140,142],{"href":141},"/jobs/","we're hiring!",").\nWith every release, we try to reflect on what could have been done better.",[12,145,146],{},"For example, most recently Douwe and I proposed a different model to schedule\nissues to prevent too many promised issues. Most developers had strong opinions\non this, which spawned this article. We ended up not making changes, choosing\nspeed and flexibility over process, but gained insight into how people feel about\nthe status quo.",[32,148,150],{"id":149},"openness-independence-and-responsibility","Openness, Independence and Responsibility",[12,152,153],{},"As a developer you're required to operate independently and make decisions.\nBy making your own decisions, it reduces process overhead and unnecessary\ncommunication.",[12,155,156],{},"It's your responsibility to report those decisions in the issue that you're working\nfrom. This is the core of our workflow. People that were previously active in the\nsame issue, will receive your updates and thoughts without disturbing one another.\nIf there is an issue, they will respond in the issue. The whole process is asynchronous\nand self-organizing.",[12,158,159,160,164],{},"Lastly, ",[22,161,163],{"href":162},"/blog/almost-everything-we-do-is-now-open/","we're open",".\nThis is something that runs deep within GitLab. To be able to work with the community,\nwith our customers, we have to work in a way that everyone can contribute equally.",[12,166,167],{},"We think this works well for everyone, but are always looking to improve things.\nAs we're growing very fast, we're not sure whether this will scale.",[12,169,170],{},"How does your workflow look and why does it work for you?",[32,172,174],{"id":173},"related-reads","Related Reads",[176,177,178,184,190],"ul",{},[82,179,180],{},[22,181,183],{"href":182},"/blog/how-we-use-gitlab-to-build-gitlab/","How we use GitLab to build GitLab",[82,185,186],{},[22,187,189],{"href":188},"/blog/release-manager-the-invisible-hero/","The Release Manager",[82,191,192],{},[22,193,195],{"href":194},"/blog/the-remote-manifesto/","The Remote Manifesto",{"title":197,"searchDepth":198,"depth":198,"links":199},"",2,[200,204,207,208,209],{"id":34,"depth":198,"text":35,"children":201},[202],{"id":51,"depth":203,"text":52},3,{"id":58,"depth":198,"text":59,"children":205},[206],{"id":122,"depth":203,"text":52},{"id":128,"depth":198,"text":129},{"id":149,"depth":198,"text":150},{"id":173,"depth":198,"text":174},"culture","2015-09-14","This is a start in describing the workflow that we've established over the past year at GitLab.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749684484/Blog/Hero%20Images/agile.jpg",{"excerpt":218},{"type":9,"value":219},[220,222,224,229],[12,221,14],{},[12,223,17],{},[12,225,20,226,27],{},[22,227,26],{"href":24,"rel":228},[],[12,230,30],{},true,"/en-us/blog/remote-agile-at-gitlab",{"title":5,"description":212,"ogTitle":5,"ogDescription":212,"noIndex":215,"ogImage":216,"ogUrl":234,"ogSiteName":235,"ogType":236,"canonicalUrls":234},"https://about.gitlab.com/blog/remote-agile-at-gitlab","https://about.gitlab.com","article","remote-agile-at-gitlab","en-us/blog/remote-agile-at-gitlab","BlogPost","-O5U_lB5lzTHMc8fvO1W88PqnExFrVVYpuThZQzblRw",{"logo":242,"freeTrial":247,"sales":252,"login":257,"items":262,"search":588,"minimal":619,"duo":638,"switchNav":647,"pricingDeployment":658},{"config":243},{"href":244,"dataGaName":245,"dataGaLocation":246},"/","gitlab logo","header",{"text":248,"config":249},"Get free trial",{"href":250,"dataGaName":251,"dataGaLocation":246},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":253,"config":254},"Request a demo",{"href":255,"dataGaName":256,"dataGaLocation":246},"/sales/?contact-topic=request-demo","sales",{"text":258,"config":259},"Sign in",{"href":260,"dataGaName":261,"dataGaLocation":246},"https://gitlab.com/users/sign_in/","sign in",[263,292,392,397,511,566],{"text":264,"config":265,"menu":267},"Platform",{"dataNavLevelOne":266},"platform",{"type":268,"columns":269},"cards",[270,276,284],{"title":264,"description":271,"link":272},"The intelligent orchestration platform for DevSecOps",{"text":273,"config":274},"Explore our Platform",{"href":275,"dataGaName":266,"dataGaLocation":246},"/platform/",{"title":277,"description":278,"link":279},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":280,"config":281},"Meet GitLab Duo",{"href":282,"dataGaName":283,"dataGaLocation":246},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":285,"description":286,"link":287},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":288,"config":289},"Learn more",{"href":290,"dataGaName":291,"dataGaLocation":246},"/why-gitlab/","why gitlab",{"text":293,"left":231,"config":294,"menu":296},"Product",{"dataNavLevelOne":295},"solutions",{"type":297,"link":298,"columns":302,"feature":371},"lists",{"text":299,"config":300},"View all Solutions",{"href":301,"dataGaName":295,"dataGaLocation":246},"/solutions/",[303,327,350],{"title":304,"description":305,"link":306,"items":311},"Automation","CI/CD and automation to accelerate deployment",{"config":307},{"icon":308,"href":309,"dataGaName":310,"dataGaLocation":246},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[312,316,319,323],{"text":313,"config":314},"CI/CD",{"href":315,"dataGaLocation":246,"dataGaName":313},"/solutions/continuous-integration/",{"text":277,"config":317},{"href":282,"dataGaLocation":246,"dataGaName":318},"gitlab duo agent platform - product menu",{"text":320,"config":321},"Source Code Management",{"href":322,"dataGaLocation":246,"dataGaName":320},"/solutions/source-code-management/",{"text":324,"config":325},"Automated Software Delivery",{"href":309,"dataGaLocation":246,"dataGaName":326},"Automated software delivery",{"title":328,"description":329,"link":330,"items":335},"Security","Deliver code faster without compromising security",{"config":331},{"href":332,"dataGaName":333,"dataGaLocation":246,"icon":334},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[336,340,345],{"text":337,"config":338},"Application Security Testing",{"href":332,"dataGaName":339,"dataGaLocation":246},"Application security testing",{"text":341,"config":342},"Software Supply Chain Security",{"href":343,"dataGaLocation":246,"dataGaName":344},"/solutions/supply-chain/","Software supply chain security",{"text":346,"config":347},"Software Compliance",{"href":348,"dataGaName":349,"dataGaLocation":246},"/solutions/software-compliance/","software compliance",{"title":351,"link":352,"items":357},"Measurement",{"config":353},{"icon":354,"href":355,"dataGaName":356,"dataGaLocation":246},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[358,362,366],{"text":359,"config":360},"Visibility & Measurement",{"href":355,"dataGaLocation":246,"dataGaName":361},"Visibility and Measurement",{"text":363,"config":364},"Value Stream Management",{"href":365,"dataGaLocation":246,"dataGaName":363},"/solutions/value-stream-management/",{"text":367,"config":368},"Analytics & Insights",{"href":369,"dataGaLocation":246,"dataGaName":370},"/solutions/analytics-and-insights/","Analytics and insights",{"title":372,"type":297,"items":373},"GitLab for",[374,380,386],{"text":375,"config":376},"Enterprise",{"icon":377,"href":378,"dataGaLocation":246,"dataGaName":379},"Building","/enterprise/","enterprise",{"text":381,"config":382},"Small Business",{"icon":383,"href":384,"dataGaLocation":246,"dataGaName":385},"Work","/small-business/","small business",{"text":387,"config":388},"Public Sector",{"icon":389,"href":390,"dataGaLocation":246,"dataGaName":391},"Organization","/solutions/public-sector/","public sector",{"text":393,"config":394},"Pricing",{"href":395,"dataGaName":396,"dataGaLocation":246,"dataNavLevelOne":396},"/pricing/","pricing",{"text":398,"config":399,"menu":401},"Resources",{"dataNavLevelOne":400},"resources",{"type":297,"link":402,"columns":406,"feature":500},{"text":403,"config":404},"View all resources",{"href":405,"dataGaName":400,"dataGaLocation":246},"/resources/",[407,440,467],{"title":408,"items":409},"Getting started",[410,415,420,425,430,435],{"text":411,"config":412},"Install",{"href":413,"dataGaName":414,"dataGaLocation":246},"/install/","install",{"text":416,"config":417},"Quick start guides",{"href":418,"dataGaName":419,"dataGaLocation":246},"/get-started/","quick setup checklists",{"text":421,"config":422},"Learn",{"href":423,"dataGaLocation":246,"dataGaName":424},"https://university.gitlab.com/","learn",{"text":426,"config":427},"Product documentation",{"href":428,"dataGaName":429,"dataGaLocation":246},"https://docs.gitlab.com/","product documentation",{"text":431,"config":432},"Best practice videos",{"href":433,"dataGaName":434,"dataGaLocation":246},"/getting-started-videos/","best practice videos",{"text":436,"config":437},"Integrations",{"href":438,"dataGaName":439,"dataGaLocation":246},"/integrations/","integrations",{"title":441,"items":442},"Discover",[443,448,453,458,462],{"text":444,"config":445},"Customer success stories",{"href":446,"dataGaName":447,"dataGaLocation":246},"/customers/","customer success stories",{"text":449,"config":450},"Blog",{"href":451,"dataGaName":452,"dataGaLocation":246},"/blog/","blog",{"text":454,"config":455},"Demo Hub",{"href":456,"dataGaName":457,"dataGaLocation":246},"/demo-hub/","demo hub",{"text":459,"config":460},"The Source",{"href":461,"dataGaName":452,"dataGaLocation":246},"/the-source/",{"text":463,"config":464},"Remote",{"href":465,"dataGaName":466,"dataGaLocation":246},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":468,"items":469},"Connect",[470,475,480,485,490,495],{"text":471,"config":472},"GitLab Services",{"href":473,"dataGaName":474,"dataGaLocation":246},"/services/","services",{"text":476,"config":477},"Contribute",{"href":478,"dataGaName":479,"dataGaLocation":246},"https://contributors.gitlab.com","contribute",{"text":481,"config":482},"Community",{"href":483,"dataGaName":484,"dataGaLocation":246},"/community/","community",{"text":486,"config":487},"Forum",{"href":488,"dataGaName":489,"dataGaLocation":246},"https://forum.gitlab.com/","forum",{"text":491,"config":492},"Events",{"href":493,"dataGaName":494,"dataGaLocation":246},"/events/","events",{"text":496,"config":497},"Partners",{"href":498,"dataGaName":499,"dataGaLocation":246},"/partners/","partners",{"config":501,"title":504,"text":505,"link":506},{"background":502,"textColor":503},"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":507,"config":508},"Read the latest",{"href":509,"dataGaName":510,"dataGaLocation":246},"/whats-new/","whats new",{"text":512,"config":513,"menu":515},"Company",{"dataNavLevelOne":514},"company",{"type":297,"columns":516},[517],{"items":518},[519,524,529,531,536,541,546,551,556,561],{"text":520,"config":521},"About",{"href":522,"dataGaName":523,"dataGaLocation":246},"/company/","about",{"text":525,"config":526,"footerGa":528},"Jobs",{"href":141,"dataGaName":527,"dataGaLocation":246},"jobs",{"dataGaName":527},{"text":491,"config":530},{"href":493,"dataGaName":494,"dataGaLocation":246},{"text":532,"config":533},"Leadership",{"href":534,"dataGaName":535,"dataGaLocation":246},"/company/team/e-group/","leadership",{"text":537,"config":538},"Handbook",{"href":539,"dataGaName":540,"dataGaLocation":246},"https://handbook.gitlab.com/","handbook",{"text":542,"config":543},"Investor relations",{"href":544,"dataGaName":545,"dataGaLocation":246},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":547,"config":548},"Trust Center",{"href":549,"dataGaName":550,"dataGaLocation":246},"/security/","trust center",{"text":552,"config":553},"AI Transparency Center",{"href":554,"dataGaName":555,"dataGaLocation":246},"/ai-transparency-center/","ai transparency center",{"text":557,"config":558},"Newsletter",{"href":559,"dataGaName":560,"dataGaLocation":246},"/company/contact/#contact-forms","newsletter",{"text":562,"config":563},"Press",{"href":564,"dataGaName":565,"dataGaLocation":246},"/press/","press",{"text":567,"config":568,"menu":569},"Contact us",{"dataNavLevelOne":514},{"type":297,"columns":570},[571],{"items":572},[573,578,583],{"text":574,"config":575},"Talk to sales",{"href":576,"dataGaName":577,"dataGaLocation":246},"/sales/","talk to sales",{"text":579,"config":580},"Support portal",{"href":581,"dataGaName":582,"dataGaLocation":246},"https://support.gitlab.com/hc/en-us","support portal",{"text":584,"config":585},"Customer portal",{"href":586,"dataGaName":587,"dataGaLocation":246},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":589,"login":590,"suggestions":597},"Close",{"text":591,"link":592},"To search repositories and projects, login to",{"text":593,"config":594},"gitlab.com",{"href":260,"dataGaName":595,"dataGaLocation":596},"search login","search",{"text":598,"default":599},"Suggestions",[600,602,606,608,612,616],{"text":277,"config":601},{"href":282,"dataGaName":277,"dataGaLocation":596},{"text":603,"config":604},"Code Suggestions (AI)",{"href":605,"dataGaName":603,"dataGaLocation":596},"/solutions/code-suggestions/",{"text":313,"config":607},{"href":315,"dataGaName":313,"dataGaLocation":596},{"text":609,"config":610},"GitLab on AWS",{"href":611,"dataGaName":609,"dataGaLocation":596},"/partners/technology-partners/aws/",{"text":613,"config":614},"GitLab on Google Cloud",{"href":615,"dataGaName":613,"dataGaLocation":596},"/partners/technology-partners/google-cloud-platform/",{"text":617,"config":618},"Why GitLab?",{"href":290,"dataGaName":617,"dataGaLocation":596},{"freeTrial":620,"mobileIcon":625,"desktopIcon":630,"secondaryButton":633},{"text":621,"config":622},"Start free trial",{"href":623,"dataGaName":251,"dataGaLocation":624},"https://gitlab.com/-/trials/new/","nav",{"altText":626,"config":627},"Gitlab Icon",{"src":628,"dataGaName":629,"dataGaLocation":624},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":626,"config":631},{"src":632,"dataGaName":629,"dataGaLocation":624},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":634,"config":635},"Get Started",{"href":636,"dataGaName":637,"dataGaLocation":624},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":639,"mobileIcon":643,"desktopIcon":645},{"text":640,"config":641},"Learn more about GitLab Duo",{"href":282,"dataGaName":642,"dataGaLocation":624},"gitlab duo",{"altText":626,"config":644},{"src":628,"dataGaName":629,"dataGaLocation":624},{"altText":626,"config":646},{"src":632,"dataGaName":629,"dataGaLocation":624},{"button":648,"mobileIcon":653,"desktopIcon":655},{"text":649,"config":650},"/switch",{"href":651,"dataGaName":652,"dataGaLocation":624},"#contact","switch",{"altText":626,"config":654},{"src":628,"dataGaName":629,"dataGaLocation":624},{"altText":626,"config":656},{"src":657,"dataGaName":629,"dataGaLocation":624},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":659,"mobileIcon":664,"desktopIcon":666},{"text":660,"config":661},"Back to pricing",{"href":395,"dataGaName":662,"dataGaLocation":624,"icon":663},"back to pricing","GoBack",{"altText":626,"config":665},{"src":628,"dataGaName":629,"dataGaLocation":624},{"altText":626,"config":667},{"src":632,"dataGaName":629,"dataGaLocation":624},{"title":669,"titleMobile":670,"button":671,"config":676},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":288,"config":672},{"href":673,"dataGaName":674,"dataGaLocation":675},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":677,"disabled":215},"release",{"data":679},{"text":680,"source":681,"edit":687,"contribute":692,"config":697,"items":702,"minimal":912},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":682,"config":683},"View page source",{"href":684,"dataGaName":685,"dataGaLocation":686},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":688,"config":689},"Edit this page",{"href":690,"dataGaName":691,"dataGaLocation":686},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":693,"config":694},"Please contribute",{"href":695,"dataGaName":696,"dataGaLocation":686},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":698,"facebook":699,"youtube":700,"linkedin":701},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[703,750,804,848,880],{"title":393,"links":704,"subMenu":719},[705,709,714],{"text":706,"config":707},"View plans",{"href":395,"dataGaName":708,"dataGaLocation":686},"view plans",{"text":710,"config":711},"Why Premium?",{"href":712,"dataGaName":713,"dataGaLocation":686},"/pricing/premium/","why premium",{"text":715,"config":716},"Why Ultimate?",{"href":717,"dataGaName":718,"dataGaLocation":686},"/pricing/ultimate/","why ultimate",[720],{"title":721,"links":722},"Contact Us",[723,726,728,730,735,740,745],{"text":724,"config":725},"Contact sales",{"href":576,"dataGaName":256,"dataGaLocation":686},{"text":579,"config":727},{"href":581,"dataGaName":582,"dataGaLocation":686},{"text":584,"config":729},{"href":586,"dataGaName":587,"dataGaLocation":686},{"text":731,"config":732},"Status",{"href":733,"dataGaName":734,"dataGaLocation":686},"https://status.gitlab.com/","status",{"text":736,"config":737},"Terms of use",{"href":738,"dataGaName":739,"dataGaLocation":686},"/terms/","terms of use",{"text":741,"config":742},"Privacy statement",{"href":743,"dataGaName":744,"dataGaLocation":686},"/privacy/","privacy statement",{"text":746,"config":747},"Cookie preferences",{"dataGaName":748,"dataGaLocation":686,"id":749,"isOneTrustButton":231},"cookie preferences","ot-sdk-btn",{"title":293,"links":751,"subMenu":760},[752,756],{"text":753,"config":754},"DevSecOps platform",{"href":275,"dataGaName":755,"dataGaLocation":686},"devsecops platform",{"text":757,"config":758},"AI-Assisted Development",{"href":282,"dataGaName":759,"dataGaLocation":686},"ai-assisted development",[761],{"title":762,"links":763},"Topics",[764,769,774,779,784,789,794,799],{"text":765,"config":766},"CICD",{"href":767,"dataGaName":768,"dataGaLocation":686},"/topics/ci-cd/","cicd",{"text":770,"config":771},"GitOps",{"href":772,"dataGaName":773,"dataGaLocation":686},"/topics/gitops/","gitops",{"text":775,"config":776},"DevOps",{"href":777,"dataGaName":778,"dataGaLocation":686},"/topics/devops/","devops",{"text":780,"config":781},"Version Control",{"href":782,"dataGaName":783,"dataGaLocation":686},"/topics/version-control/","version control",{"text":785,"config":786},"DevSecOps",{"href":787,"dataGaName":788,"dataGaLocation":686},"/topics/devsecops/","devsecops",{"text":790,"config":791},"Cloud Native",{"href":792,"dataGaName":793,"dataGaLocation":686},"/topics/cloud-native/","cloud native",{"text":795,"config":796},"AI for Coding",{"href":797,"dataGaName":798,"dataGaLocation":686},"/topics/devops/ai-for-coding/","ai for coding",{"text":800,"config":801},"Agentic AI",{"href":802,"dataGaName":803,"dataGaLocation":686},"/topics/agentic-ai/","agentic ai",{"title":805,"links":806},"Solutions",[807,809,811,816,820,823,827,830,832,835,838,843],{"text":337,"config":808},{"href":332,"dataGaName":337,"dataGaLocation":686},{"text":326,"config":810},{"href":309,"dataGaName":310,"dataGaLocation":686},{"text":812,"config":813},"Agile development",{"href":814,"dataGaName":815,"dataGaLocation":686},"/solutions/agile-delivery/","agile delivery",{"text":817,"config":818},"SCM",{"href":322,"dataGaName":819,"dataGaLocation":686},"source code management",{"text":765,"config":821},{"href":315,"dataGaName":822,"dataGaLocation":686},"continuous integration & delivery",{"text":824,"config":825},"Value stream management",{"href":365,"dataGaName":826,"dataGaLocation":686},"value stream management",{"text":770,"config":828},{"href":829,"dataGaName":773,"dataGaLocation":686},"/solutions/gitops/",{"text":375,"config":831},{"href":378,"dataGaName":379,"dataGaLocation":686},{"text":833,"config":834},"Small business",{"href":384,"dataGaName":385,"dataGaLocation":686},{"text":836,"config":837},"Public sector",{"href":390,"dataGaName":391,"dataGaLocation":686},{"text":839,"config":840},"Education",{"href":841,"dataGaName":842,"dataGaLocation":686},"/solutions/education/","education",{"text":844,"config":845},"Financial services",{"href":846,"dataGaName":847,"dataGaLocation":686},"/solutions/finance/","financial services",{"title":398,"links":849},[850,852,854,856,859,861,864,866,868,870,872,874,876,878],{"text":411,"config":851},{"href":413,"dataGaName":414,"dataGaLocation":686},{"text":416,"config":853},{"href":418,"dataGaName":419,"dataGaLocation":686},{"text":421,"config":855},{"href":423,"dataGaName":424,"dataGaLocation":686},{"text":426,"config":857},{"href":428,"dataGaName":858,"dataGaLocation":686},"docs",{"text":449,"config":860},{"href":451,"dataGaName":452,"dataGaLocation":686},{"text":862,"config":863},"What's new",{"href":509,"dataGaName":510,"dataGaLocation":686},{"text":444,"config":865},{"href":446,"dataGaName":447,"dataGaLocation":686},{"text":463,"config":867},{"href":465,"dataGaName":466,"dataGaLocation":686},{"text":471,"config":869},{"href":473,"dataGaName":474,"dataGaLocation":686},{"text":476,"config":871},{"href":478,"dataGaName":479,"dataGaLocation":686},{"text":481,"config":873},{"href":483,"dataGaName":484,"dataGaLocation":686},{"text":486,"config":875},{"href":488,"dataGaName":489,"dataGaLocation":686},{"text":491,"config":877},{"href":493,"dataGaName":494,"dataGaLocation":686},{"text":496,"config":879},{"href":498,"dataGaName":499,"dataGaLocation":686},{"title":512,"links":881},[882,884,886,888,890,892,896,901,903,905,907],{"text":520,"config":883},{"href":522,"dataGaName":514,"dataGaLocation":686},{"text":525,"config":885},{"href":141,"dataGaName":527,"dataGaLocation":686},{"text":532,"config":887},{"href":534,"dataGaName":535,"dataGaLocation":686},{"text":537,"config":889},{"href":539,"dataGaName":540,"dataGaLocation":686},{"text":542,"config":891},{"href":544,"dataGaName":545,"dataGaLocation":686},{"text":893,"config":894},"Sustainability",{"href":895,"dataGaName":893,"dataGaLocation":686},"/sustainability/",{"text":897,"config":898},"Diversity, inclusion and belonging (DIB)",{"href":899,"dataGaName":900,"dataGaLocation":686},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":547,"config":902},{"href":549,"dataGaName":550,"dataGaLocation":686},{"text":557,"config":904},{"href":559,"dataGaName":560,"dataGaLocation":686},{"text":562,"config":906},{"href":564,"dataGaName":565,"dataGaLocation":686},{"text":908,"config":909},"Modern Slavery Transparency Statement",{"href":910,"dataGaName":911,"dataGaLocation":686},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":913},[914,917,920],{"text":915,"config":916},"Terms",{"href":738,"dataGaName":739,"dataGaLocation":686},{"text":918,"config":919},"Cookies",{"dataGaName":748,"dataGaLocation":686,"id":749,"isOneTrustButton":231},{"text":921,"config":922},"Privacy",{"href":743,"dataGaName":744,"dataGaLocation":686},[924],{"id":925,"title":926,"body":214,"config":927,"content":929,"description":214,"extension":933,"meta":934,"navigation":231,"path":935,"seo":936,"stem":937,"__hash__":938},"blogAuthors/en-us/blog/authors/job-van-der-voort.yml","Job Van Der Voort",{"template":928},"BlogAuthor",{"name":7,"config":930},{"headshot":931,"ctfId":932},"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",[940,948,956],{"title":941,"description":942,"heroImage":943,"category":210,"date":944,"authors":945,"slug":947,"externalUrl":214},"Developer Relations at GitLab: What we've learned since our start","DevRel is key to success for many tech companies. Find out how GitLab's DevRel program has evolved to stay aligned with the industry and our customers.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749672008/Blog/Hero%20Images/AdobeStock_204527293.jpg","2024-03-13",[946],"John Coghlan","developer-relations-at-gitlab-what-weve-learned-since-our-start",{"title":949,"description":950,"heroImage":951,"category":210,"date":952,"authors":953,"slug":955,"externalUrl":214},"Visualizing 11 years of GitLab contributions","Check out this animated video, which beautifully visualizes every contribution since our start.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749682555/Blog/Hero%20Images/gitlabeveryonecontributesdna.png","2022-12-19",[954],"Darwin Sanoy","everyone-who-has-contributed",{"title":957,"description":958,"heroImage":959,"category":210,"date":960,"authors":961,"slug":963,"externalUrl":214},"The many routes to a tech career","GitLab team members of different ages and backgrounds share their entry into this industry.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749667236/Blog/Hero%20Images/Learn-at-GL.jpg","2022-10-04",[962],"Heather Simpson","the-many-routes-to-a-tech-career",{"promotions":965},[966,980,992,1004],{"id":967,"categories":968,"header":970,"text":971,"button":972,"image":977},"ai-modernization",[969],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":973,"config":974},"Get your AI maturity score",{"href":975,"dataGaName":976,"dataGaLocation":452},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":978},{"src":979},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":981,"categories":982,"header":984,"text":971,"button":985,"image":989},"devops-modernization",[983,788],"product","Are you just managing tools or shipping innovation?",{"text":986,"config":987},"Get your DevOps maturity score",{"href":988,"dataGaName":976,"dataGaLocation":452},"/assessments/devops-modernization-assessment/",{"config":990},{"src":991},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":993,"categories":994,"header":996,"text":971,"button":997,"image":1001},"security-modernization",[995],"security","Are you trading speed for security?",{"text":998,"config":999},"Get your security maturity score",{"href":1000,"dataGaName":976,"dataGaLocation":452},"/assessments/security-modernization-assessment/",{"config":1002},{"src":1003},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1005,"paths":1006,"header":1009,"text":1010,"button":1011,"image":1016},"github-azure-migration",[1007,1008],"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":1012,"config":1013},"See how GitLab compares to GitHub",{"href":1014,"dataGaName":1015,"dataGaLocation":452},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1017},{"src":991},{"header":1019,"blurb":1020,"button":1021,"secondaryButton":1026},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":1022,"config":1023},"Get your free trial",{"href":1024,"dataGaName":251,"dataGaLocation":1025},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":724,"config":1027},{"href":576,"dataGaName":256,"dataGaLocation":1025},1786803754268]