{"id":9162,"date":"2013-08-22T16:23:41","date_gmt":"2013-08-22T14:23:41","guid":{"rendered":"https:\/\/blog.trifork.com\/?p=9162"},"modified":"2013-08-22T16:23:41","modified_gmt":"2013-08-22T14:23:41","slug":"lessons-learned-how-to-do-scrum-in-a-fixed-price-project","status":"publish","type":"post","link":"https:\/\/trifork.nl\/blog\/lessons-learned-how-to-do-scrum-in-a-fixed-price-project\/","title":{"rendered":"Lessons learned how to do Scrum in a fixed price project"},"content":{"rendered":"<p>As a Scrum Master my opinion on doing Scrum in combination with a fixed price, fixed functionality and fixed deadline is somewhat tricky to grasp. However, it still common that in many projects fixed price is just simply the norm. For instance, this is often the case in public tenders for government or education institutions for various projects such as the procurement of a new software system to name an example.<\/p>\n<p>So if you and your company win the tender it\u2019s up to you and your team to deal with the \u201cfixed everything\u201d aspect of the project. Interested in how to deal with some of the ongoing aspects of changes in the requirements, deadlines and how to keep both the customer and the team happy? Read on, in this blog I will share with you our experiences with fixed price projects and Scrum.<br \/>\n<!--more--><\/p>\n<p>&nbsp;<\/p>\n<p>So here is how it goes&#8230;Once a upon a time&#8230;<br \/>\n&#8230;our company was awarded a fantastic new project via a public tender. So a team was formed and a kickoff session was planned in with the customer. We knew it was going to be a tough one whereby the team will be working on a new big challenging project with tight deadlines, high expectations, whereby other parties will also be involved (some of which are not all too familiar with Agile principles \ud83d\ude09 \u00a0).<\/p>\n<p>So, dropping our Agile principles and going back to the waterfall approach was an absolute no go. We are used to running all our projects Agile so it was obvious to start this project in the same way, why should this be any different anyway!<\/p>\n<p>We all know the benefits that Scrum offers us like:<\/p>\n<ul>\n<li>transparency<\/li>\n<li>fast feedback<\/li>\n<li>predictable release cycle<\/li>\n<li>flexibility, whereby it\u2019s easy to change priorities<\/li>\n<li>product stability (by built-in review and testing processes)<\/li>\n<\/ul>\n<p>That all sounds great but where do we start?<\/p>\n<p><strong>Form a dedicated \u201cTiger team\u201d<\/strong><br \/>\nTo maximize on our success we formed our \u201cTiger team\u201d.<\/p>\n<p>The best people to get the job done were gathered thereby forming a motivated and multidisciplinary team. The team consisted of a combination of both back-end and front-end developers, a hands-on architect, requirement analyst, tester, project manager and a scrum master.<\/p>\n<p>An important aspect of the team was that the colleagues were dedicated to this one single project to avoid context switching between multiple projects.<\/p>\n<p><strong><br \/>\nEducate your product owner<br \/>\n<\/strong><\/p>\n<p dir=\"ltr\">Now we have our \u201ctiger team\u201d in place the next step was to find a good product owner on the client side.<\/p>\n<p>So why was the role of product owner invented anyway? The product owner role was invented as a solution to the problem of poor and continually changing requirements, from different stakeholders, this way by allocating this role it creates a single point of accountability. The product owner was the representative of the stakeholder community, who thereby gathers and communicates the requirements to the team. This way the stakeholder community is represented with a \u2018single voice\u2019 thus removing any chance of ambiguity and improving communication between the business (customer) and the scrum team.<\/p>\n<p dir=\"ltr\">Finding a good product owner isn&#8217;t always easy. Especially if the client isn\u2019t really familiar with Agile principles. However, a good product owner is critical and a key success factor in any project.<\/p>\n<p dir=\"ltr\"><strong><br \/>\nStart with a Sprint 0<\/strong><\/p>\n<p dir=\"ltr\">Even before our tiger team checked in only a single line of code we had to make sure that everything was in place for the team to make a kickstart.<\/p>\n<p>So myself and a couple of colleagues started the preparation sprint (also known as the \u201csprint 0\u201d) before the complete team started working on the first \u201creal\u201d sprint. After this sprint, we had our source repositories, nightly- test- and acceptance environment, issue tracking, scrum boards, etc. up and running. Also the first user stories were defined together with the product owner and thereafter we\u2019re ready to implement!<br \/>\nOften we&#8217;ve found that some product owners aren&#8217;t always up to speed with the Scrum processes, so a good starting point is a short training about Scrum and the role of the product owner instead of only explaining the responsibilities. We&#8217;ve often also helped our product owner writing user stories in the initial phases.<\/p>\n<p><strong><br \/>\nTransform (tender) requirements into a product backlog<br \/>\n<\/strong><\/p>\n<table width=\"100%\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"65%\">Every tender comes with a fixed list of requirements that\u00a0the team has to transform into a working software product.\u00a0To get an overview of all the functionality the team needs to build, we transformed the requirements list together with our product owner into user stories and features in the product backlog.The goal wasn&#8217;t to specify each user story in detail for the complete project (this would be both time consuming and unnecessary because requirements will change in time anyway) but to give the team a way to roughly estimate the user stories and features.All stories estimated by the team using poker planning &#8220;<a title=\"t-shirt size estimation\" href=\"http:\/\/www.mountaingoatsoftware.com\/blog\/estimating-with-tee-shirt-sizes\" target=\"_blank\" rel=\"noopener\">t-shirt size estimation<\/a>&#8221; style. Clear user stories could be estimated more accurate than unclear stories or even features.<a href=\"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2013\/08\/t-shirt-xxl.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone  wp-image-9168\" alt=\"t-shirt-xxl\" src=\"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2013\/08\/t-shirt-xxl.png\" width=\"156\" height=\"138\" srcset=\"https:\/\/trifork.nl\/blog\/wp-content\/uploads\/sites\/3\/2013\/08\/t-shirt-xxl.png 312w, https:\/\/trifork.nl\/blog\/wp-content\/uploads\/sites\/3\/2013\/08\/t-shirt-xxl-300x266.png 300w\" sizes=\"auto, (max-width: 156px) 100vw, 156px\" \/><\/a> <a href=\"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2013\/08\/t-shirt-xs.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft  wp-image-9167\" alt=\"t-shirt-xs\" src=\"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2013\/08\/t-shirt-xs.png\" width=\"156\" height=\"138\" srcset=\"https:\/\/trifork.nl\/blog\/wp-content\/uploads\/sites\/3\/2013\/08\/t-shirt-xs.png 312w, https:\/\/trifork.nl\/blog\/wp-content\/uploads\/sites\/3\/2013\/08\/t-shirt-xs-300x266.png 300w\" sizes=\"auto, (max-width: 156px) 100vw, 156px\" \/><\/a><\/td>\n<td valign=\"top\" width=\"35%\"><a href=\"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2013\/08\/scrum-user-stories.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-9165\" alt=\"scrum-user-stories\" src=\"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2013\/08\/scrum-user-stories.png\" width=\"100%\" srcset=\"https:\/\/trifork.nl\/blog\/wp-content\/uploads\/sites\/3\/2013\/08\/scrum-user-stories.png 250w, https:\/\/trifork.nl\/blog\/wp-content\/uploads\/sites\/3\/2013\/08\/scrum-user-stories-151x300.png 151w\" sizes=\"(max-width: 250px) 100vw, 250px\" \/><\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p dir=\"ltr\"><strong>Release burndown<\/strong><\/p>\n<p dir=\"ltr\">Based on our t-shirt style estimation poker session we had already had a rough estimation at the beginning of the project how many story points it would cost us to implement all the requirements.<\/p>\n<p>During later sprints, we found user stories became more clear and from time to time we did another t-shirt style estimation session with the team. Based on the new insights we had a good feeling whether or not the timelines for the release could be made.<\/p>\n<p><a href=\"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2013\/08\/t-shirt-xxl.png\">\u00a0<\/a><\/p>\n<p dir=\"ltr\"><a href=\"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2013\/08\/release-burndown-not-on-track.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone  wp-image-9169\" alt=\"release-burndown-not-on-track\" src=\"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2013\/08\/release-burndown-not-on-track.png\" width=\"571\" height=\"338\" srcset=\"https:\/\/trifork.nl\/blog\/wp-content\/uploads\/sites\/3\/2013\/08\/release-burndown-not-on-track.png 762w, https:\/\/trifork.nl\/blog\/wp-content\/uploads\/sites\/3\/2013\/08\/release-burndown-not-on-track-300x178.png 300w\" sizes=\"auto, (max-width: 571px) 100vw, 571px\" \/><\/a><\/p>\n<p dir=\"ltr\">Next to our \u201cstandard\u201d sprint burndown be created a <a title=\"Release burndown\" href=\"http:\/\/www.mountaingoatsoftware.com\/scrum\/release-burndown\" target=\"_blank\" rel=\"noopener\">release burndown<\/a>. On the x-as of the we plotted the sprints available for the release. On the y-as the number of story points to implement the functionality for that release. Based on the process in every individual sprint we were able to keep track of the overall progress.<\/p>\n<p dir=\"ltr\"><strong>Don\u2019t over promise<\/strong><\/p>\n<p dir=\"ltr\">To keep both sprints and releases realistic, it\u2019s important not to over promise on the functionality. It\u2019s better to start with a doable sprint and then add some extra work if the goal of the sprint is reached instead of telling the product owner the team didn\u2019t made the goal of the sprint. Logical maybe but often overseen!<\/p>\n<p>Furthermore, always start with the most basic version of the functionality! No \u201cbells and whistles\u201d in the first sprints. Especially at the start of the project this is something you have to educate your product owner in as often they have ambitious expectations. If needed improvements can be done in one of the next upcoming sprints. In our project we saw most of the time the basic version was already acceptable. It saved us development time but also kept the software easy the use.<\/p>\n<p dir=\"ltr\"><strong>Celebrate success<\/strong><\/p>\n<p dir=\"ltr\">When the team makes the sprint, it\u2019s important to celebrate this together with the product owner at the end of the demo. It can be simple, bring in a nice cake or have a team outing. It will motivate the team to reach the next deadline and as always make the collaboration even stronger.<\/p>\n<p dir=\"ltr\"><strong>No \u201cChange requests\u201d but \u201cExchange requests\u201d<\/strong><\/p>\n<p dir=\"ltr\">So very often we see that our customers will often struggle to have a clear definition of each and every functionality at the beginning of the project let alone time they wrote the tender. Let\u2019s be honest even in \u201cfixed everything projects\u201d we all know that requirements will change in time, they always do, and this isn&#8217;t a bad thing.<\/p>\n<p dir=\"ltr\">How to deal with a changes in the requirements?\u00a0Change requests don\u2019t really fit in our Agile approach, however we want to remain flexible so we prefer to \u201cexchange requests\u201d.<\/p>\n<p dir=\"ltr\">So during our project as the product owner receives new insights and discovers functionality that is redundant, we offer the product owner the opportunity to exchange user stories of the same size (based on story points estimations by the team). In the end it always works out for the best as it makes the end product even better and the scope stronger.<\/p>\n<p>Of course user stories that are already implemented but not needed anymore can\u2019t be exchanged too!<\/p>\n<p dir=\"ltr\"><strong>Conclusion<\/strong><\/p>\n<p dir=\"ltr\">Scrum and fixed price is tricky, there\u2019s no doubt about it, and it isn\u2019t the most natural combination in project work, but with a great team and a solid product owner it can work and delivers a high quality product on time within budget too.<\/p>\n<p dir=\"ltr\">Hope this gave some practical insights, for those interest some other good articles on how to deal with fixed price projects under the Agile principles include:<\/p>\n<ul>\n<li dir=\"ltr\">\n<p dir=\"ltr\">Beyond classical contracting by Sven Johann <a href=\"http:\/\/blog.trifork.nl\/2013\/02\/19\/beyond-classical-contracting\/\" target=\"_blank\" rel=\"noopener\">http:\/\/blog.trifork.nl\/2013\/02\/19\/beyond-classical-contracting\/<\/a><\/p>\n<\/li>\n<li dir=\"ltr\">\n<p dir=\"ltr\">Change for free money for nothing by Jeff Sutherland <a href=\"http:\/\/scrum.jeffsutherland.com\/2008\/10\/agile-contracts-money-for-nothing-and.html\" target=\"_blank\" rel=\"noopener\">http:\/\/scrum.jeffsutherland.com\/2008\/10\/agile-contracts-money-for-nothing-and.html<\/a><\/p>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>As a Scrum Master my opinion on doing Scrum in combination with a fixed price, fixed functionality and fixed deadline is somewhat tricky to grasp. However, it still common that in many projects fixed price is just simply the norm. For instance, this is often the case in public tenders for government or education institutions [&hellip;]<\/p>\n","protected":false},"author":113,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":""},"categories":[96],"tags":[7,351,352,60],"class_list":["post-9162","post","type-post","status-publish","format-standard","hentry","category-agile","tag-agile","tag-fix-price-projects","tag-product-owner","tag-scrum"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Lessons learned how to do Scrum in a fixed price project - Trifork Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/trifork.nl\/blog\/lessons-learned-how-to-do-scrum-in-a-fixed-price-project\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Lessons learned how to do Scrum in a fixed price project - Trifork Blog\" \/>\n<meta property=\"og:description\" content=\"As a Scrum Master my opinion on doing Scrum in combination with a fixed price, fixed functionality and fixed deadline is somewhat tricky to grasp. However, it still common that in many projects fixed price is just simply the norm. For instance, this is often the case in public tenders for government or education institutions [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/trifork.nl\/blog\/lessons-learned-how-to-do-scrum-in-a-fixed-price-project\/\" \/>\n<meta property=\"og:site_name\" content=\"Trifork Blog\" \/>\n<meta property=\"article:published_time\" content=\"2013-08-22T14:23:41+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2013\/08\/t-shirt-xxl.png\" \/>\n<meta name=\"author\" content=\"Tim van Baarsen\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Tim van Baarsen\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/trifork.nl\/blog\/lessons-learned-how-to-do-scrum-in-a-fixed-price-project\/\",\"url\":\"https:\/\/trifork.nl\/blog\/lessons-learned-how-to-do-scrum-in-a-fixed-price-project\/\",\"name\":\"Lessons learned how to do Scrum in a fixed price project - Trifork Blog\",\"isPartOf\":{\"@id\":\"https:\/\/trifork.nl\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/trifork.nl\/blog\/lessons-learned-how-to-do-scrum-in-a-fixed-price-project\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/trifork.nl\/blog\/lessons-learned-how-to-do-scrum-in-a-fixed-price-project\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2013\/08\/t-shirt-xxl.png\",\"datePublished\":\"2013-08-22T14:23:41+00:00\",\"author\":{\"@id\":\"https:\/\/trifork.nl\/blog\/#\/schema\/person\/f31f695b29e14f666e02899dc311bac1\"},\"breadcrumb\":{\"@id\":\"https:\/\/trifork.nl\/blog\/lessons-learned-how-to-do-scrum-in-a-fixed-price-project\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/trifork.nl\/blog\/lessons-learned-how-to-do-scrum-in-a-fixed-price-project\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/trifork.nl\/blog\/lessons-learned-how-to-do-scrum-in-a-fixed-price-project\/#primaryimage\",\"url\":\"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2013\/08\/t-shirt-xxl.png\",\"contentUrl\":\"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2013\/08\/t-shirt-xxl.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/trifork.nl\/blog\/lessons-learned-how-to-do-scrum-in-a-fixed-price-project\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/trifork.nl\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Lessons learned how to do Scrum in a fixed price project\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/trifork.nl\/blog\/#website\",\"url\":\"https:\/\/trifork.nl\/blog\/\",\"name\":\"Trifork Blog\",\"description\":\"Keep updated on the technical solutions Trifork is working on!\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/trifork.nl\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/trifork.nl\/blog\/#\/schema\/person\/f31f695b29e14f666e02899dc311bac1\",\"name\":\"Tim van Baarsen\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/trifork.nl\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/43f199cc9e2f2a04f9906791d923e96c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/43f199cc9e2f2a04f9906791d923e96c?s=96&d=mm&r=g\",\"caption\":\"Tim van Baarsen\"},\"url\":\"https:\/\/trifork.nl\/blog\/author\/tim\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Lessons learned how to do Scrum in a fixed price project - Trifork Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/trifork.nl\/blog\/lessons-learned-how-to-do-scrum-in-a-fixed-price-project\/","og_locale":"en_US","og_type":"article","og_title":"Lessons learned how to do Scrum in a fixed price project - Trifork Blog","og_description":"As a Scrum Master my opinion on doing Scrum in combination with a fixed price, fixed functionality and fixed deadline is somewhat tricky to grasp. However, it still common that in many projects fixed price is just simply the norm. For instance, this is often the case in public tenders for government or education institutions [&hellip;]","og_url":"https:\/\/trifork.nl\/blog\/lessons-learned-how-to-do-scrum-in-a-fixed-price-project\/","og_site_name":"Trifork Blog","article_published_time":"2013-08-22T14:23:41+00:00","og_image":[{"url":"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2013\/08\/t-shirt-xxl.png","type":"","width":"","height":""}],"author":"Tim van Baarsen","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Tim van Baarsen","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/trifork.nl\/blog\/lessons-learned-how-to-do-scrum-in-a-fixed-price-project\/","url":"https:\/\/trifork.nl\/blog\/lessons-learned-how-to-do-scrum-in-a-fixed-price-project\/","name":"Lessons learned how to do Scrum in a fixed price project - Trifork Blog","isPartOf":{"@id":"https:\/\/trifork.nl\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/trifork.nl\/blog\/lessons-learned-how-to-do-scrum-in-a-fixed-price-project\/#primaryimage"},"image":{"@id":"https:\/\/trifork.nl\/blog\/lessons-learned-how-to-do-scrum-in-a-fixed-price-project\/#primaryimage"},"thumbnailUrl":"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2013\/08\/t-shirt-xxl.png","datePublished":"2013-08-22T14:23:41+00:00","author":{"@id":"https:\/\/trifork.nl\/blog\/#\/schema\/person\/f31f695b29e14f666e02899dc311bac1"},"breadcrumb":{"@id":"https:\/\/trifork.nl\/blog\/lessons-learned-how-to-do-scrum-in-a-fixed-price-project\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/trifork.nl\/blog\/lessons-learned-how-to-do-scrum-in-a-fixed-price-project\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/trifork.nl\/blog\/lessons-learned-how-to-do-scrum-in-a-fixed-price-project\/#primaryimage","url":"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2013\/08\/t-shirt-xxl.png","contentUrl":"https:\/\/trifork.nl\/articles\/wp-content\/uploads\/sites\/3\/2013\/08\/t-shirt-xxl.png"},{"@type":"BreadcrumbList","@id":"https:\/\/trifork.nl\/blog\/lessons-learned-how-to-do-scrum-in-a-fixed-price-project\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/trifork.nl\/blog\/"},{"@type":"ListItem","position":2,"name":"Lessons learned how to do Scrum in a fixed price project"}]},{"@type":"WebSite","@id":"https:\/\/trifork.nl\/blog\/#website","url":"https:\/\/trifork.nl\/blog\/","name":"Trifork Blog","description":"Keep updated on the technical solutions Trifork is working on!","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/trifork.nl\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/trifork.nl\/blog\/#\/schema\/person\/f31f695b29e14f666e02899dc311bac1","name":"Tim van Baarsen","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/trifork.nl\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/43f199cc9e2f2a04f9906791d923e96c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/43f199cc9e2f2a04f9906791d923e96c?s=96&d=mm&r=g","caption":"Tim van Baarsen"},"url":"https:\/\/trifork.nl\/blog\/author\/tim\/"}]}},"_links":{"self":[{"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/posts\/9162","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/users\/113"}],"replies":[{"embeddable":true,"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/comments?post=9162"}],"version-history":[{"count":0,"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/posts\/9162\/revisions"}],"wp:attachment":[{"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/media?parent=9162"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/categories?post=9162"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/tags?post=9162"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}