Just coming from Hong Kong or Tokyo I don't understand how someone can write an article like this without feeling completely embarrassed. Bart is a symbol of American incompetence.
It's like, ok, unique decision on the broad gauge. But the Bart is a piece of shit. So why should I care?
A real topical blog post would be one comparing Bart to say the train systems in China; but instead they ignore the obvious and focus on this irrelevant detail.
>These aren't just random libraries that some FAANG dev worked on in their free time. These are company-released libraries and frameworks, that have full time employees working on them. If these companies are willing to pay FAANG engineer salaries for these employees, I expect it to be FAANG level work
You seem to view FAANG as some school of superior humans. I can assure you the amount of variance in intelligence is quite high.
But let's assume everything you said was true. It doesn't change the fact that FAANG can put full time employees on EASY problems to produce "FAANG level" work. FAANG companies have a bunch of menial developer jobs that need doing. And if the only people in the building are geniuses then the geniuses are the only people available to clean the toilet. Yeah and you can probably expect them to build a robot (that no one will use) that automatically cleans the toilet.
Additionally I should mention that google in FAANG is a bit different in terms of web. They use C++ for most of their backend services for scale, so it's a step above typical web development. Although I'm very sure it's not too far away as their developers extensively use frameworks so the experience of development doesn't deviate too much from your traditional golang or java app.
>As for anecdotal evidence, sure I have some, my professional experience is pretty evenly split between Java and Javascript, both backend and frontend. I feel like they are of equal difficulty
A web dev includes both "backend" and "frontend" your statement shows that your experience is exclusively web dev and as I suspected very javascript focused. When I said web dev was easy, I wasn't talking about just front end. I was talking about everything from the front end all the way to the back end. This includes architecture, optimizing queries and all that jazz.
>I have no doubt you won't be happy with this answer though
No of course not. Don't attribute it to some predictive power you have about my bias. It's not, I stated plainly what was needed. I literally stated what it takes for me to be interested, and you literally stated that you had nothing. I'm pretty sure your opinion will change if you ever do a big software engineering career switch outside of web.
Well you did say you have experience with Java but you never said what you were doing with that Java. So if you're one of the few developers doing things outside of web with java then I stand corrected.
>If smart people are working on these problems, I would expect them to be hard.
This isn't a logical statement. Who says smart people can't work on easy problems? Is there some rule that says smart people HAVE to work on smart problems? FAANGs definitely has a bunch of mundane problems to work on, and they have an over abundance of smart people to work on those problems.
>I suspect an argument about difficulty will go nowhere until we have a proper way of measuring such things.
Not everything has to be done through scientific measurement. If I punch someone in the face I don't need some scientific measurement to tell me he will be in pain? No. Anecdotal experience is enough here, and such "measurements" only serve to make things too pedantic.
The same applies to web development compared with other fields of software development. I think it's actually quite obvious. If you disagree, which you're free to do, then I would ask, do you have the relevant anecdotal experience? Have you worked on something outside of javascript or web development?
If not then I would say your experience and thoughts are biased. Among most people who have experience in software development outside of web, it's obvious them. If I'm wrong and you do have extensive experience outside of web then I'm actually interested in what you have to say because it's like hearing someone say that being punched in the face is not painful at all.
>It doesn't take a complicated renderer to make a usable browser.
99.9% of front end web developers and back-end as well won't even know how to begin to do this in C or C++. Nowadays to even build a trivial renderer in C or C++ using vulkan is not something someone can pull up a tutorial for and learn. Not like React or Vue or even some backend framework.
>I don't think it's pointless at all. If advanced pure web dev is relatively less complicated ,even at the highest levels, then it's important to define where the line ends and begins
You accomplish nothing with this other then to put one set of developers in a stupid bucket and another set in a smart bucket. These buckets are real but specifying and talking about the bucket only pisses people off. Additionally the line is very complicated and has several dimensions and in many areas the line is not a line, but a gradient.
You'd only be aware of of this dichotomy if you worked outside of web development (and not in datascience).
Nah. That's crossing over to not being a web dev anymore if you're writing a browser engine in C++ and the renderer is in vulkan or opengl. If someones writing a rendering engine in javascript and html. Well, that person is basically what I'm talking about in my initial post; a person who thinks he's solving some problem but not.
It's blurry in this area. It's hard to fully define and arguing about the borders of this field is sort of pointless.
Take the definition to be fuzzy but to be referring to the Majority of Web Developers in general, and advanced web developers to be people that are harder to define.
These things are trivial compared to what other fields of software engineering have to deal with (and other fields have to deal with all this stuff too along with extra harder stuff as well)
At the most advanced levels of pure web dev it is still FAR easier then other fields of programming. It only gets a bit harder at massive massive scale, which 99% of developers are shielded from through frameworks or the fact that the company itself doesn't deal with that level of scale.
He hasn't been in the industry long enough to see that most of the pillars of software engineering are built on top of massive tech debt.
When I say tech debt I mean design flaws created by designer who simply could not anticipate the future. I'm not talking about bugs, mistakes or intentional shortcuts.
Whether jenkins is "tech debt" is a different topic. But whether Jenkins is here to stay past 2025 has nothing to do with how well it's designed.
I think the opposite. The tools keep changing because they think they have a solution to a problem and they end up creating something that's relatively ineffective.
If you been in other areas of software engineering like embedded development, OS development, language development, database development, game development.... then you will see that Web development is the easiest and most accessible. The filter for intelligence in web dev is much less stringent and thus the people in web development tend to reflect that.
Not trying to offend anyone. I've been a web developer most of my career and I switched to embedded development and I have to say, web dev is definitely really easy.
This stuff is foundational to things that check for program correctness. For examples type checkers check if the program is type correct. The foundations of these checkers rest on the content of these pages.
It goes even further then this in the sense that with logic you can design a language with correctness checking where even the logic of your entire program can be verified via something similar to a type check. So for example, Agda or Idris are examples of languages with this capability.
So basically most of this stuff isn't relative to most job. It's a higher level thing. It's more advanced theory for the people who create the tools SO you can do your job. A step above Dev Ops... it's the people who create the languages you use.
SQL is already a very high level API that compiles to low level algorithms? Why put another very high level API on top of that?
To top it off SQL is a leaky abstraction by nature. Two high level SQL queries with equivalent results can both compile into algorithms with COMPLETELY different performance profiles. You have to manipulate the SQL query to generate the correct performance profile. This means understanding things below the SQL abstraction.
You put a ORM or any new abstraction on top of that guess what? That abstraction must compile into hacked SQL. You have to be able to manipulate the ORM such that it generates the correct SQL such that the correct SQL generates the algorithm with the correct performance profile. The leak from the sql abstraction must propogate into the ORM layer which in itself must be a leaky abstraction. It's like dealing with a leaky pipe embedded within another leaky pipe.
Optimizing SQL is already a domain knowledge thing. Now you have to use new tricks to optimize the abstraction on top of it. Two Leaky abstractions on top of each other and both very high level is a bit of a head scratcher.
Why do people even make these abstractions that only make life harder? I think it's an illusion. It's to satisfy an OCD thing but people don't realize the OCD is an illusion. People want to deal with a single language, not have strings of another language living in the code. For example, SQL strings are seemingly kind of ugly in something like GO code.
Databases are the classic bottleneck of web development in terms of speed. Optimization is a very important part of writing SQL queries as a result. Having orms and other high level abstractions on top of this area is much much more harmful then it otherwise would be if databases did not exist in this bottle-necked area of web development.
In actuality it's also questionable whether or not a leaky abstraction in the first place was the right design decision. Is SQL the right abstraction for database queries? Or should we design another high level API that has a more 1 to 1 correspondence with optimization as in a High level API that's not leaky, like What Rust is to systems programming.
It's like, ok, unique decision on the broad gauge. But the Bart is a piece of shit. So why should I care?
A real topical blog post would be one comparing Bart to say the train systems in China; but instead they ignore the obvious and focus on this irrelevant detail.