news.volyx.in

"We ran out of columns" (jimmyhmiller.github.io)

1641 points by poidos · 737 days ago · 571 comments on HN

Article summary

The article describes the author's experience working with a legacy codebase that was poorly designed and maintained, but still functional. The codebase had a large and complex database with many issues, including a table with over 500 columns and a manual calendar system. Despite its flaws, the author found the codebase to be enjoyable to work with due to its lack of constraints and expectations. The author reflects on the benefits of working with a codebase that allows for direct connection with users and fast feedback.

Main themes

  • Legacy codebase
  • Database design
  • Software development
  • Code maintenance
  • User experience
  • Code complexity

What commenters say

  • Working on personal projects without expectations can be freeing and allow for more creativity and experimentation.
  • Using JSON fields in a relational database can be a viable solution for storing semi-structured data, but it may require moving type checks to the application level.
  • Relational databases are still useful for storing structured data and providing constraints and guarantees, even if they may not be the best fit for every use case.
  • MongoDB and other NoSQL databases may not offer significant benefits for certain types of projects, and may even introduce additional complexity and overhead.
  • Migrations can be a burden when using JSON fields, as they require parsing and editing each JSON item instead of relying on the database to handle changes.
  • Using a database like SQLite can provide a better developer experience and be more suitable for personal projects or embedded systems due to its ease of use and lack of additional services required.
  • There is a trade-off between using a relational database with strict constraints and using a more flexible data storage solution like JSON, and the choice depends on the specific needs of the project.
  • Codebases with a lack of constraints and expectations can be enjoyable to work with, but may also lead to technical debt and maintenance issues in the long run.