SIDEBAR:I am not that skilled <facetious> or I am unaware of the practice that has no branch in a repo <\facetious>. I use Git. Pretty sure it requires at least one branch. As referenced here I do Git Flow, not Trunk-based I guess (though it seems like a blend as our feature branches are short-lived because our issues are generally small, and we merge into the one branch that gets deployed (after CI tests pass… of course) :-))
--
---
You received this message because you are subscribed to the Google Groups "Lonely Coaches Sodality" group.
To unsubscribe from this group and stop receiving emails from it, send an email to lonely-coaches-so...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Cool diagram — always hard to achieve putting what we do into a visual. So much context.
General:Maybe when you say “engineering practices” you really mean *just* "software development”? I do not see enough breadth below for a comprehensive software application delivery map.
Specific:“No Branches” is a prerequisite? for refactoring is it?…. Wonder what I am doing when I think I am doing something called refactoring after my tests are passing? :-p
My teams and I do feature branches and then merge them back into the main codeline once they are reviewed via Pull Request.No Branches sounds impossible in my pea brain.SIDEBAR:I am not that skilled <facetious> or I am unaware of the practice that has no branch in a repo <\facetious>. I use Git. Pretty sure it requires at least one branch. As referenced here I do Git Flow, not Trunk-based I guess (though it seems like a blend as our feature branches are short-lived because our issues are generally small, and we merge into the one branch that gets deployed (after CI tests pass… of course) :-))For me I would say “minimize work in progress” tends to minimize # of branches in flight.My ideal goal is always SINGLE PIECE FLOW. We do it once in a while.I guess “QA” is specifically left off (BDD != QA)? Leave all the testing to automation? YIKES. Maybe you have a UX design process baked in somewhere… And you ensure all UI code is tested?
Where do you ensure the architecture is performant, secure, scalable to meet the needs of the customer?As an aerospace engineer-turned-software developer myself, I tend to factor in the end state of the likely deployment to alter some of what I do upfront. If it’s just another run-of-the-mill application, then you can likely use a common approach and can skip this step. Probably because I cut my teeth on man-in-the-loop, real-time flight simulation software. And other stuff for DOD, like missile command and control software. When there are rigid performance constraints, I tend to ensure that the approach is vetted against the requirements before I get carried away slinging code.
I feel like there are some necessary startup processes to get you up and running quickly with a glimpse or vision of the product/end goal. And then some set of similar, or refined, or slightly modified practices that carry on during the life of the main product development period. I liken it to getting the skeleton up and running, or the “tree trunk and main branches” upon which we can rapidly build out the app.
This was my attempt some 6 years ago to add a dimension of “time”… some practices, etc.
Imagine our English document – two members have been editing their document separately for a long time. One of them has been saving to dropbox faithfully every few hours. The other spends 3 days editing the saving document. Both have made many changes. Now the 2nd writer will spend several hours reconciling their changes and there is fair chance of making a mistake or losing a key change. In software development this affectionately known as merge hell.
Some organizations “solve” this problem by banning refactoring. (Not kidding I’ve seen this and its effects).
Others move to a model called Trunk Based Development – all code is merged directly back to the Trunk every time a change is “committed”. In our world of English documents this would the equivalent of saving your document to dropbox every hour and ensuring you’re always working with the freshest copy. In the event you differ with a colleague the differences will be smaller and more rapidly resolved.
Other groups work with an approach called Git Flow - https://codeburst.io/trunk-based-development-vs-git-flow-a0212a6cae64 - where changes are reviewed by a second person before being committed to the main code base. With our English documents this would require someone to review all of the changes before they were shared back with the wider world.
This model can work with a caveat that the work needs to be committed and be reviewed/promoted rapidly otherwise the reviewer work can become stale.
The risk I have seen with GIT Flow is that changes can take days to get merged back to Trunk. It requires a very disciplined reviewer to ensure that changes are committed rapidly.
I recommend Trunk Based Development to my clients when they start.
--
Along with explaining Trunk Based Dev - have I given people enough of a hint around GIT flow?
Thanks for playing my game. Hoping for other comments as well.
Mark
--
Would it be too provocative to modify "are committed rapidly" to something more specific e.g. "are merged into trunk daily"?Average branch lifespan should be < 24h is my point.
--
---
You received this message because you are subscribed to the Google Groups "Lonely Coaches Sodality" group.
To unsubscribe from this group and stop receiving emails from it, send an email to lonely-coaches-so...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.