News for hackers. Stuff that matters.
Re:Things I wished more developers knew about databases by falcolas on Wednesday April 22, 2020 @10:03AM (#22945645)
(The 80/20 rule applies below, some developers do care)

Developers... just don't care. They want to spin up an ORM, point it at a URI, and forget about it.

I've fought this for over a decade now as a DBA, SRE, DevOps, and architect. Most of the developers don't want to deal with anything infrastructure-wise; they want to spend all the time they can just focusing on the problem they're writing software to solve.

Observeability, reliability, scalability - these are all words that are translated into either "someone else's problem" or "unproductive busywork" in their minds.

Re:Things I wished more developers knew about databases by vsareto on Wednesday April 22, 2020 @10:17AM (#22945791)
Many interests are pulling developers' attention in several different areas all the time.

Database, security, accessibility, performance, infrastructure, tooling and productivity, business concerns, workflow processes (agile), language concerns, new things

All of these like to say "if only the developer could do $MY_AREA better, they'd be better developers and we'd have better software". Each of them wants to pile on more requirements for what devs ought to know.

Let's say we agree that devs should know all of these things. After you tally up every area's demand, you're probably looking at a 10 year timeline before someone's decent in all of these areas by spending approx. 1 year on each of these areas doing meaningful work (as opposed to contrived tutorials).

Even then, things change constantly, so you'd have to continually practice all of these things. Who knows if we'll add a new category next year? Then it becomes an 11 year timeline.

At some point, developer responsibility has to stop.

Re:Things I wished more developers knew about databases by hatchnyc on Wednesday April 22, 2020 @10:46AM (#22946101)
I have done exactly this and found it to be a frustrating and thoroughly thankless exercise. No stakeholder for development teams care about any of this, and your allocation of shared resources plummets as people realize they can dump problems on your team and instead focus their attention on the ones who do not care.
Re:Things I wished more developers knew about databases by debaserab2 on Wednesday April 22, 2020 @03:20PM (#22949177)
I don't agree. If you're designing data structures in a code base you shoulder some of the responsibility for the persistence characteristics of that data.

There's a lot of devs that think database design is the same as starting a new ORM class and generating a migration file.

> Database, security, accessibility, performance, infrastructure, tooling and productivity, business concerns, workflow processes (agile), language concerns, new things

Yes, these are all things that devs should strive to know as much about as possible. Software isn't easy. It takes a long time to become an expert. 10 years sounds about right.

> Who knows if we'll add a new category next year?

Skill domains do come and go, but I think the ones you've listed are solid staples of web development for the past decade and likely will still be for a decade more.

Re:Things I wished more developers knew about databases by vsareto on Wednesday April 22, 2020 @04:10PM (#22949661)
> I don't agree. If you're designing data structures in a code base you shoulder some of the responsibility for the persistence characteristics of that data.

There's usually not a relationship that goes the other way though, for example, developers don't tell DBAs to pick up code so they can write the models in our language in addition to the underlying SQL. This highlights a trend of increasing responsibilities pushed onto the developer.

>Yes, these are all things that devs should strive to know as much about as possible. Software isn't easy. It takes a long time to become an expert. 10 years sounds about right.

But in some cases it's specialists designating what an expert developer should know. It's giving away control in some respects. This turns into new job requirements and a higher barrier for entry. The growth will need to stop at some point.

Re:Things I wished more developers knew about databases by debaserab2 on Wednesday April 22, 2020 @04:50PM (#22950044)
> There's usually not a relationship that goes the other way though, for example, developers don't tell DBAs to pick up code so they can write the models in our language in addition to the underlying SQL. This highlights a trend of increasing responsibilities pushed onto the developer.

Yes, because as a developer you're the one who has the responsibility of implementing the business requirements of the app. There's no trend here; this is the way it's always been. The buck stops with development for a lot of things. The developer is in a unique position to respond to many incidents because they have an intimate understanding of how the business requirements wed with the technology in ways someone like a DBA does not.

DBA's have plenty of responsibilities of their own, such as handling a 3AM alarm that goes off when some part on the application starts hammering the DB from some poorly designed N+1 query problem in the codebase. Often times when the DBA tries to teach the developer it's because he's sick of getting those 3AM wake-up calls.

> But in some cases it's specialists designating what an expert developer should know. It's giving away control in some respects. This turns into new job requirements and a higher barrier for entry. The growth will need to stop at some point.

That's a strange mindset to have. Different jobs have different technologies, and as a developer you learn how to work with them. The specialists aren't designating anything, the job you're responsible for is.

Re:Things I wished more developers knew about databases by vsareto on Wednesday April 22, 2020 @05:30PM (#22950408)
>Often times when the DBA tries to teach the developer it's because he's sick of getting those 3AM wake-up calls.

And if he just learned to code, he could write all the queries himself, check in his own code, and never have 3AM calls. I see no reason why a DBA couldn't manage to write queries in source, especially with some hand-holding w.r.t. source control and check-in rituals. If they are already doing too much, just hire or train more of them. DBAs are equally as smart as devs. Loop DBAs into the business requirements.

>That's a strange mindset to have. Different jobs have different technologies, and as a developer you learn how to work with them. The specialists aren't designating anything, the job you're responsible for is.

This is very push/pull about who should own what and I personally think devs are often responsible for too much. In silo'd places, make no mistake that input is gathered about who owns what. In more collaborative environments, you see the other sides willing to step in and share the responsibilities; blurred lines, but they are still there. What we've adopted is an over-reliance that a dev will just learn many things and we hope he's good enough at all of them that we don't really need deep knowledge or need to delegate work.

Re:Things I wished more developers knew about databases by AsyncAwait on Wednesday April 22, 2020 @04:36PM (#22949916)
Agree with this. There's the whole DevOps nowdays as well, which basically just shifts what used to be an entirely separate, full-time, role onto the developer. Adding DBA to that sounds like it would benefit noone, except perhaps business owners looking for short-term savings at the expense of productivity, ala open-office floor plans.
Re:Things I wished more developers knew about databases by debaserab2 on Wednesday April 22, 2020 @05:09PM (#22950219)
Keep in mind that full time role used to be a hell of a lot of work. Take the project I'm working on right now: https://gist.github.com/ajbdev/11f494906ebb6aa3f6bdf35f2437e...

In ~50 lines of code I can erect a load balanced set of web servers with my app binary preloaded, secured in a private VPN subnet with an auto-scaling policy attached to it.

15 years ago this project would have meant:

- Racking new hardware somewhere on premise

- Configuring several routers and networking equipment

- Tweaking the different software responsible for the different app layers (load balancing, web servers, etc)

- Hoping we forecasted demand correctly and whatever hardware we racked can handle a traffic spike or growth surge

You needed a lot more expertise back then.

And really you can trade all of what I'm doing for a higher level of abstraction that requires even less knowledge of the underlying technology (netlify, heroku, amplify, etc) if you're willing to pay a little more.

Re:Things I wished more developers knew about databases by pjmlp on Saturday April 25, 2020 @04:18AM (#22976579)
In most places I have worked, knowing the database well enough to manage it and at very least write stored procedures has always been expected from developers writing database related code.

I have been doing this for a little more than 30 years now, so it isn't "nowadays" thing.

Re:Things I wished more developers knew about databases by AsyncAwait on Thursday April 30, 2020 @04:02AM (#23028567)
Sure, knowing your database well enough to "manage it" in terms of indexes, bloat, writing procedures, that's a developer responsibility.

What is "new", is developers having to manage the DB backups, k8s clusters, Docker images, Terraform, load balancers, CI/CD, proxies etc.

This used to be a role for a whole another role. Some places do have an "Ops" role, but most tasks are still expected off the developer, with Ops at best providing a helping hand, rather than taking over a task completely.

Re:Things I wished more developers knew about databases by pbowyer on Thursday April 23, 2020 @03:23AM (#22953596)
> There's a lot of devs that think database design is the same as starting a new ORM class and generating a migration file.

Yes, this. Add to the list those who have drunk the DDD koolaid and the database is "merely an implementation detail".

Re:Things I wished more developers knew about databases by aryamaan on Saturday April 25, 2020 @11:44AM (#22978924)
as someone with 6 yoe and who considers himself a decent developer, I am looking for ways which can help me to be so-called expert developer-- I don't mean to say it mockingly.

Genuinely interested in the advice which can help to gain more than I will on my own with my current trajectory.

Re:Things I wished more developers knew about databases by AndrewKemendo on Wednesday April 22, 2020 @02:12PM (#22948487)
10, 11 year timeline to what?

You should be constantly learning everything about the whole stack so that you can actually build functional, reliable, manageable and maintainable systems.

I expect a competent developer to be able to build a modern multi-page web application, with a HTML/JS front end, relational database back end, appropriately configured certificates and DNS/CNAME/URL, build basic uptime and application monitoring and do a basic SQL ETL data retrieval process.

That seems like a reasonable bar, and while the specific tools have changed over the years, that stack is basically the same as it's been since the 90s.

Re:Things I wished more developers knew about databases by vsareto on Wednesday April 22, 2020 @02:44PM (#22948833)
> 10, 11 year timeline to what?

To be decent at each of those areas I listed.

Why those 10 specific things?

Those are all areas I've seen "Developers should learn X" calls-to-action.

Sometimes it's outright loathing over developers that don't know specific topics. Other times it's wishful thinking, or maybe a nice-to-have.

If you, as a developer, read all of those posts, they probably all make fair points about the importance of knowing each of those things as they relate to development. You decide there is some merit to learning it.

So you decide to make a to-do list to go learn each of those topics, because you want to listen to the blog posts and be a good developer, and do some real work to prove you know it. That's what's going to take you a while.

Re:Things I wished more developers knew about databases by StandardFuture on Wednesday April 22, 2020 @02:35PM (#22948726)
You seem to be contradicting yourself without realizing it.

> You should be constantly learning everything

This is an in-progress action i.e. the developer is still learning.

> I expect a competent developer to be able to build

This is now considering a "learned" developer.

I am not sure you are making the point you think you are making. The point I think you are trying to make is your expectations of what an experience developer should know. But, you seem to be expressing it as what a new developer should be doing.

While the core discussion of the article might be in regards to what developers do and do not know, I can't help but notice that a developer knowing about something does not necessarily allow them to be productive in that area of their knowledge (especially relative to another co-worker with both the knowledge and the dedicated focus in that area).

Also very important to note: the comment you are addressing seems to be referring to knowledge that is local (particular customer necessity/problems, particular architecture choices for infrastructure, particular product design decisions, particular ways to answer the quirky CEO/CTO in a way that they understand, etc.). There is a lot of locale-based knowledge that a developer must learn at a company/job/project and can even change over time (temporal-locales).

Globally-applicable knowledge like frontend, backend, and general CS concepts are for sure a reasonable expectation of an experienced developer. But, there is a delicate balance a developer must take in the real working world that is subject to not attempting to master every aspect of the product/business (especially if it overlaps with someone else's job/focus) just because you have a high-level understanding of the global concepts. In other words, it is not necessarily efficient for a developer to know every aspect of every language and every database in the company unless that actually buys the company more customers and money.

I would expect any decent manager to understand this very basic principle. Everyone in the company trying to be a master at everyone else's job does not help the company make more money. Being reasonable about expectations in the moment is also a critical asset of working together to make money. :)

Re:Things I wished more developers knew about databases by jatone on Wednesday April 22, 2020 @02:47PM (#22948854)
hes not contradicting himself, the fact is there are a large percentage of developers who just don't care. its not a matter of still learning. they just don't care to learn.
Re:Things I wished more developers knew about databases by StandardFuture on Wednesday April 22, 2020 @02:53PM (#22948924)
To be clear, I was not trying to say his points were void of validity. I was trying to append some clarity to properly differentiating between a developers general knowledge base, a developers temporary knowledge base, and the actual day-to-day doings of the developer. They are not equivalent sets of things even if they intersect.

As a personal anecdote, I know I have learned many things on a project that really helped improve the code, that today I am not able to recall and would have to go back and re-learn with a minimum of a refresher. This happens a lot too. :)

Re:Things I wished more developers knew about databases by thrwn_frthr_awy on Wednesday April 22, 2020 @08:25PM (#22951608)
> I expect a competent developer to be able to build a modern multi-page web application, with a HTML/JS front end, relational database back end, appropriately configured certificates and DNS/CNAME/URL, build basic uptime and application monitoring and do a basic SQL ETL data retrieval process.

What does all that have to do with OP's assertion that expecting application developers to understand that nuances of DB's listed in the article is noble, but unrealistic? A "competent developer" could fulfill your requirements and still not understand the implications of time drift or how to scale horizontally or other deep topics. Applications developers are the hub to many spokes, but expecting them to have deep knowledge across all technologies is unrealistic just as it is to expect a DBA to have a deep understanding of how a certain application framework works.

Re:Things I wished more developers knew about databases by throwaheyy on Wednesday April 22, 2020 @02:39PM (#22948766)
Exactly. Without abstractions, developers would never be able to get anything done. Every task would be dozens of new rabbit holes.
Re:Things I wished more developers knew about databases by dcolkitt on Thursday April 23, 2020 @03:19AM (#22953585)
The problem is that all abstractions are leaky in some way or another. If you're going to use an abstraction, you should at least learn enough about it to know where to put the buckets.
Re:Things I wished more developers knew about databases by harikb on Wednesday April 22, 2020 @10:43AM (#22946073)
Not really. That is exactly the point the article is trying to make. Developers need to care about these things - _enough to know who to go get help from_. That is the minimum. Also 10 years is an exaggeration. 2 years working on a non-trivial backend should expose one to these problems.

From what I have seen, products built without caring about these will usually get rebuilt a year from the original release - either by the same company or by a competitor who killed them.

Re:Things I wished more developers knew about databases by mgkimsal on Wednesday April 22, 2020 @10:54AM (#22946165)
> 2 years working on a non-trivial backend should expose one to these problems.

You can be exposed to them, but without understanding them, and experiencing both good, bad, and really bad 'solutions' to them, and understand the impact (on the business, on the code, on security, on maintainability, etc)... you just can't really get all that in 2 years.

I know plenty of people who've been 'exposed' to certain type of tech problems, and the solutions they decide on are objectively really bad for any metric other than "stop this error from showing up on the screen right now".

I've been doing this for a bit over 25 years, professionally now, and... there's a lot I don't 'get' with current stuff. But I've seen and lived enough projects, in enough different situations, to have a good idea of impact of tech decisions, and to understand how to make tradeoff decisions.

I had someone call me up to 'fix' a problem in a system I'd given then 15 years earlier. It was still running, more or less the same, and... spelunking your own code 15 years later gives you a new perspective on the impact and value of decisions you make. Many of the things people get hung up on (code style, tabs/spaces/etc, particular naming conventions, etc) provide pretty much no value in digging in to old code that no one has touched or thought about in a decade. Correct comments, sample data, repeatable tests hold so much more value, but are harder to get people to commit to following through on.

Re:Things I wished more developers knew about databases by bdamm on Wednesday April 22, 2020 @10:59AM (#22946238)
I wish I could slap anyone who gives a hoot about tabs vs spaces. Fortunately modern languages like go are removing the version control problem that not caring about style and using auto-formatting IDEs produces.
Re:Things I wished more developers knew about databases by lowercased on Wednesday April 22, 2020 @11:09AM (#22946362)
I'm working in a couple of projects where there's a bunch of linter-checker things that prevent any PR merges (another... imo somewhat over-used tool) and... I split my time between Java, PHP, various SQL engines and various JS frameworks (react, extjs, vue, etc) and I'm constantly battling different mental models with various IDEs always showing different colored squiggles and highlights telling me all the ways I'm "wrong" about the code I've just typed.

Can't use double quotes! Always to use double quotes! "Prefer string/template interpolation" in JS Always do string concatenation per another project's standards.

Lots of different frameworks, languages, projects and companies all force different types of ceremony on formatting. "Hey, just let the tooling tell you!" turns in to constant UI distractions telling you that you're 'wrong' degrades (my?) performance. And... the value of most of these formatting things is pretty low, long term. I know that's heresy to some folks, and everyone I talk to sort of agrees, then says "yeah, but I really think standard XYZ is a good thing", but... it's nearly all preference, just like tabs/spaces.

Re:Things I wished more developers knew about databases by yjftsjthsd-h on Wednesday April 22, 2020 @11:55AM (#22946917)
That sounds like bad tooling. Why not have every project use https://editorconfig.org/ and then have your IDE auto-format? It shouldn't be popping up and making you fix it, it should fix it for you.
Re:Things I wished more developers knew about databases by lowercased on Wednesday April 22, 2020 @12:07PM (#22947055)
So there are tools that autoformat as you type?

let longVariableName = "hello " + this.name;

magically becomes

const longVariableName = `hello ${this.name}`;

without visually flagging it, just autocorrects as I type?

And... I can just quickly swap settings for different clients? Because one has eslint block any PRs that don't have "prefer template" rules followed but another client doesn't like that style, and don't want that style in their code because it conflicts with existing style.

Re:Things I wished more developers knew about databases by yjftsjthsd-h on Wednesday April 22, 2020 @12:10PM (#22947096)
I don't think that counts as a formatting issue. Yes, if your clients have hard rules about different coding styles at that level then it's not a technology problem (nor is it likely solvable with technology). I assumed we were talking about formatting issues like tabs-vs-spaces, in which case yes every single project could be different but auto-fixed.
Re:Things I wished more developers knew about databases by lowercased on Wednesday April 22, 2020 @12:49PM (#22947553)
thx. sorry, i sounded a bit snarky before and wasn't meaning to be. it's just easier for people to focus on visual issues vs operational/functionality. and switching between multiple projects/clients/standards illustrates to me how relatively unimportant some of these things are (but of course just imo).
Re:Things I wished more developers knew about databases by infogulch on Wednesday April 22, 2020 @04:26PM (#22949805)
I would encourage you should check out editorconfig more closely. The whole idea is that each project has a file that defines the simple formatting rules for various file types in the project/directory tree and your editor will automatically follow them on a per-project basis. It's surprisingly well supported across editors.
Re:Things I wished more developers knew about databases by wwweston on Wednesday April 22, 2020 @02:59PM (#22948970)
> using auto-formatting IDEs produces.

I strongly suspect a lot of the remainder of the tabs vs spaces reminder is actually about how it either constrains editor / IDE choices OR requires and investment of time to deal with whichever choice someone else made.

"Why do you care, my IDE just handles this" is pretty close to saying "use my IDE," on top of "use my convention."

Re:Things I wished more developers knew about databases by infogulch on Wednesday April 22, 2020 @04:20PM (#22949752)
That's why people are asking to push this problem down to the language level the way Go has done. Go defines both the "correct" format of the code as well as a standard way for any/every editor to enforce it (gofmt etc). That eliminates the double-headed subjectivity of both "use my IDE" AND "use my convention" down to just "use the standard convention defined by the language". And people love it because finally we can stop arguing about the stupid color of paint for the bikeshed and just bloody build the damn thing.
Re:Things I wished more developers knew about databases by PunksATawnyFill on Wednesday April 22, 2020 @05:05PM (#22950171)
The solution isn't to force style on programmers within the language. It's to fix the shitty diff tools that flag whitespace changes as significant.
Re:Things I wished more developers knew about databases by lowercased on Wednesday April 22, 2020 @05:56PM (#22950608)
when people care whether you have

    if(foo) {
or

    if (foo) { 
or

    if (foo) 
    {
you end up in pointless arguments. I don't care about this sort of formatting very much (I have my own default style developed over years), but I do care when other people care about it, often to the exclusion of other factors.

"but we need these tools so that we don't argue about how to format code". Well... you could... just not argue about it in the first place.

Re:Things I wished more developers knew about databases by MaxBarraclough on Thursday April 23, 2020 @07:07AM (#22954689)
Disagree. There's value in consistency, even for the shallow matter of formatting. There's a reason so many large-scale software-development companies care about coding standards.

You're right that it's not a matter of there being one true style. I agree with Kevlin Henney though that there are certainly wrong ways to format code - https://youtu.be/ZsHMHukIlJY?t=1027

Re:Things I wished more developers knew about databases by ivanche on Thursday April 23, 2020 @10:56AM (#22956709)
I think it's not at all pointless to have consistent code style throughout codebase. I agree, though, it's pointless to argue (thus losing time) about "correct" style. It should be enforced on project or company level, no discussions between developers there.
Re:Things I wished more developers knew about databases by watwut on Thursday April 23, 2020 @03:25AM (#22953609)
> You can be exposed to them, but without understanding them, and experiencing both good, bad, and really bad 'solutions' to them, and understand the impact (on the business, on the code, on security, on maintainability, etc)... you just can't really get all that in 2 years.

I don't think this is about becoming expert. This is about learning at least very basics in multiple areas so that you are not completely clueless and know issues exist. When you redefine requirements to "2 years active learning worth of knowledge", you moved goalpost quite far.

> I've been doing this for a bit over 25 years, professionally now, and... there's a lot I don't 'get' with current stuff. But I've seen and lived enough projects, in enough different situations, to have a good idea of impact of tech decisions, and to understand how to make tradeoff decisions.

This is being senior.

Re:Things I wished more developers knew about databases by vsareto on Wednesday April 22, 2020 @11:17AM (#22946453)
>Not really. That is exactly the point the article is trying to make. Developers need to care about these things - _enough to know who to go get help from_.

That isn't it. They aren't telling you to learn about database details for the sole purpose of "DBA handles databases. Go ask the DBA database questions".

It's more than that. They're offloading specific knowledge onto the dev and then making them accountable for it. It's a reaction to common questions and an attempt to answer them all at once by teaching devs answers to common questions. This is a noble goal, but it's problematic in aggregate from multiple perspectives.

The aggregate goal of all of these areas trying to teach developers their own specialties is to make developers the masters of low-hanging fruit.

Re:Things I wished more developers knew about databases by jtdev on Thursday April 23, 2020 @11:02AM (#22956777)
> Database, security, accessibility, performance, infrastructure, tooling and productivity, business concerns, workflow processes (agile), language concerns, new things

Hammers, nails, tape measures, saws, levels, reading blueprints, adhesives... If you want to be a professional, you need to learn the tools of your trade. Being able to work directly with a SQL database is a foundational capability in the software development trade. ORMs are a mental crutch that are overused to the detriment of many systems.

Re:Things I wished more developers knew about databases by horsawlarway on Thursday April 23, 2020 @11:24AM (#22957007)
Speed squares are a mental crutch that are overused to the detriment of many structures...

Look, I actually agree with you about ORMs, but come on, this is a pretty bad take on the problem.

The issue is rarely the tool itself, it's the changing requirements around how it's used.

You can have the best hammer swing in the world, and maybe you sling the best tape ever. But if the building codes are revamped in non-trivial ways every 6 months, you're still going to want someone spending dedicated time understanding that. If your job is to assemble the stairs, you focus on that instead of wasting time asking why this blueprint happens to place the stairs at a slightly different angle, or why some places demand kiln dried timber vs simple construction grade.

Your area of expertise is NOT the building code, it's integrating the stairs into the rest of the structure and actually having people walk up them.

Re:Things I wished more developers knew about databases by vsareto on Thursday April 23, 2020 @03:46PM (#22960321)
>If you want to be a professional, you need to learn the tools of your trade.

The tools of the trade has constantly been expanding. It's not set in stone as you imply.

It's like me telling a carpenter that they now also must become an electrician, window installer, insulation installer, HVAC installer, steelworker, concrete worker, brick layer, and security system installer.

Your new job title is "Fullstack Building Developer" instead of "Carpenter". We can't afford to have 10 specialists that all do a great job, we can only afford 1 person doing a poor/mediocre job in 10 things.

Re:Things I wished more developers knew about databases by arvinsim on Wednesday April 22, 2020 @10:13AM (#22945753)
Perhaps development work has reached complexity where it demands full-time attention?

Perhaps there is a reason why DBA, SRE, Devops and Architects are separate roles?

Re:Things I wished more developers knew about databases by cookiecaper on Wednesday April 22, 2020 @02:06PM (#22948422)
> Perhaps there is a reason why DBA, SRE, Devops and Architects are separate roles?

It's mainly an artifact of the way we've broken up degree tracks, and the boundaries that each group is taught to stay inside, lest any particular group actually ends up culpable for a failure.

Make fun of the "full-stack rockstar ninja" all you want, but the reality is that it is possible to have a functional understanding of all of these areas. It's just a matter of having the confidence and doing the legwork.

To the extent that more of your people have a working knowledge of these domains, you'll not only have a better end product, but a much easier time getting stuff done.

There's room for hyper-specialized expert consultants in each field, of course, but the myth of the myth of the full-stack developer exists primarily for political convenience. Most of this stuff is not any harder than the rest of it, and can be learned by anyone willing to sit down and learn it.

Re:Things I wished more developers knew about databases by msla on Wednesday April 22, 2020 @02:52PM (#22948908)
The phrases "functional understanding" and "working knowledge" are gigantic sucking tarpits.

Before I got my current job, I felt confident in my knowledge of computer networking at the LAN level. I knew I wasn't going into the telecom world and I knew I didn't have the knowledge to debug BGP or ensure a CO was doing everything right, but LANs? Sure. No problem. I knew DHCP, Ethernet, TCP/IP, even stuff like PPP which is more niche now. Heck, I'd even passed a college course on the subject. OK... set up an ICMP server and make it useful. That's LAN, right? Certainly gonna be used on a LAN.

I'm not saying it was hard. I'm saying that I'd never touched ICMP before except for ping and didn't know what the more advanced stuff even was. Did I have a "working knowledge" of basic networking? Did I have a "functional understanding" of how to get a building full of computers to talk to each other?

It's always something. I thought I had a good, working knowledge of networking. Someone who'd actually done networking in a corporate setting would have disagreed, and pointed to a list of things I'd never touched because those things aren't useful in SoHo LANs and aren't theoretical enough for a classroom. Multiply that by a few dozen topic headings and watch people sink under the load.

Re:Things I wished more developers knew about databases by cookiecaper on Wednesday April 22, 2020 @03:26PM (#22949231)
Unless you got yourself into a situation where you were expected to set up a whole office with the same speed and expertise as a full-time network engineer based on some gross misrepresentation of your skillset, I don't see how this story is particularly relevant. Maybe it's a good cautionary tale about presuming that SoHo is the limit of networking?

Technical topics are indeed both very deep and very broad. The level of sophistication and depth is how you choose your specialization, but that doesn't mean you're never allowed to learn anything else. You should learn enough about each field to know the shores when you're standing there, to be able to communicate with the "natives"/specialists, and to know when you're getting out of the shallow end. This expectation should exist for everyone: DBA, application developer, devops, network, whatever. They should all know the territory and be able to work together cohesively to identify the best place to take something down deep.

Depending on the constraints of the project, leaving the shallows means either a) developing more proficiency directly and getting deeper yourself; or b) acknowledging that you need someone with more expertise in that area to take it from there while you go back to handle things in areas you know better.

The thing we must avoid is "well I'm not a network engineer so I don't look at Cisco configs, sorry". That should be replaced with "well I'm not a network engineer, so I have no idea what's happening here, but it's still interesting, can I sit behind you and learn?"

Re:Things I wished more developers knew about databases by msla on Wednesday April 22, 2020 @03:49PM (#22949467)
> Unless you got yourself into a situation where you were expected to set up a whole office with the same speed and expertise as a full-time network engineer based on some gross misrepresentation of your skillset, I don't see how this story is particularly relevant.

Taking a job as one of a business's "computer people" puts you in the path of a whole lot of interesting tasks, even if your main job is programming.

> Maybe it's a good cautionary tale about presuming that SoHo is the limit of networking?

It's certainly that, but I want to expand on this a bit: SoHo is the only stuff most people can play with. For example, I can make programs and package them in Docker containers and run them that way, but I don't know how I'd play with Kubernetes in a realistic fashion. There's whole genres of technology most people can't get realistic access to without some institutional support. It's an effective ceiling on some kinds of knowledge.

As far as learning how to learn, I agree with you. I think a lot of it comes down to vocabulary: Once you know the terms the experts use, you can bootstrap effectively and learn more terms and bootstrap even more effectively. Plus, words have a way of coming back to you at odd intervals, effectively dropping you hints when you see something you vaguely recognize.

Maybe we should all have Word Of The Day calendars.

Re:Things I wished more developers knew about databases by cookiecaper on Wednesday April 22, 2020 @05:12PM (#22950246)
> For example, I can make programs and package them in Docker containers and run them that way, but I don't know how I'd play with Kubernetes in a realistic fashion.

Minikube: https://kubernetes.io/docs/tasks/tools/install-minikube/

Alternately, you'd take advantage of $CLOUD_PROVIDER's initial signup credit and start cloud instance equivalents.

Nowadays most things have good virtual environments floating around (you can even download virtualized mainframes if you want). A little bit of time tinkering with such environments will take you surprisingly far -- especially in fields like network engineering, where even most professionals don't know how to experiment.

Re:Things I wished more developers knew about databases by falcolas on Wednesday April 22, 2020 @11:36AM (#22946688)
A DBA can't fix a developer's code. A good 3/4 of the list linked in TFA are things a DBA or Architect can't affect.

At some point, a developer needs to be responsible for how they use a tool that's been provided for them. Abstractions break.

Re:Things I wished more developers knew about databases by gedy on Wednesday April 22, 2020 @02:46PM (#22948847)
Well likewise, many of the DBAs I've worked with don't try and understand the software needs, and want the world to revolve around what is optimal for them.
Re:Things I wished more developers knew about databases by commandlinefan on Wednesday April 22, 2020 @10:29AM (#22945918)
What, you're not a full-stack rockstar ninja?
Re:Things I wished more developers knew about databases by mgkimsal on Wednesday April 22, 2020 @10:58AM (#22946218)
In either case, someone needs to have moderate expertise in multiple areas of tech. If it's wrapped up in one person, the business needs backups to deal with the bus factor. If it's spread across multiple people, you now need to be selecting for people with moderate tech expertise AND the ability to communicate and work together with other people effectively. And you need someone to manage their process (in some manner - doesn't necessarily mean micromanaging).

So the 'full-stack rockstar', if they have good communication skills, can exist and be valuable, but still isn't the best long term solution for a business of any size.

Re:Things I wished more developers knew about databases by quickthrower2 on Thursday April 23, 2020 @02:18AM (#22953314)
Hell Yes. Break it down further: the front end demands that. You could split further into front end architecture, front end UI performance (DOM etc.), web performance (taking into account network etc.), tooling. Even getting NPM to play nice could become a full time expertise!

The "developer". Can do anything that involves smashing at a keyboard! It's like calling a politician a "talker". Oh well you could do ground control for the next moon launch then, that's just a "talker".

Re:Things I wished more developers knew about databases by davedx on Wednesday April 22, 2020 @11:35AM (#22946665)
As a developer: I do care, but it's hard for me to focus on building software if I also need to think about DBA tasks, DevOps tasks, and so on. These things all take time, patience, and energy. I've just spent most of today running and re-running a CloudFormation template to create a SQL database. Most. Of. A. Day. It's partly because I'm not a DevOps expert and even if I wanted to be one, that would also take time, patience and energy.

There's a reason people have specializations...

Re:Things I wished more developers knew about databases by cookiecaper on Wednesday April 22, 2020 @02:14PM (#22948509)
> It's partly because I'm not a DevOps expert and even if I wanted to be one, that would also take time, patience and energy.

It's this exact divergence that creates the disconnect. If someone doesn't understand and doesn't have to care about the whole experience, they're going to focus on their side and stop when their side is good enough.

On the other hand, if that same someone is going to be regularly developing the application, making changes to the database, and triggering deployments, they will find a way to make the process flow. They'll make it adaptable enough that it's not a day-long pain any time they need to run a migration or spin up a test DB.

The whole toolkit can and should be available because every piece of the stack opens up new possibilities. You want, and at least at some level, can have, people who know this well enough to make good use of it. Nitpicking over "not my specialization" is the antithesis of a smooth engineering process.

Re:Things I wished more developers knew about databases by davedx on Friday April 24, 2020 @08:00AM (#22967037)
> Nitpicking over "not my specialization" is the antithesis of a smooth engineering process.

Counter argument: jack of all trades, master of none.

I'm already a full stack developer. I work on a complex front end application, a GraphQL server, a .net core platform split into multiple microservices, and a MSSQL database. I know my way around these components fairly well now but it's taken a good couple of years to get to this point.

I could also invest a bunch of my time learning all the intricacies of cloudformation templates and how IAM roles work too, sure. But is it the best use of my time as a developer, when I'm much more productive writing code?

You can just end up stretched too thin.

Re:Things I wished more developers knew about databases by hinkley on Wednesday April 22, 2020 @08:27PM (#22951628)
Developers... are punished for caring.

Stubborn people like me keep doing the right thing, but the fact is that there are kudos and recognition for implementing a new feature. There is nothing for keeping servers from crashing, and only a little for reducing server count if you wait for things to get bad first.

The problem with doing things right the first time is nobody appreciates how hard it was. And you will sometimes get questioned about your loyalty and your competence to do the job.

Re:Things I wished more developers knew about databases by jiggawatts on Wednesday April 22, 2020 @08:55PM (#22951784)
This kind of "top-to-bottom" architecture approach reminds me of Apple. They have this notion that you can't provide a good product if you control only the software or only the hardware. You need full control of both, designing in the synergies to produce a really top-notch outcome.

If you read the blogs by large shops like Google, CloudFlare, or Facebook, they do the same thing on the server side. They design the software for the failure modes of the hardware, and conversely the hardware is designed to be low cost in full knowledge that the software can tolerate high failure rates.

Why am I talking about hardware? Because in a typical n-Tier design, "The Database" is just one of the pancake layers between the metal and the Internet. Every layer matters, and every layer interacts with the others. Hearing developers call themselves "full stack" is hilarious to me. They're basically saying that they know 2 out of about 20 layers! Do they know about load balancing persistence? The security tradeoffs made by TLS 1.3 zero-RTT? Cache-control headers? Disk latencies? Automatic scale-out? Virtual machine affinity and anti-affinity rules? Backup and restore? Etc...

The original post about how various databases treat transaction isolation modes is a tiny, tiny fraction of what a typical developer ought to know about the "layers below the web server" but likely doesn't. For example, about 50-70% of bespoke software I've seen in the wild either doesn't use database indexes at all, or uses them ineffectively. About 80% of websites either do not use cache-control headers, or if they do, they'll often end up with front-end errors due to the caching layers violating the consistency of data coming in from the database. Sure, it's a maxim of the industry that cache invalidation is hard, but there are workarounds such as constructing URLs based on the content hash.

All of the fancy transaction isolation modes, to me, is wishful thinking. Get more developers to use indexes first, and then come back and teach them the esoteric stuff after that!

Re:Things I wished more developers knew about databases by jl6 on Wednesday April 22, 2020 @02:57PM (#22948950)
Application developers don’t care about data - they want the database to be a dumb storage unit because they only care about their application functionality.

If you can convince your application developers of the prime importance of data, they will start caring about their database.

Applications come and go but data lives forever.

Re:Things I wished more developers knew about databases by ffdjjjffjj on Wednesday April 22, 2020 @12:41PM (#22947462)
You’d be surprised how much rank and file developers can care about observability and reliability. The key to unlocking this is making them responsible for how their code runs in production by adding them to the on call schedule.
Re:Things I wished more developers knew about databases by vsareto on Wednesday April 22, 2020 @01:29PM (#22948025)
Too bad there isn't an equivalent on-call punishment for management and others around the dev process who also make mistakes and bad decisions.

As far as I can tell, they get paid more for doing less.

Re:Things I wished more developers knew about databases by vajrabum on Wednesday April 22, 2020 @03:19PM (#22949172)
I'd guess that problem might go away if you make their bonuses contingent on a sleep numbers (along with the SLAs) for whoever has to run the application or it's downstreams whether that's a dev or an ops type. Base the number on pagerduty calls or something like so they can't game the number.
Re:Things I wished more developers knew about databases by edraferi on Wednesday April 22, 2020 @04:07PM (#22949641)
That is a wonderful idea. Managers are responsible for the performance of their teams. NOBODY wants to sandbag sleep numbers, so it'd be a decent comp metric.
Re:Things I wished more developers knew about databases by chaostheory on Thursday April 23, 2020 @12:47PM (#22957951)
> Observeability, reliability, scalability - these are all words that are translated into either "someone else's problem" or "unproductive busywork" in their minds.

The root of the problem is the same reason why Google keeps creating completely brand new applications instead of just maintaining and improving their existing ones. Maintenance is not rewarded. Anything existing is not rewarded. Management only focuses on new customers brought in by new features or product asap. Management doesn't care about maintenance; they care about growth, so developers have no real interest in it. Words tend to be empty. If you want to see how maintenance is really valued, look at the company's promotion system.

Re:Things I wished more developers knew about databases by throwaway13337 on Wednesday April 22, 2020 @10:23AM (#22945861)
All of those things are unproductive until after your project is successful which is usually not a guarantee when building the software.

You're not gonna need it.

Re:Things I wished more developers knew about databases by hobs on Wednesday April 22, 2020 @10:29AM (#22945925)
Observeability, reliability, scalability - really easy to bolt on once you are successful.

There's a middle ground, and a DBA turned SRE turned Architect is probably ok with compromises, those are all roles where "it depends" is a bylaw.

Re:Things I wished more developers knew about databases by falcolas on Wednesday April 22, 2020 @11:31AM (#22946620)
So, they really aren't that easy to bolt on, if not considered from the beginning. Monoliths, for example, are a real PITA to make reliable and scalable.

Worse, once your company is successful, there will be an endless list of features to add to your product, meaning nobody has the time to "bolt those features on". How the product begins, is how the product often lives on well past it's expected lifespan.

Re:Things I wished more developers knew about databases by hobs on Wednesday April 22, 2020 @12:37PM (#22947410)
My apologies that the sarcasm was a bit too subtle - no they are not.
Re:Things I wished more developers knew about databases by aeyes on Wednesday April 22, 2020 @12:11PM (#22947112)
How is scalability easy to bolt on? Most companies end up rewriting their entires stack, multiple times.
Re:Things I wished more developers knew about databases by AndrewKemendo on Wednesday April 22, 2020 @02:17PM (#22948539)
Those are absolutely not easy to bolt on.
Re:Things I wished more developers knew about databases by ric2b on Thursday April 23, 2020 @06:28AM (#22954479)
And security, that one's trivial. Just get an audit and fix whatever they manage to find, done!
Re:Things I wished more developers knew about databases by rietta on Wednesday April 22, 2020 @10:42AM (#22946058)
I sometimes feel in the minority. I love databases. When I work in the Ruby on Rails ORM ActiveRecord I can actually visualize the SQL it is generating in my head and also do all sorts of tricks when needed.
Re:Things I wished more developers knew about databases by petepete on Wednesday April 22, 2020 @10:59AM (#22946233)
That's the key. ORMs get a bad name but most of the time you just want to display a list of things, or one thing in more depth or maybe create a new thing.

ORMs unfortunately, have a habit of getting in the way when you want to do something they don't natively support. When they just ignore things the database provides people just end up reinventing the wheel. Rails' implementation of enums is a good example of this.

Re:Things I wished more developers knew about databases by lovegoblin on Wednesday April 22, 2020 @12:40PM (#22947452)
> Rails' implementation of enums is a good example of this.

The advantage of ActiveRecord enums (vs db-native) is that you can change the list of valid values without having to run a whole ALTER TYPE - and all the overhead that would entail in doing without downtime in a production db.

Re:Things I wished more developers knew about databases by petepete on Thursday April 23, 2020 @08:19AM (#22955133)
And the disadvantage is that you need to look at the code to understand the data.

Some things change infrequently enough for DB native to be the better solution.

Re:Things I wished more developers knew about databases by evsasse on Thursday April 23, 2020 @08:42AM (#22955296)
A nice "trick" is to declare your enum column on the database as a string, and your enum in the code as a hash with string values. So you can have self-explained data saved onto the database, and all the niceties Rails gives you from the enum.

  enum object_type: { review: "review", purchase: "purchase", offer: "offer", reward: "reward" }
  # OR
  enum action: TYPES.map { |type| [type.to_sym, type.to_s] }.to_h
Re:Things I wished more developers knew about databases by rietta on Thursday April 23, 2020 @02:09PM (#22958987)
Nice! I've done #1, but #2 is a neat trick.
Re:Things I wished more developers knew about databases by flukus on Wednesday April 22, 2020 @10:03PM (#22952166)
> That's the key. ORMs get a bad name but most of the time you just want to display a list of things, or one thing in more depth or maybe create a new thing.

If you just need to display a list of things then there's nothing much simpler than:

  var result = exec_query("select * from things")
  foreach (var row in result) {
    //output html or something here
  }
The problem is we decided this was bad and had to add more layers, abstractions, translations and complications in between the database and the output, then we needed tools like ORMs to help with that.
Re:Things I wished more developers knew about databases by rietta on Thursday April 23, 2020 @02:12PM (#22959032)
In Ruby on Rails, ActiveRecord has a method called pluck that returns the result set as an array of strings or as an array of array of strings. I've totally done this in areas that need performance. In my experience, if you are concerned with just showing some data you should specify the columns instead of doing a *. ActiveRecord also supports that.

So, for the bulk case. ORM is safer than straight SQL and allows for more easily testable business logic. It does not block doing the things you suggest even if it is not the most common approach.

Re:Things I wished more developers knew about databases by masswerk on Thursday April 23, 2020 @06:57AM (#22954616)
There's truth to this, but there are also reasons for this.

First, it may be fair to say that infrastructure is in an other domain of problem solving than structuring and implementing program logic. (Speed requirements and crunch time tend to lock a person in a single domain.) Second, those developers, who do understand the importance of infrastructure, tend quite naturally to care for those levels which are closer to them and which they actually may understand (like the programming language and how it actually implements things, standard libraries, dedicated libraries, the OS, any middleware). Finally, SQL via networks (and all the flavors this may come in) is hard, there's a reason for why there are specialists.

Speed of development, of course, is orthogonal to concerns about infrastructure. Which may be a major concern. Communication (a constant source of enterprise horror stories) and general awareness (on all levels) may help. These are not problems that can be solved on a single side of the implementation. And then, there's certainly some kind of "developer heroism", which doesn't especially help.

(I guess, I've successfully managed to have messed up with everyone? ;-) )

Re:Things I wished more developers knew about databases by balls187 on Wednesday April 22, 2020 @11:51AM (#22946865)
Probably because they don't need to think about those things.

I started my career as an Embedded Software Engineer, and memory allocation, and clock cycles hand to be managed. Our software ran on systems with limited memory, and had to fit in one 60hz cycle. We supported VAX system that used VAX Floating point, and had to be cognizant of both floating point conversions AND endian byte encoding.

These days, such concepts are basically just trivia answers for interview questions.

I had to think about those things because it was required. System software would crash, and debugging it on an expensive government flight sim 1000 miles away was impossible.

Perhaps for the developers you work with, they don't need to think about those things because they're not required to. After all they have access to a dedicated DBA/SRE/DevOps/Architect guru.

Re:Things I wished more developers knew about databases by hermitdev on Wednesday April 22, 2020 @06:06PM (#22950713)
Not meaning to come off as trite, but I know my response will sound like I am.

But, what you described is exactly why senior devs/engineers make 2x, 3x, 4x a junior.

Seniors make more because they have that extra knowledge you're talking about that can take a decade or more to accumulate. The idiosyncrasies between different DBMS or even languages or even specific versions of languages. That knowledge doesn't come cheap. It literally takes upon years to develop.

This is partially why I think bootcamps are bullshit. I'm sorry, but there is no way to become a competent full-stack developer, especially if you're not targeting web/browser. Give me someone with 3 months of bootcamp C++, I'd be surprised if they can get a nontrivial program to link, let alone compile.

Re:Things I wished more developers knew about databases by ivanhoe on Wednesday April 22, 2020 @09:17PM (#22951874)
For those devs the solution is that DBAs provide stored procedures and predefined views and block them from accessing anything else. Or address it on the app level, have someone knowledgeable create repositories with all the queries, and mandate the rest of team to stick to using only these predefined methods. Either way, people who don't care about infrastructure should have their access to that infrastructure maximally limited and wrapped in safety nets. For both sides to sleep better.
Re:Things I wished more developers knew about databases by pjmlp on Saturday April 25, 2020 @04:14AM (#22976565)
Depends on the organization.

Thankfully in most places I have worked so far you wouldn't go very far being an 'X Developer'.

Everyone has always been required to be an expert in at least two domains, those T and Pi shaped concepts.

So I have very seldom met those kind of devs that only want to spin up an ORM.

Re:Things I wished more developers knew about databases by jordache on Wednesday April 22, 2020 @03:33PM (#22949314)
>Observeability, reliability, scalability - these are all words that are translated into either "someone else's problem" or "unproductive busywork" in their minds.

hence why you work in a team.. everyone provide their domain expertise.. we don't need dba to be dictating FE devs on strategies for immutable state management in the UI.

Re:Things I wished more developers knew about databases by FpUser on Wednesday April 22, 2020 @10:58AM (#22946229)
add to that "do not want to declare/worry about types", "cant be bothered about RAM usage/cache coherency/etc", "concurrency" etc. etc. All of those are "premature optimizations".
Re:Things I wished more developers knew about databases by yjftsjthsd-h on Wednesday April 22, 2020 @11:58AM (#22946951)
> All of those are "premature optimizations".

And they are, until they aren't. And I really do mean that in both directions: Much of the time, the simplest, dumbest, most naive solution is 100% fine for realistic load for the forseeable future. And then some of the time it breaks terribly and you do need to spend effort optimizing it, whatever that entails.

Re:Things I wished more developers knew about databases by FpUser on Wednesday April 22, 2020 @01:13PM (#22947837)
To be clear I am not advocating optimizing everything down to the last bit here. Problem here is when THERE IS a need many would not even have a slightest clue where to begin as all those "low level" concepts were relegated into oblivion.
Re:Things I wished more developers knew about databases by hinkley on Wednesday April 22, 2020 @11:27PM (#22952550)
The question rarely asked is, "Can your team go from zero to sixty on this sort of thing when this happens?"

Technically optimizing as you go might be a 'waste' of time, until it isn't, because your team can handle a serious performance problem in days instead of months (or IME, never).

Re:Things I wished more developers knew about databases by testnew2 on Wednesday April 22, 2020 @03:46PM (#22949442)
I don’t care and that’s why I use raw sql lol. I don’t want to learn some orm bs