[HN Gopher] A development process startup founders should use to... ___________________________________________________________________ A development process startup founders should use to ship features weirdly fast Author : gmays Score : 26 points Date : 2022-09-12 21:08 UTC (1 hours ago) (HTM) web link (growing-products.paralect.com) (TXT) w3m dump (growing-products.paralect.com) | tomasreimers wrote: | > Break features into small, incremental changes | | Stacking is a wonderful workflow to accomplish this: | https://graphite.dev/blog/post/N8SOs49y4bYdV1Vjf5qE | andrewstuart wrote: | Startup founders should be explicitly telling their developers to | not write tests, not use CI/CD, not use feature branches. | | All that stuff can come after you have proven your software makes | money / users want to use it. | | Just get the damn thing written in the quickest, most crappy way | necessary for speed. | | The code doesn't need to be organised well. It doesn't need to be | documented. | | The only thing that matters is to do your best to avoid security | holes. | | No tests. Stop testing, apart from manual runthroughs that the | CEO can do in between trying to raise funding. | | My eyes roll when I hear of startups creating "good processes" | for development at any level, let alone CI/CD and tests. | pier25 wrote: | I totally agree. Stop thinking like a developer, think like a | business owner. | | Build the MVP so that it's good enough to start solving | whatever it is you're solving and get your first customers. | | If you can't get customers, what's the point of having a | sophisticated codebase with tests, etc? | agrippanux wrote: | I hear ya; you're not off on most of this. However if you're | building a web service, Vercel (and its kin) make CI/CD | ridiculously easy. Easy as in like 5 minutes easy, and it's | worth the 5 minutes for the all the benefits. | alasdair_ wrote: | Feature branches are fine. Just merge master into your branch on | a daily basis and the concerns about merging go away. | x3n0ph3n3 wrote: | I couldn't disagree more with what they say about feature | branches. | | > merging the feature branch with the main branch takes a lot of | time | | Why would that be the case? `git merge` is not a slow and | expensive process. Is the problem the per-branch code review | process that teams often engage in? They didn't even discuss how | code is reviewed (feature demos are not code reviews). | | > when the feature is done, merging branches back might lead to | new bugs and instability | | Feature branches should regularly be pulling in changes from the | main branch. This seems like it would be a problem whenever your | local main gets behind the upstream main, either way. Lots of | teams will squash changes before merging feature branches, and | run the test suite on it before it's merged. | | > it is more difficult to do incremental refactoring | | Smaller PRs and feature branches. | | There have been a few posts lately espousing the removal of | workflows that have evolved over time to solve real problems in | development practices. To me, it seems like a lot of cowboy | coders not wanting to be constrained by sustainable development | methodologies. | P5fRxh5kUvp2th wrote: | I've seen feature branches attacked a lot and the common | refrain is always the same. They live for weeks and then are | hard to merge back in. | | This is why you should be merging main back into your feature | branch daily, so imo this is just a strawman. | | That's assuming it's not reasonable to have smaller features. | Sometimes it's not. You should strive for feature branches that | live for a day or two, but if you MUST have it longer, just | merge back in. | dr_dshiv wrote: | " We created and use Growthflags to implement feature flags. " | peter422 wrote: | > tests are great in the long run, but can slow you down in the | short run. | | This is just silly, especially given you mention freezing | releases and having an entire QA team go over the product. It | would be much faster to have no QA team, no freezing of releases | and instead have a robust test infrastructure. | | It's fine that this set of rules works for your company, you like | them and are familiar with them, but that's all this list is. | threeseed wrote: | The context is that of an early stage startup. | | At that point most products are basic enough for developers to | test the product themselves. | | And if the codebase is undergoing lots of churn and heavy | refactoring then tests unquestionably will slow you down. | | Maybe it is better to only begin automated tests when you reach | product-market-fit. | BurningFrog wrote: | A good test suite is a _huge_ project asset! | | It also requires considerable skill to build and maintain, and | not every team has that... | | ...in which case you might have a less good and useful test | suite. | solarmist wrote: | I'll give you a case where this is true if you're prototyping | something new and need to keep changing fundamental things like | the data model. | | I have nearly 100% unit test coverage for a couple of the base | libraries I've created, but yeah, writing tests was slowing me | down significantly for the rest. | | Once I have something where chunks of the application aren't | being scrapped every other week, I'll start adding unit tests | to it too. | spyspy wrote: | I think the author is just saying not to have draconian testing | requirements for every PR like some companies do. | | But really, I can see it. Firstly, a lot of engineers suck are | writing tests. White box unit tests with interfaces and mocking | everywhere tightly couple code blocks together. Integration | tests are nice but take a lot of effort to get right while also | keeping them performant. When (not if, remember we're talking | about an early stage company) the codebase and/or the database | schema changes dramatically it will often break the tests which | is just another hangup. | neeh0 wrote: | > This is just silly, | | I think it is silly to use this one sentence without a context | and start arguing. The whole paragraph in the article makes | sense, gives context and advice is reasonable. | thijser wrote: | This sounds a lot like trunk based development: feature flags, | incremental changes, no long-lived feature branches. | | I think better tooling around git will help a lot with speeding | up development teams. | ramesh31 wrote: | > Avoid Feature Branches | | This is a big one. It seems the industry (at least to my | awareness) has almost totally rejected Gitflow for trunk based | development in the last few years. It's a beautiful idea in | theory, but a complete headache in reality. | | > Use feature flags | | Be careful here. Adding feaure flags means you now effectively | have N^N builds (where N is the number of flags) in production, | each with their own possible quirks and integration issues. Keep | them to an absolute minimum, and remove them as soon as possible. | milosmns wrote: | Wait why N2 and not 2.pow(n)? | P5fRxh5kUvp2th wrote: | gitflow is not feature flow, that seems to be a common | misunderstanding. | imaginarypedro wrote: | There are a lot of good practices there and I commend the author | for sharing. I disagree with code freezes + manual QA | verification -- why just dip your toes into CICD? -- and the | advice about writing tests. "We don't have time to test now" | results in a vicious circle. | haskellandchill wrote: | > Request at least one demo per week | | Sigh, such a misguided quota. | dchuk wrote: | I've led a fairly large product org in recent years, and | frequent demos of deployed software is the number one way to | ensure you're shipping software frequently and consistently | alasdair_ wrote: | "no" is a reasonable response to such a request :) | imaginarypedro wrote: | I tend to agree with you that prescriptive notions like this | are a little misguided, but I like the spirit of what he's | after here. | mchusma wrote: | I think this depends on the stage, but I don't think for us | deploying weekly instead of 4x per week (M-Th). Would help. | | We also found feature flags slowed us down a lot in the early | stages. I feel these should only be done for some features (e.g. | an explicit AB test, a large feature with a lot of technical | risk). Feature flags create a ton of complexity, and are often | not worth it. ___________________________________________________________________ (page generated 2022-09-12 23:00 UTC)