During my career, I have worked with both within a product team and with an agency.
Here is a short comparison from what I have seen:
Clients come to you with requirements and you and the team try to implement those.
- You get to work on new projects and requirements, so you don't usually get bored
- You get to try new stacks in projects
- Deadlines can lead to compromises and hacks to just deliver the project
- Can lead to work-life balance issues
- Requirements are always changing which (might) lead to more hacks.
The company has a product idea which is implemented and probably has paying users. Your job is to keep this product up and running. Plus add new features to keep those customers happy.
- Having more time to invest in code quality and applying best practices
- Having a long term vision about the product's roadmap
- Less pressure and you have more time to experiment with features
- Legacy code you have to maintain
- You miss that lovely feeling of creating projects from scratch
- It's hard to know what the customer really needs
What do you guys prefer and Why ?