Doc Norton wrote:
...A good strategy is to look at the project as an investment - invest a reasonable amount and see if you are getting a return...
Junilu Lacar wrote:It's the Iron Triangle, right?...
Junilu Lacar wrote:
Does that imply that non-Agile or non-iterative projects have well-defined scope of work?...
Frank Carver wrote:... I have found that software can be a lot easier to reason about if dates and datetimes are stored and processed as seconds-from-the-epoch and only converted to timezones and human-readable formats...
Campbell Ritchie wrote:Are those date/time formats? I would have thought they are date/time display formats, or parsing formats. That sounds a bit like an internationalisation problem...
Ken Youens-Clark wrote:... I would say it's best practice to use type annotations as much as possible... Some people find it abominable to declare types in Python, but I find it far easier to read and use tools like pylint/flake8/mypy to check my code....
Stephan van Hulst wrote:... While it's still unlikely that this application will print each phase exactly once, at least it's guaranteed that the phases will no longer be printed out of order. The happens-before relationship in thread A is synchronized with thread B every time they reach synchronized(lock)...
Trisha Gee wrote:... Using immutable objects where possible is one way to embrace this approach....
Stephan van Hulst wrote:... As a more practical tip, use your debugger's stepper. In many IDEs you can switch the currently active thread, and you can step through the code execution for just that one thread. That way, you can try to break your own code by stepping one thread into a critical section of your code when it's not supposed to be there.
Himai Minh wrote:Hi Geoff,
You may consider using ReentrantLock to make a method thread safe.
D.J. Quavern wrote:Took the liberty to share another screenshot where type annotation is extremely useful, if it is ok ...