Geoff McKay

Ranch Hand
+ Follow
since Nov 30, 2021
Merit badge: grant badges
Biography
PMP, Coder, Developer of exciting Web projects. Web Dev. Coding.
geoff.co
For More
Brampton, Ontario, Canada
Cows and Likes
Cows
Total received
2
In last 30 days
0
Total given
0
Likes
Total received
4
Received in last 30 days
0
Total given
0
Given in last 30 days
0
Forums and Threads
Scavenger Hunt
expand Ranch Hand Scavenger Hunt
expand Greenhorn Scavenger Hunt

Recent posts by Geoff McKay

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...


Thanks Doc,
That's a great way to look at it, We try to avoid Fixed Cost Bids for Software projects, because the scope is always evolving, and excessively "padding" the bid does not seem like the right strategy.
Appreciate your response.

Junilu Lacar wrote:It's the Iron Triangle, right?...


Exactly!
And with an iterative or Agile process, I have found the scope usually changes... making it challenging to prepare fixed cost bids at the onset.

Junilu Lacar wrote:
Does that imply that non-Agile or non-iterative projects have well-defined scope of work?...


Yes Junilu,
I agree non-Agile or non-iterative projects do not necessarily have well-defined scope of work.
My experience has been many Software projects (regardless of methodology) do not lend themselves to Fixed Cost bids. But, using an Iterative approach frequently leads to challenges with respect to Fixed Cost pricing.
Congrats Doc Norton on your book:
Escape Velocity: Better Metrics for Agile Teams

I have worked on iterative software development projects for several years now.

I have a question about estimating Time/Cost for Agile Software Projects.

With incremental or iterative software development projects, it can be challenging to have a well defined scope definition at the Project Initiation or Project Planning phases.
Without a well defined scope definition, it can then be more difficult to estimate project costs and timeline.

What is the best strategy for estimating project costs and timeline for Agile Software Development projects?
(where the scope of work is not well defined, as can be the case with Agile or iterative projects)

It's possible to fall back to a Time & Material (T&M) contract, or it might be necessary to include extra hours (padding) to cover extra work required as the project proceeds.

How do you suggest estimating time & cost for Agile Software Development projects?

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...



Thanks Frank,
Agreed. Using date/time processing as an "offset" from a standardized date is a workable solution. I have seen some systems use Julian date solutions.

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...



Thanks Campbell. Yes these are display formats to demonstrate a formatting problem we encountered on a project. The program would read and process a Text file (or XML file) as an import of remote/branch transactions for data processing. This input file stored the dates as strings in a comma delimited file. These files were generated on different computers, and the date format of the resultant strings would vary (MM/DD/YYYY vs. DD/MM/YYYY etc.) based on the System Locale settings of the individual workstations used to generate the transaction file(s) for processing. The issue was detected during testing, but it required the addition of a "Locale Settings" check via the program before exporting files. But, this is an example of a real world date/time formatting issue we encountered that needed to be addressed.
Congrats Tomasz Lelek and Jon Skeet on your book: Software Mistakes and Tradeoffs

A mistake I have seen in multiple large projects has been related to consistent Date/Time Handling.

Users and Coders often use different Date/Time formats. (mm/dd/yyyy vs dd/mm/yyyy vs. yyyy/mm/dd etc., etc.) (Time format: 12 hour vs. 24 hour, seconds, etc.)

This problem becomes even more complex when an application shares data with other programs that may use different Date/Time formats and data needs to be used as an input/output for other applications.

What steps/procedures/documentation do you recommend to avoid or minimize mistakes related to inconsistent date/time handling?
Hi Chris Love & Andres Sacco. Congrats on your Microservices Testing (Live Project) release.

Can you use Spring Boot’s Chaos Monkey library to simulate random problems for testing purposes?

For example, is it possible to test App/Code behaviour under conditions such as Memory Assault (Out of Memory Exception)?

Thanks,
1 year ago

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....


Thanks Ken,
You confirmed what I was thinking, and I prefer to use type annotations as much as possible for better readability.
1 year ago

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)...


Thank-you very much for the detailed explanation. The code samples provided help very much. The happens-before relationship and synchronized(lock) approach would maintain the expected order and looks like a good way. Thanks!
1 year ago

Trisha Gee wrote:... Using immutable objects where possible is one way to embrace this approach....


Thanks Trisha. I will look into immutable objects. And thanks for the link to Brian Goetz's book on the topic of concurrency.
1 year ago

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.


Thanks Stephan,
I think the debugger's stepper will be very useful. This will allow me to see exactly what is going on as the code executes.
1 year ago

Himai Minh wrote:Hi Geoff,
You may consider using ReentrantLock to make a method thread safe.


Thanks Himai.
I will look into the ReentrantLock class for methods accessing shared resources.
Appreciated!
1 year ago
Congrats Kathy Sierra, Bert Bates & Trisha Gee on your new book: Head First Java.

I'm a huge fan of the visual style of the Head First book series by O'Reilly Media. The visual layout really works well for better learning and retention.

The Java Concurrency package (java.util.concurrent) makes it easier to build multithreaded code. However, Concurrency Issues can still arise when multiple threads are accessing the same object. For instance, when iterating through a process in one thread, another thread working at the same time could potentially change the logic of the original thread causing unexpected behaviours.

Are there suggested tips to avoid issues when writing Multithreaded Code?

Local Scope variables help, but there are times when multithreaded code must interact with non local variables.

How do you help ensure objects are safe for multiple threads to use at the same time?
1 year ago

D.J. Quavern wrote:Took the liberty to share another screenshot where type annotation is extremely useful, if it is ok   ...



Thanks again D.J.
I have always preferred well structured and well documented code, and I like your format.

Appreciated again!
1 year ago