3 ms·
Not the OP but I agree with their comment. I think the distinction is mostly around experience. Specifically, experience designing large systems (understanding
by thinkharderdev 5y ago
Not the OP but I agree with their comment. I think the distinction is mostly around experience. Specifically, experience designing large systems (understanding tradeoffs, resource requirements, etc.) based on product/business requirements. If I can come to you and say "I need a system to manage documents" and you can take it from their (eliciting more details from non/semi-technical collaborators along the way) then you are probably a high-end SWE.
- the_only_law 5y agoShit I’m fairly confident I could do that, where do I apply?
- jmchuster 5y agoIf you want to "apply", then have a friend who works at a FAANG, and they'll connect you. Otherwise, you don't apply, you just have a resume online that looks like that of someone who would have that experience, and FAANG recruiters will already be reaching out and shepherd you through the process till you get to an interview. But while the recruiter sets a relatively low bar for what you should look like, the interview will then set a relatively high bar for what you should look like (and probably overly specific bar). So you need to make sure you have the ability to pass such interviews with flying colors, which itself requires a different skillset/training (maybe 50% overlap with your day-to-day skills). Again, remember during this whole process, what is most important is "do i look like someone who has these skills", which is slightly different from "i am someone who has these skills" or "i am someone who could develop these skills if needed". The latter only matters once you start at your new job.
- btilly 5y agoNo, you're describing the system architect anti-pattern. People who see their job as designing large systems will, over time, lose contact with coding. After that they will lose a critical feedback loop that informs their architectures, and you'll get architectures that work on paper but not in reality. Back when I was at Google they made it clear that it is important that interviewers identify such people in the interview process, and not hire them if their willingness and ability to code were not up to snuff. It was OK if they had a string of architect jobs. What is actually needed is the ability to be down in the weeds, working at a low-level, while keeping an eye on high level concerns and an awareness of how what you're working on will evolve over time. So yes, you design the large system, but have to be a major part of building the prototype. Then make sure that, as more developers are brought in, they learn the tribal knowledge needed to both maintain coding standards and the high level design.
- thinkharderdev 5y agoI agree completely, apologies if I was unclear. My point was only that you shouldn't be ONLY doing "task work" (eg implement this interface that someone has already defined for you). You need to understand how to design the system as well as do in-the-weeds implementation work.
- btilly 5y agoRight. And need to have the good ability to notice a problem while doing the coding work, which causes you to back up to the higher level and solve it at the right level.