33 karma · joined June 6, 2023
It’s easy to just keep being a developer and making choices on how the tech stack works based on things engineers care about, but you need to be able to say no to things that don’t make sense for the business. The new engineer wants to rewrite the API in a language that no one else is familiar with for performance reasons? No. The team wants to go to a micro service architecture before you have product market for? No. There will be some cases where the answer is yes of course but it should be justified why this is needed and you need to be able to understand technically what the impact will be of each decision.
It seems like there is just such a massive influx of people applying for the same positions that companies can be extremely selective, so it’s not that you are doing poorly in the interview necessarily but there are much higher chances of a few people acing the interview now
For now, start searching for roles in companies that are entry level and might write or maintain a little bit of code as part of the job description. These can be tricky to find, but can often be listed under things like support specialist, marketing operations, solution engineering, etc… and apply to as many as you can.
Even if you don’t write any code in your first role, look for opportunities to do so any chance you get.
I started out this way and tasked myself with rewriting an internal meeting tool the company had neglected. I used that experience to help sell myself to teams looking for new developers, and it’s how I got my first SWE job.
Out of curiosity, is the reason for the contract between these modules not being fully known / being able to change often because of how your company wants to use them or is there another reason? I'm just wondering if the reason for this is wanting to be able to reuse modules across different projects for multiple clients or writing integrations for other tools or something totally different.
Here were some of the things I noticed when comparing to REST:
- Caching can become a nightmare and requires a lot of effort to get working correctly for non trivial use
cases / you cannot really use the already "built in" cache control headers in the browser with GraphQL
- Another caching one, but you almost are required to have some kind of server side cache in addition to
the client side cache, it can quickly become disorienting trying to figure out exactly where something
is cached and why, or why you are getting stale data, etc...
- Some abstractions in GraphQL can make the code hard to follow / read in my opinion (data loaders for
example) and also make it hard to follow where the data is actually coming from especially in federated
subgraphs
- Error handling in GraphQL can be really unintuitive and more work is needed to not have the error
response come back as a 200 status code (or handle it correctly if it is an error inside of a 200)Why do you prefer auto-generated GraphQL clients?