8 ms·
No mention seems to be made of how long Spencer was at Google. As for the "pathological love of Java", Spencer has a distorted view. This will vary from projec
by cletus 14y ago
No mention seems to be made of how long Spencer was at Google.
As for the "pathological love of Java", Spencer has a distorted view. This will vary from project to project. I'd say C++ is more pervasive although Java may well dominate applications (rather than infrastructure) code.
Also there are lots of people who use Python but ultimately its production use is limited.
A common theme here seems to be that as an engineer you are discouraged or disallowed for doing things that are too "clever". This is something I approve of. Other people need to maintain your code after all.
For example, the abusage of automatic semicolon insertion that the Twitter devs behind Bootstrap seem to love (as some kind of "see how smart I am" display) would never survive at Google (our style guide expressly forbids excluding semicolons).
Anyway, sorry it didn't work out. Good luck, Spencer.
- trimbo 14y agoYeah, I read his list of cons mostly thinking "gee, this sounds like an environment I'd enjoy". What look like cons when you're younger often end up being pros once you've been around the programming block a few times and inherited code that should be featured on the Daily WTF.
- dwc 14y agoI've been around the programming block a few times myself and inherited some perfectly horrible code, and his list of cons makes me shudder. But people differ. I've (purposefully) worked at smaller companies where I had more influence over the technical direction. I think a good amount of his cons list come from the size of Google, and all that large size brings with it. Many of those things are probably needed in a large enough company, to prevent the very things you seem to think they'd bring (Daily WTF time!) But in a small company with decent people, those rules and attitudes would be overly restrictive.
- AdrianRossouw 14y ago"Pathological love for Java and anything resembling Java." I've often sensed this, when they push stuff like [1] GWT and to some extent Dart. and of course the entire android brouhaha. [1] https://developers.google.com/web-toolkit/ https://developers.google.com/web-toolkit/
- cgs1019 14y agoGWT takes the (very large) pool of capable Java programmers and magically enables them to become capable web programmers without mastering cross-browser subtleties. It's all about compartmentalization. For any/all its faults, that's an astoundingly immense value.
- chubot 14y agoIt depends what you mean by "capable". It's more accurate to say it takes large pool of Java programmers and lets them write slow and bloated UIs with canned widgets that are subtly (or not so subtly) inappropriate for the task at hand. Google should be producing best-of-breed UIs, not ones that are easy for the unskilled to write. It's not like Google can't afford to hire the best. A main reason for the slowness is that GWT obscures the boundary between the client and the server. People end up writing things like: for (x in hugelist) { doSynchronousCall() } without realizing it. And then people test it on fast internal network connections and they don't realize what a poor experience results for average users/mobile users. Another problem with GWT is that the JavaScript world has moved extremely fast in the 4 or 5 years since GWT was developed -- and most programmers don't know how to interface GWT with native JS (and that would defeat the "purity' anyway). So they're locked out of that functionality. No matter how big the GWT team is, it can't keep up with the rest of the web advancing the state of the art in JavaScript. I've also heard from people working on the Wave codebase that GWT was a big part of the reason they were locked into a particular design and couldn't iterate. For some reason Java just encourages people to dump out mountains of code. Maybe you can get away with that on the server, but when generating JS it just leads to UIs that crash the browser.
- justinmk 14y ago> People end up writing things like: for (x in hugelist) { doSynchronousCall() What are you referring to here? I use client-side GWT daily; it is clear that RPC success() and failure() callbacks are asynchronous. > the JavaScript world has moved extremely fast in the 4 or 5 years since GWT was developed ... So they're locked out. GWT uses the Closure compiler, which presumably takes advantage of modern javascript advantages. > when generating JS it just leads to UIs that crash the browser. I work on a very large GWT client-side application, and size is indeed becoming a problem. Java is like kudzu.
- wpietri 14y agoHis LinkedIn profile lists how long he was at Google: http://www.linkedin.com/in/spencertipping http://www.linkedin.com/in/spencertipping 10 months.
- alain94040 14y agoApologies for judging people on their resume, but that linkedin profile shows a series of job, each of them lasting less than 1 year. That's a bit of a concern. Together with a post that I subliminally read as "if you don't adopt functional programming you are a loser", I'm tempted to look for more grounded opinion on the matter of Google's technical choices. That being said, if you understand functional programming, you have my respect.
- ryguytilidie 14y agoHe finished school in 2009 so most of the early ones seem to be internships or part time. He has had 3 jobs since 2009, at Google, LivingSocial and Social Media Networks. All of those places have very good reasons to leave. I have no problem with judging someone based on their resume (I'm a recruiter), but I genuinely don't think there is an issue with this one at all.
- benatkin 14y agoSocial Media Networks was acquired by LivingSocial, so for the purpose of discussing career habits, that's one job.
- luckydude 14y agoI'm an old guy so you are free to ignore me. A trend I've seen is young & extremely smart people making posts saying "you are doing it wrong, you should use lisp or $whatever_language_they_like". What I haven't seen is a lot of posts from these same people (have seen them from others) where they are talking about maintaining code, bringing new people in who can fix bugs, add features. I think the natural progression for smart people is - wow, I'm dumb, I'm so dumb, I need to learn. - a few weeks/months/years of learning - holy crap, everyone is doing it wrong! They need to use $New_Whiz_Bang! It's so cool, it's objects or functional or has $feature_I_really_like, why aren't they using it? - time passes. A lot of time. Maybe a decade. - Oh, my, legacy code sucks. I don't understand what $programmer did 5 years ago. Holy crap, $programmer is me! - Wow. Customers suck. They want this code to work and $cool_guy embedded a lisp interpreter in the middle of our database and wrote a bunch of cool lisp that I don't understand. And the customer wants it fixed yesterday. And my kids and wife hate me because I work too much. - I really wish everyone would program their code like it was intended to be understood by an idiot. My take? Writing code is easy. Fixing it is hard. It's easier if you weren't trying to be clever when you wrote it.
- duckduckgouser 14y agoabusage != a real word Agree with what you said, but also think that Spencer's views on Java echo my thoughts on Java after having worked with a dynamic language for some years now after having worked for more than several years in Java. Java is too verbose for its own good, period. It has its place, but it sounds like Google needs to embrace change.
- sliverstorm 14y agoA common theme here seems to be that as an engineer you are discouraged or disallowed for doing things that are too "clever". This is something I approve of. Other people need to maintain your code after all. "Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it." – Brian W. Kernighan
- tikhonj 14y agoOf course, if you can debug it, it means you could be solving a harder problem ;). And harder problems are more fun, even if you can't quite get the solution to work.
- sliverstorm 14y agoThat's an awful game plan. If you can't debug it, chances are you aren't going to be solving it, unless you reliably write bug-free code on the first try.