4 ms·
Question for the longtime web developers out there* : Is there a problem where many web developers never studied CS in college, and now we're seeing the conseq
by CoastalCoder 3y ago
Question for the longtime web developers out there* :
Is there a problem where many web developers never studied CS in college, and now we're seeing the consequences of them not taking classes on operating systems, databases, concurrency, etc.?
As an outsider to web development, I get the impression that a move-fast-and-break-things approach seems to work well at first, lulling developers into a false sense of confidence in the way they're using databases.
But then they end up learning the hard way (if they learn at all) about why ACID transactions, 2-phase commits, SQL, etc. exist.
* I've done plenty of work with / on / inside DBMSs, but I've never worked with directly with web developers.
- Izkata 3y agoSpeaking of about 5 co-workers: they came through react bootcamps and have no knowledge of things I consider so basic I'd never have thought about it until I saw them struggle over a bug caused by it. For example, I had to explain the difference between a shallow copy and a deep copy to 3 of them. They did all seem to understand it immediately so it's not like they couldn't handle the work, but there's a lot of random stuff they never thought about before and don't even realize is a thing. And those are all much more basic than, say, concurrency and databases.
- karmakaze 3y ago> web developers never studied CS in college, and now we're seeing the consequences of them not taking classes on operating systems, databases, concurrency, etc.? I wouldn't single out web devs, even devs that took those courses don't really remember/understand or apply it. OTOH some without any degree can also pick it up quickly if it's explained clearly to them. I've also not used 2-phase commits in practice though it's good to be able to recognize when that's the territory you're in. Typically it's commit, detect & compensate. What's even more shocking is how many experienced Ruby/Rails devs know ActiveRecord but not SQL and how indexes/query plans work.
- Fire-Dragon-DoL 3y agoIn my database class there was no mention of transaction isolation levels. Most of the focus was designing the database in third normal form and the math behind it. In all honesty, a read to the postgres doc page of the transaction isolation level page is incredibly instructing. All that's missing are exposing some of the consequences (essentially examples of how it acts in practice)
- rcbdev 3y agoI went to vocational school for Software Engineering and then university. Both paths took ~5 years each. Only course I ever had that covered this topic, along with proper DB sharding, was at vocational school. I suspect this is because the instructors had practical as opposed to academic experience. This points to a larger problem where university curricula aren't decided by who actually has the most practical experience. At least in Europe, Software Engineering university curricula seem very dry and obsessed with formalisms across the board.
- Fire-Dragon-DoL 3y agoThat vocational school sounds really cool though!
- rcbdev 3y agoFor engineering-related subjects they're called HTL (engl. "Higher Institutes of Technical Education") and they represent a pillar of Austria's dual education system. Our school system is rather complex[1] but allows for students to get their university entrance qualification ("Matura") while also getting vocational training in their respective engineering subject (in my case Software Engineering) and also some training in business - i.e. filing taxes as a business, etc. These schools also exist for many other fields (Forestry - HLFS, Nursery - HLSP, etc.) and statistically speaking these days a little over half of Austrians who get their university entrance qualification get it from one of these schools (BHS) or another type of vocational school (BS) rather than traditional non-vocational high schools (AHS). Rather unfortunately, while people who complete these schools are very in demand inside of Austria, outside of our little nation people don't really understand the system - So people who want to leave for other countries often go through the motions of getting a degree in their subject anyways. People recognize "M.Sc." more than "Ing.". (Ing. being the title conferred after graduating such a HTL and working in the industry for a while) TLDR: Austria has a developed system of vocational schools for all types of subjects. [1] https://national-policies.eacea.ec.europa.eu/sites/default/files/2021-06/Austrian%20educational%20system%20graph.pdf https://national-policies.eacea.ec.europa.eu/sites/default/f...
- cmrdporcupine 3y agoIn my opinion the lack of understanding of transactional consistency & isolation models... as well as the lack of understanding of the virtues of the relational model... are why microservices have become such a plague and why many applications are burdened with extremely high (non-intrinsic) complexity. And I think that can be tied back to people not taking reasonable DB courses in school, or having that emphasized in their careers. The former causing people to not be properly concerned with data consistency (and doing stupid things like service-level joins). I've seen outright data races, consistency issues, odd behaviors... from systems backed by an RDBMS... because the devs just don't get or care about databases. The latter with why OOMs and "DAOs" and "transfer objects" and treating the DB as a "persistence" layer have become the default in how things are built. Many people resolve the famous "object relational impedance mismatch" by just completely abusing the database, and not thinking in a relational fashion when modeling their application and schema. I started my career with this mentality, because OOP was the rage, but came around to a POV where I learned to love the relational data model, and to start from modeling the data as the foundation. (when I still worked on data driven apps, I'm in embedded now). The classic "Out of the Tarpit" paper is relevant here.