When implementing algorithms, carefully evaluate trade-offs between built-in methods, custom implementations, and different algorithmic approaches. Consider factors like browser compatibility, performance characteristics, maintainability, and edge case handling.

Key considerations:

Example from the discussions:

// Custom implementation for compatibility
export function findLast<T>(
  array: ReadonlyArray<T>,
  predicate: (item: T) => boolean,
): T | undefined {
  for (let i = array.length - 1; i >= 0; i--) {
    const item = array[i]!
    if (predicate(item)) return item
  }
  return undefined
}

// vs. built-in (when available)
array.findLast(predicate)

Document the reasoning behind algorithmic choices to help future maintainers understand the trade-offs made.