| Hi folks! I'm implementing Excel-related functionality for at least 4th project in my career. As usual, an ability to save the data set into an XLSX file in a custom format and the way to ingest the data back, using the same data format, or ideally letting the customer map their own formats into our format. What worries me is that I need to take care about all the hassle around - handling large uploads, managing timeouts, reporting the progress, caring about basics of data validation, file encodings, ensuring the import process doesn't take up all the server resources etc. The list of impediments for such a "side" feature is unproportionally large, IMO. There are few libraries for almost every stack, but they still require me to handle at least half of these impediments by my own (resources, server config etc.). I'm wondering, how do you usually handle these stuff? Do we all go through these problems over and over again or are there solutions that I'm not aware of that makes things easier, like a standalone tool or service I can "just use"? If not, my maker soul asks: maybe there should be one? Maybe I should build one? Would you consider using this kind of service in your applications if one exists? Why not? |
Tips (apply common sense based on your specific company):
1. As an engineer, learn to say no. Want to import some random excel sheet into our system? Sorry no you can not.
2. Try to provide an API instead and push the problem to the customer. If they want it badly enough they can pay someone to write something that takes their stuff and imports it via your API.
3. If you have to do the file thing avoid XLSX like the plague. Stick to CSV. It's their problem to convert their XLSX or anything else to CSV.
4. CHOOSE, VALIDATE AND ENFORCE the format (or a few possible formats). Do not negotiate or collaborate with customers about "custom format" and so on. That is a never ending battle you will never win. You give 1 inch they take 10. Eventually they will give an animated gif compressed in a zip file, wrapped in a tarball and ask you to convert that to CSV and import it in.
5. If you are running a typical SaaS don't turn your product into free in-house IT consulting for the random customers. Make the capability possible within the system by exposing an API and leave the rest for them to figure out. If they care about enough they will have to pay someone to create the integrations. 95% don't care and will give up and adapt.
If you have enterprise customers paying 6-7 figure sums it's a different story...