Interning at Uber and I want to do whatever I can to make myself a better engineer by the end of the internship. Working on the intern project itself is a little small-scoped because I won't learn about other systems at the firm. My question is, what can I do to maximize my learning about: backend system-design, API design, Infrastructure, UI (Android/iOS/Web) design and just software engineering design principles? I'm willing to put in 12 hours or more a day to maximize the knowledge I can gain about all these fields? Reading other's code all day taking notes? Reading engineering design documents? I'm asking because I really want to learn about building products from end to end so one day I could do the same for my own startup
Attend design meetings, have a tenured mentor, join LSEs and learn from them, read design docs, follow the guidance of well respected SDMs
Get a pulse of the social hierarchy and befriend early engineers. If these people like you, they will be your network later and also tell you stories and give you historical context of the systems and how they developed and how they would do it differently
In my experience, the most efficient way to maximize learnings as an intern is to integrate yourself into the team and work closely with others on things that have a real impact in production. It will give you a feel of what being a full time software engineer is really like. Reading code and design docs without context and real experience on building a system isn’t usually productive.
Intern projects don't have such a large scope. And we don't get to work on core systems
Try to be proactive and social; learn about what other team members are working on, and see if anyone is willing to give you some work. Ask him why that work matters, and how is it related to the current goals / priorities of the team.
Push something shit to prod and fuck everyone's day.
Welcome to Facebook!
Upload all internal repos to your icloud account
Yes that's literally how you get the most knowledge out of a company! Get the design docs too while you're at it. Customer data is a huge plus.
Schedule one-on-one's with everyone, learn what other parts of the business are doing. Or deep dive on one system that you are interested in. There's not enough time to learn everything in a summer, dont burn out trying to - plenty of time for that later in your career
Would you recommend reading through erds and the codebase? For example, j want to learn about the dispatch systems at Uber which are possibly the most critical. What's the best approach to learn how these were built? Reading docs? Talking to people? Im not on that team either
Avoid stuff that provides little value to you
Thanks for your input. I understand this sentiment but difficult to implement it. For example let's say I was interning and Facebook and wanted to know a brief system design of Instagram including API design, and the systems. What advice would you give me? An intern project is in small scope