Hacker News new | ask | show | jobs
Ask HN: How to build something very complex like Google Maps?
3 points by trues 2959 days ago
I'm a professional front-end developer with 5 years of experience. I have only worked on building websites and web-apps. When I started as a front-end developer 5 yers ago, I thought if I stick with it, I'll definitely be able to at least understand how Google Maps' front-end worked in about 5 years' time. But 5 years later, I'm still as clueless as I was when I started. I have skilled up a lot and my peers and my manager do consider my skills as one of the best, but when I see projects like Google Maps, the front-end wizardy puts my skills to shame. These projects seem so huge and ambitious and make complicated front-end actions effortless and graceful, while I struggle to make simple websites and web-apps work smoothly.

What am I doing wrong exactly and where do I even start to improve my skills to work with teams like that or at least start to undertstand in an abstract sense, how some of the front-end magic was achieved, when I look at complex projects like Maps.

2 comments

Google Maps is the work of thousands of engineers that has evolved over more than a decade.
I understand that. What does it take to be on teams like that? How do I skill-up to that level? I have put in a lot of effort over 5 years but maybe I'm doing it the wrong way.
I'm sort of with the other poster on this thread that it shouldn't be that hard. The overall product is impressive, but every action is done in the context of an existing product where step 1 isn't to write Maps from scratch, but to understand the system (with help from documentation, coworkers, etc) and then see how you can make a change to achieve the desired outcome.

Maps is sort of an outlier IMO since so much of it is done on a canvas, rather than traditional web tech, but if you hardcoded some street geometry, would it be that hard to render it to a canvas and then make it draggable? Then make it clickable, etc?

It sort of sounds like you're having a tough time breaking the large project that is maps down to the individual tasks, maybe do a side projects where you go from idea to prototype yourself, and then see how you can improve it? Hell, maybe just try making google maps yourself? start with a really shitty version that's black and white and work your way up?

You don't even need to go for Google maps - there's plenty of space in OpenStreetMap, and the tech is apparently similar.
Which part of Google Maps front end isn't clear to you? They used to use tiles, I think they switched to vectors a few years ago. The routes and such are drawn dynamically on canvas. The routing itself is done on the server side (though there's a quick rough pre-route done on the front end when you drag points).
And with that you can see in the beginning it wasn't all what it is now. It's been built up over the years, sometimes added to, sometimes totally refactored for better methods...

I would say the two things to make something complex is: to map out the data identify whats the core elements, and second, start building out from that. As you get the core stuff operational you can work on more bits and refactor, etc. As you build you will be coming up with problems and working out solutions, it's a process.

Also given the scale of Google Maps, from what it tracks and how many access it so many different ways, projects like that are the work of hundreds - many specializing on just one aspect or another.