For money:<p>Work at whatever job meets your financial needs, everything else is gravy. This will be hardest at the start, but as you gain seniority, you&#x27;ll have increasing freedom to work where you want. All things being equal, established companies will pay better. Save money, but don&#x27;t take jobs you hate to save more money - it&#x27;s not worth the equity.<p>For work:<p>If you know what you want to work on and can get a job in an established company, do that. Established companies are much more likely to actually have you work on what they hired you to work on. They are also much more likely to continue the project you were hired for. There are exceptions, but generally you will have much greater resources available to you. Your work may never see the light of day, or may only be used internally, but you&#x27;ll walk away with a lot of experience on a specific area.<p>If you don&#x27;t know what you want to work on or you like working a little bit on a lot of things, work for a startup. Especially for junior roles, there is enormous flex in terms of what you&#x27;ll actually work on from day to day. This is not limited to programming, but includes all branches of tech work: architecting, service monitoring and setup, marketing, etc. The downside is that it can be hard for you to explain, in a substantive way, the amount of work you did during this time. The upside is that you learn a lot and get a feel for many things.<p>As for future options - startups will give you many shallow options, working at a big company will give you lucrative &amp; focused options. If you work only in one area, understand that you are betting on that &#x27;kind&#x27; of work to continue into the future. The more experience you have, the more value you have <i>in that market</i>. The value in that is entirely dependent on the value the market puts on your skills. You can often pivot, but it can be difficult. Keep that in mind when looking at future work.