30 lessons we’ve learned building software products