I think i’ve got a slightly different take - i’m not saying my take is any better though. If we’re talking engineering principles, not team dynamics, then it’s: 1. Use immutability by default, even in languages that make that harder than it should be 2. Understand how liberating idempotency is 3. Divide and conquer, use abstraction to make hard problems manageable 4. Delete code, delete tests, re-write stuff, re-writ…
> 2. Understand how liberating idempotency is Can you give some examples?
Software Engineering principles to make teams better
21–30 of 105 posts
Re: Software Engineering principles to make teams better
#22Earlier quoted context omitted.
Don't expect a better result after a rewrite. Be prepared to accept that.
> Don't expect a better result after a rewrite but what's the point then? why spend effort for it, if it isn't expected to be better?
Learning. The result may not be meaningfully better, but you gain fuller understanding of the problem domain. The third rewrite might have a chance of being an improvement ;).
Re: Software Engineering principles to make teams better
#23I think i’ve got a slightly different take - i’m not saying my take is any better though. If we’re talking engineering principles, not team dynamics, then it’s: 1. Use immutability by default, even in languages that make that harder than it should be 2. Understand how liberating idempotency is 3. Divide and conquer, use abstraction to make hard problems manageable 4. Delete code, delete tests, re-write stuff, re-writ…
> 2. Understand how liberating idempotency is Can you give some examples?
Re: Software Engineering principles to make teams better
#24Earlier quoted context omitted.
> 2. Understand how liberating idempotency is Can you give some examples?
And is another way to say this "side-effect free"?
Reading a variable shared between threads without a lock is side-effect free but not idempotent.
Re: Software Engineering principles to make teams better
#25Why would you put in the work to warn people they'll have a bad time instead of just fixing the bad time.
Re: Software Engineering principles to make teams better
#26Site checks out
Re: Software Engineering principles to make teams better
#27Re: Software Engineering principles to make teams better
#28Earlier quoted context omitted.
> Don't expect a better result after a rewrite but what's the point then? why spend effort for it, if it isn't expected to be better?
> but what's the point then? Learning. The result may not be meaningfully better, but you gain fuller understanding of the problem domain. The third rewrite might have a chance of being an improvement ;).
Somewhat relatedly, I've refactored processes down from 25 hours to 20 minutes. It got to 20 minutes, and other people started nitpicking that it could 'be faster' (the same people who'd let it get to 25 hours, then threw up their hands and said "it can't be fixed"). They spent loads of time getting it from 20 minutes down to... 17-18 minutes (spending 2+ weeks in the process). I'd indicated "there's really no more 'there' there - this is about as fast as it's going to get, without faster hardware". They had to find out for themselves there wasn't much more juice left in the tank.
Maybe it's not related, but I felt like sharing it anyway... :)
Re: Software Engineering principles to make teams better
#29> Note: This visualization was designed for screens larger than 1024 x 1024 and for desktop-style interactions. You can proceed if you'd like. Why would you put in the work to warn people they'll have a bad time instead of just fixing the bad time.
Re: Software Engineering principles to make teams better
#30I think i’ve got a slightly different take - i’m not saying my take is any better though. If we’re talking engineering principles, not team dynamics, then it’s: 1. Use immutability by default, even in languages that make that harder than it should be 2. Understand how liberating idempotency is 3. Divide and conquer, use abstraction to make hard problems manageable 4. Delete code, delete tests, re-write stuff, re-writ…
Don't expect a better result after a rewrite. Be prepared to accept that.
You are also assuming one just rewrites stuff blindly and randomly without any prior new insight.