Pros
1. Helpful team, team lead was very understanding and flexible (in setting your own time, choosing your own work). 2. Teams are very willing to listen to your technical suggestions and try to squeeze in time for solving technical debts. Its hard to do because of business requirements and ad-hoc tasks, but team lead was able to get allocate few weeks in between tasks (for this). 3. Some of the newer projects are very interesting. If you ask for it (and have some credibility), you'll probably get to work on it, 4. Team lead always asked about your personal growth - what do you want to do, what do you want to work on, how we can make it happen. They were actually able to steer the workload around what I wanted. 5. They recently introduced some changes, (allegedly) based on employee (exit interview) feedback - like, cross-team projects (backend developer gets to work on frontend tasks and vice versa, if they want), 1 week testing time after 2 weeks development sprint, more focus on stability, etc. Yet to see how much of this is fulfilled in reality. 6. Staying with the company is rewarded.
Cons
1. Pain-based development - You get the idea - unless something is causing daily problems or production issues, it won't be addressed. Applies both to software development and workplace policies. Our server crashes (or tasks fail) on high volume days, but eh it doesn't matter. We can just fix that manually. Everything pushes stuff to the same box and overwrites each others stuff. Umm, just ask that person. Not a issue. Maybe this how "startups" are supposed to be, but developer productivity are often very hindered. 2. Founders review everything and whatever they say is the absolute truth. Even if the team leads know that it's not correct, they have to stay mum and just implement that. This is how the culture is like - young guns may try to speak up a few times and learn the lesson, but old ones know better and accept it as it is. To be clear, some of the senior people absolutely love the company (what we are trying to do) and might have spoken up in other environments, but they accept it as part of the job and move on. Founders will review your interview, joining date, salary, appraisals, exit and everything to do with employee lifecycle. Whatever conversation you have with team lead (in these scenarios) WILL just bubble upto management. 3. Team leads are often there because they joined the startup early. They actually are decent to good in managing the teams, but often are not very technically strong. You might not get to learn much (technical stuff) from them and sometimes it is little hard to explain the architecture. Giving exact examples help a lot, rather than trying to explain all the cases theoretically. 4. Things are haphazard, but getting better with new HR. Referral policies only exist verbally, interviews used to be scheduled without any calendar invite, you are supposed to get a keyboard/mouse (of your choice) and monitor but no official process / explicit budget mentioned, leaves not tracked in greythr, etc. 5. Compensation is all over the place. Depends on your previous salary, negotiation skills (during interview), counter-offers and how much they need to fill that role. Negotiate hard, no doesn't mean no and they will happily match if you have a counter-offer - that's the formula.