Skip to content

Find all the descendant with name Bob for all the ascendants with name Will on any level of ancestry

Notifications You must be signed in to change notification settings

xue2sheng/GenealogicalTree

Repository files navigation

Genealogical Tree

Summary

Program should be able to find all the descendant with name Bob for all the ascendants with name Will on any level of ancestry. In order to present the capabilities of your app:

  • implement the application to optimize the initialization time.
  • application should have built in data about genealogical tree of people living in particular country.
  • please generate a representative data that has sample people an relationships between them. Use all varieties of names (can be also generated) but also put two test names (Bob and Will) and connect them in different relationships.
  • the application should posses tests that are checking possible edge cases and ensure the stability of the application.
  • the designed data structure should ensure optimized search time on following fields: name, last name, date of birth and location.

Approach

In order to make it easier to mantain all the tasks and let us apply specific tools & languages for specific issues, a 'divide & conquer' policy has been taken based on git submodules: Main, Core, Persist, UI and Base.

width=150px

Instead of starting directly with the core problem, don't test thoroughly edge cases, leaping into too early optimization, don't document your results/decisions/mistakes and ending with an app that only run partially on your development environment, the aproach will be the opposite one.

  1. Ensure a minimum of portability on different environments.
  2. Configure linux environment on your Windows or MacOSX box if needed.
  3. Generate diagrams from codex and documentation to be able to track down all the changes.
  4. Use templates to gather external information to document as much automatically as possible.
  5. Write tests to cover your app and let you optimize knowing you're not breaking previous development.
  6. Measure your application in order to compare improvements/regressions during the optimization stage.
  7. Simulate your deployment infrastructure to hunt down integration issues as soon as possible.
  8. Solve the core problem in the most simple and maintainable way at our disposal.

width=300px

No doubt this approach is an overkill for a pet project but it's way more realistic for big, long ones.

About

Find all the descendant with name Bob for all the ascendants with name Will on any level of ancestry

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages