{"componentChunkName":"component---node-modules-gatsby-theme-medium-to-own-blog-src-templates-blog-post-js","path":"/what-i've-learnt-as-a-cto-in-the-last-6-months/","result":{"data":{"site":{"siteMetadata":{"siteUrl":"https://javame.netlify.app","githubUrl":"https://github.com/aterreno/blog"}},"mdx":{"fields":{"slug":"/what-i've-learnt-as-a-cto-in-the-last-6-months/"},"excerpt":"A mailing list discussion inspired this ‘end of the year’ personal retrospective, I think a lot of people might be in my same situation and…","timeToRead":2,"frontmatter":{"title":"What I’ve learnt as a CTO in the last 6 months","description":"A mailing list discussion inspired this ‘end of the year’ personal retrospective, I think a lot of people might be in my same situation and…","categories":[],"date":"December 21, 2017","canonical_link":"https://javame.netlify.app//what-ive-learnt-as-a-cto-in-the-last-6-months-1d328ba70fb4"},"body":"function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"title\": \"What I’ve learnt as a CTO in the last 6 months\",\n  \"description\": \"A mailing list discussion inspired this ‘end of the year’ personal retrospective, I think a lot of people might be in my same situation and…\",\n  \"date\": \"2017-12-21T19:01:02.924Z\",\n  \"categories\": [],\n  \"published\": true,\n  \"canonical_link\": \"https://javame.netlify.app//what-ive-learnt-as-a-cto-in-the-last-6-months-1d328ba70fb4\",\n  \"redirect_from\": [\"/what-ive-learnt-as-a-cto-in-the-last-6-months-1d328ba70fb4\"]\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, [\"components\"]);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"A mailing list discussion inspired this \\u2018end of the year\\u2019 personal retrospective, I think a lot of people might be in my same situation and might benefit, I also think it\\u2019s always good to look back in a few years, where I was and where I\\u2019ll be and track progress.\"), mdx(\"p\", null, \"First of all, the context: I am a hands-on CTO of a pre-seed round, pre-revenue startup.\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Avoid Infrastructure (and DevOps!) at this stage:\"), \" go Serverless or rather PaaS/monolith: the amount of time that it takes to spin off, maintain, evolve a non-serverless infrastructure is the most under-estimated task in IT these days, it doesn\\u2019t matter how many good practises, automation, good engineers, good tooling you will use, Serverless or a PaaS will obviously take less time.\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Optimise for the right stuff:\"), \" that implies identifying what is the right stuff, as fast as you can, and the right stuff is a moving target, it might shift on a daily, hourly basis.\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Use the tools that you already master:\"), \" there\\u2019s no time to learn, you might want to optimise who you hire depending on tech in order to get better/more candidates but you need to master that tech, inside out, there is absolutely no time to learn something new at this stage or even worse, to waste time troubleshooting some serious issues because you (or your hires) don\\u2019t know the tech inside out.\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Keep Work In Progress small\"), \": as small as possible, focus focus focus on one single thing, achieve that, move on. Keeping WIP small on a \\u2018standard\\u2019 project is a good practice, but in an early startup, with limited resources, and limited funding you will be constrained by something way heavier than just \\u201Cgood lean principles\\u201D.\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Tech doesn\\u2019t matter:\"), \" Tech is actually the least important thing in the whole chain! Users and Product are way more important. As techies we often see the world from our own techie eye, there\\u2019s a whole ecosystem which is way more important, your users won\\u2019t care about the quality of your code nor how many tests you wrote, even less which tech stack or latest framework you are using: they care about a good user experience and a product that is useful and potentially solves one of their problems.\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Be Pragmatic/Context driven\"), \": it\\u2019s totally fine to hack something together as far as you know (and share with the biz) that you will pay for it later on if a fast Time To Market gives you some useful insights.\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Often not writing any code at all is the best option\"), \" (WordPress, Typeform, Unbounce, etc\\u2026): you won\\u2019t have a system to support, but you will gather insights from your users. Google for a solution before building it, it might be already there!\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Now you are the boss\"), \" but you will notice soon that there are constraints that are above you, there will be always something above you, there will be tough decisions, there will be tech/tools/decisions that you hate and you will have to use/make anyway.\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Better hire one super-senior \\u2018full stack\\u2019\"), \" engineer who can master everything from UX to Infrastructure than two less junior engineers specialised with vertical expertise.\"), mdx(\"p\", null, \"I\\u2019m not claiming that I have succeeded at anything of the above, I am mainly learning from my own failures.\"), mdx(\"p\", null, \"A special thanks to the folks who helped me with chats and support in these last six tough months: \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://www.linkedin.com/in/lucagrulla/\",\n    \"target\": \"_blank\",\n    \"rel\": \"nofollow noopener noreferrer\"\n  }), \"Luca\"), \", \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://www.linkedin.com/in/marcoabis/\",\n    \"target\": \"_blank\",\n    \"rel\": \"nofollow noopener noreferrer\"\n  }), \"Marco\"), \", \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://www.linkedin.com/in/mikedjones/\",\n    \"target\": \"_blank\",\n    \"rel\": \"nofollow noopener noreferrer\"\n  }), \"Mike\"), \" above all.\"), mdx(\"p\", null, \"And that\\u2019s the last but most important tip: \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"have some friends who went trough the journey before\"), \" who can advise and support.\"));\n}\n;\nMDXContent.isMDXComponent = true;"},"allWebMentionEntry":{"nodes":[]}},"pageContext":{"id":"409761ea-aa43-518a-954c-cf61db4583d5","previous":{"id":"043f86ef-37de-508b-a8a8-dc60aa992b47","fields":{"slug":"/tuning-linkedin-privacy-settings/","published":true},"frontmatter":{"redirect_from":["/tuning-linkedin-privacy-settings-64983fa3dfa3"],"redirect_to":null,"title":"Tuning LinkedIn privacy settings"}},"next":{"id":"761f27e7-b3da-5921-b33e-0497a08bea57","fields":{"slug":"/7-years-from-the-monoglot-blog-post/","published":true},"frontmatter":{"redirect_from":["/7-years-from-the-monoglot-blog-post-f13d9e776b14"],"redirect_to":null,"title":"7 years from the #monoglot blog post"}},"permalink":"https://javame.netlify.app/what-i've-learnt-as-a-cto-in-the-last-6-months/","themeOptions":{"plugins":[],"config":{"title":"Antonio Terreno","description":"Antonio Terreno's blog archive","shortBio":"","bio":"Principal Consultant at Equal Experts","author":"Antonio Terreno","githubUrl":"https://github.com/aterreno/blog","siteUrl":"https://javame.netlify.app/","social":{"twitter":"javame","medium":"","facebook":"","github":"aterreno","linkedin":"antonioterreno","instagram":"tritonitri"},"goatCounterCode":null}}}},"staticQueryHashes":["4131332129","645483741"]}