We Don't Run Tests on a Continous Integration Server #3
Replies: 6 comments 7 replies
-
https://github.com/aaronjensen/software-development/blob/master/continuous-integration.md?plain=1#L6 Not CruiseControl in 2000 or CruiseControl .NET in 2003? |
Beta Was this translation helpful? Give feedback.
-
Might be useful to point out that the team's norms reside within each and every member of the team, from the most junior to the most junior; that our culture and practices are tailored specifically to create and reinforce the ready knowledge of the norms; and our process compensates for the time required to teach and support team members because it's infinitely faster to not make mistakes than to be caused to become aware of them and then to correct them. Most teams will have never experienced this speed, and some won't even believe that it can be achieved. Often this is because their practices presume after-the-fact detection of mistakes and the ownership and operation of the tooling that does the detection and alerting. Rather than invest in mistake detection tooling and operations, we invest in the people, and count on them for mistake proofing. Or as Shigeo Shingo refered to it as part of the Toyota Production System: Poka-yoke. There's an exponential cost increase in managing a mistake the more time there is between making a mistake and correcting a mistake. The cumulative effects of mistakes eats more of a software team's productivity than they know - and most aren't even paying attention at this level. The ultimate in cost reduction and productivity enhancement is empowering the software developer to make fewer mistakes, or no mistakes at all. And while mistakes will always be a possibility, optimizing culture and process around eliminating mistakes pays far greater dividends than mere mistake-detection automated tooling. |
Beta Was this translation helpful? Give feedback.
-
The point about attention can't be stressed enough. It's cultivation of attention that our process is principally concerned with. |
Beta Was this translation helpful? Give feedback.
-
Thanks for sharing! I agree most of it because I've seen the cost of CI in real work. |
Beta Was this translation helpful? Give feedback.
-
Some questions
What does this mean for your development process? Do you ensure that your team members have prettier disabled for JavaScript files vs legacy TypeScript files?
Do you know what sort of countermeasures? Does this mean digging more into having better tests? Or something else?
I can see your point here. You can expect attentive and thoughtful development. |
Beta Was this translation helpful? Give feedback.
-
I love this. I've felt this way for years. Though not always the case (especially on pet projects or very small libraries) I put a good deal of consideration into how things are formatted for readability's sake. I suppose readability is purely subjective but I often find formatting/styling from those tools make the code less readable.
I'd be curious to know what these "interactive tests" are. My interpretation is that these are tests that would be well covered with some e2e tooling, no? I've worked in a couple places where qa had hundreds of "manual" tests. The DevOps handbook has a couple sections on such practices but suffice it to say, it's better to automate important tests like that. What aspect of these tests make it so CI can't run them? Perhaps I'm misunderstanding something.
Definitely. I personally believe effective development is all about feedback cycles. The more quality feedback you can get and the shorter each of your cycles are, the better. For example, unit tests are a form of feedback cycle - they inform you of correctness with every change and are cheaper/quicker than CI. CI is another feedback cycle and deployment is another. Each feedback cycle combines to form your complete development flow. The shorter each cycle is and the less defects passed down to the next cycle, the better. If your first cycle (local development, running unit tests, compiling, etc) is fast and catches most/all of your defects, I really don't see a need for redundancy in CI. Doing so often lengthens the cycle and bottlenecks your process anyway.
I can definitely understand this. IMO, the maintenance cost is highly dependent on what tooling you choose (for example, I find GitHub actions to be incredibly low maintenance but Jenkins + self-hosted runners in K8's + Cloudbuild to be a lot higher) but I do understand that at scale, any tool can get hard to manage and very costly for questionable ROI. |
Beta Was this translation helpful? Give feedback.
-
https://github.com/aaronjensen/software-development/blob/master/continuous-integration.md
Beta Was this translation helpful? Give feedback.
All reactions