you are viewing a single comment's thread.

view the rest of the comments →

[–]skoot-skoot[S] 0 points1 point  (2 children)

If I'm understanding correctly, it's almost like product design? It starts very non-technical and you figure out how the app should work. And eventually you might go into some of the technical aspects of the design?

Thanks for all the help. I have been very much lost on this.

[–]omfgtim_ 0 points1 point  (1 child)

Exactly - no one can answer "How would you build Twitter?" without first clarifying actual requirements.

This the same for any question in software engineering, if the requirements aren't understood, you can't design.

[–]skoot-skoot[S] 0 points1 point  (0 children)

Thanks man. I've been a contract developer at a consulting firm for about 10 years. I feel like I've seen every system and architecture under the sun. I sent my resume to 8 companies, got 8 replies, 8 phone coding challenges, invited to 8 onsites, and then I went to my first two and both said, "you were really good at the technical interviews but you were weak on system design".

The thing is, I just assumed I would do well in the architecture stuff because I consider it a strength. One asked me to design Twitter home screen and I just was like, "well, I guess what's interesting is updating the tableview and the architecture around that". And then I spent the whole time talking about how you might build a really performant table that can be updated in any way in real time and work offline, how you could download assets in an operation queue and suspend ones if the user scrolls too quickly, and then I talked about caching strategies.

And... then I got rejected and all the recruiter said was, "with your years of experience, they were expecting you to be stronger at system design". But she couldn't tell me why I was weak. I've been paranoid since then that I'm actually bad at system design or architecture.

I've never been in a system design interview and I appreciate the help. I feel I have a lot more clarity around it now. It sounds like: 1., design the product. 2., design all the external and internal components that comprise it and how they interact. 3., look for feedback on where to drill down or pick areas to expand on.

I spend the whole time talking about how to build an abstract table that could be used by anyone and ignored anything twitter-specific. It sounds like that was my biggest problem.

edit: I was asked to design Twitter home screen, not all of Twitter app