First off, I’d like to add my congratulations!
I’m not clear what the pro arguments for the larger company might be. Is the latter company at risk of failing? In the USA, at least, things are pretty chaotic in terms of corporate survival. Even in established companies, divisions within them are subject to reorgs and have a nasty habit of coming and going.
There is certain value to learning about databases if you haven’t had much experience dealing with them. The most important things, though, IMHO, are not so much about building them or dealing with the internals, but being able to analyze real-world problems and design database structures at a higher level to accommodate them. By higher level, I’m thinking in terms of ERD diagrams and employing concepts such as “normalization” where appropriate, and organizing the data to optimize for the most important functions. Having direct experience with working with SQL is very helpful here.
I’m not familiar with PureScript. It could be a very good thing to pick up, as well. Certainly the processing of transactions, learning more about the financial operations will also continue to be hugely important.
The most successful person I know in programming has done a lot of job-hopping over the years, and now has a nice position at Adobe. At least here in the USA, a lifetime commitment to work with a single company is a thing of the past. (For example, my father spent his entire programming career at IBM.) So, as someone new coming in, I’d try to anticipate the type of work I’d like to eventually do or the industry I’d like to know more about, and treat the first position something like an “internship” or a learning opportunity and a stepping stone, rather than a final destination (but don’t tell them that in the interview!).
Thus, will the type of programming you would be doing help you, going forward, or is it a technology that is going stale? I’d be worried that the “low-level” coding involved in the first job might go the way of COBOL, and not be helpful except for “legacy” programming jobs 10 years from now, say.
I imagine companies have a certain culture to them, and that could also be an issue. Is the more established company one that respects its employees and does not overwork them? The same question can be asked of the “startup.” Sometimes startups can make huge demands and burn out workers, as well as have troubles meeting payroll. But from what you described, your “startup” is actually pretty well established already, so those sorts of things are probably not a concern. And, as the younger company grows, it will be more likely to hire people, near term, that you will be senior to, whereas the first company will mostly only offer promotions when people ahead of you leave.
Another “job culture” aspect not mentioned is the availability of mentoring. If the “startup” company is just going to throw you at problems in a sink-or-swim manner, that can be stressful, and personal progress can be slower as you have to learn things on your own, as opposed to having a senior who shows you the ropes.
I also don’t know a lot about your own goals, for example, if something like game programming or another passion is highly important, and picking a job that supports that passion is an issue (e.g., by providing more free time to work on your own projects).
So, for the most part, from the info you gave, I agree with the others that the “startup” job looks more appealing, but I am not ruling out possible scenarios where taking the other could be the better, say as a “strategic” choice in the short term, with the assumption of moving on after a couple years into a more promising direction.