Live data from Hacker News

Software Developers Should Have Sysadmin Experience

blog.professorbeekums.com

291–300 of 424 posts

Re: Software Developers Should Have Sysadmin Experience

#291
post #282

Earlier quoted context omitted.

I agree with OP and would amend his statement to "15 years ago, when a project would kick-off, [sysadmins & architects would] be invited ..." From an architectural point of view, microservices take the reductionist approach to system design to an absurd limit, and per my professional experience (fwiw & ymmv) are due to the general architectural illiteracy of the rank and file practitioners in this field.

Right, microservices isn't "architecture". It is - whether they know it or not - an admission that "we can't do architecture so we'll chuck it over the fence and let the ops people worry about how it all hangs together".

> microservices isn't "architecture".

Yes the 'no-architecture architecture'. It's very Zen. /s

> how it all hangs together

In case you are interested in rescuing :) young but promising talent in the field, next time you find yourself involved in a discussion about microservices "architecture", point out the realization of a single-node application per this approach, where every function is a process, and the call stack requires IPC, and the 'linker' is considered obsolete and outdated technology.

Re: Software Developers Should Have Sysadmin Experience

#292

Earlier quoted context omitted.

this is the core of the problem between Devs and sysadmins. Sysadmins come from a mindset of a polished working system which never needs to change. They deliver stability and reliability to the business. Devs come from a mindset to actively create change. This is to add new features and deliver new value and product to the business. As a Dev I do have to say that many Devs don't have enough experience in operations t…

> To respond directly to your question: because there are new things available in new libraries that allow us to develop new features! If it were only that, we would have an easy time. The new things you need to develop new features are far and far between.

The new things you need to develop new features are far and far between

99% of web software written these days could fulfil identical use cases on an IBM 3270 from 40 years ago. You enter something into a form and it gets stored in a database. You enter something into a field and it generates a report. That's all Amazon, Facebook, Google, any e-commerce site are.

Sure it might be nice to use a new version of that new JS framework that all the twitterati are going crazy about, but does it deliver value to the business that justifies the risk and investment?

Re: Software Developers Should Have Sysadmin Experience

#293

As a grumpy evil sysadmin, I think the good Professor misses where the real disconnect is, at least nowadays: stack management. Why do things like Docker exist? Because developers got tired of sysadmins saying "sorry, you can't upgrade Ruby in the middle of this project". Why does virtualenv exist? A similar reason. Containerized ecosystems (which is to say basically all of them now) are really a sign of those of us…

The problem is that sysadmins don't know everything.

> in the year 2015, pip went from version 1.5.6 to 8.1.1

The only releases in 2015 were 6.x and 7.x.

There were 8 documented backwards incompatibilities, 4 deprecated the previous year, and 3 documenting a couple bugs that were fixed several days after the 7.0.0 release.

These are the sorts of thing an aware Python developer will know.

Re: Software Developers Should Have Sysadmin Experience

#294
post #282

Earlier quoted context omitted.

Right, microservices isn't "architecture". It is - whether they know it or not - an admission that "we can't do architecture so we'll chuck it over the fence and let the ops people worry about how it all hangs together".

> microservices isn't "architecture". Yes the 'no-architecture architecture'. It's very Zen. /s > how it all hangs together In case you are interested in rescuing :) young but promising talent in the field, next time you find yourself involved in a discussion about microservices "architecture", point out the realization of a single-node application per this approach, where every function is a process, and the call st…

I once worked on an application that - no joke - comprised 5000 VMs each of which was running one "service" in a dedicated JBoss. It was laughably bad.

Re: Software Developers Should Have Sysadmin Experience

#295
post #60

I think many professions should have sysadmin knowledge. In my work (biology) there is a lot of unnecessary clicking, not only in Excel (where Python/R would be much more efficient) but also in web interfaces to transfer data daily. The latter is often completely automatable using cron and rsync over ssh. Many repetitive actions are a shell script or command line pipe away. But people don't know.

> automatable using cron and rsync over ssh ... shell script or command line pipe ...

Where I come from, that's called "knowing how to use a computer".

Or at least it was, until Windows et al arrived.

(Interesting how the user-interface technology advance called the GUI, decreases the efficiency of the human/computer interaction.)

Except ... for those who still regularly use a Unix-like OS, that knowledge still is quite basic and, thus, surprisingly difficult to trumpet on a resume.

Re: Software Developers Should Have Sysadmin Experience

#296

Earlier quoted context omitted.

Another perspective: Why don't you want your software to be compatible with the system that your sysadmin provides? (Assuming that system is not completely obsolete). Minimize your dependencies. It's incidentally also what leads to clean code bases.

> Minimize your dependencies. It's incidentally also what leads to clean code bases. You also crush velocity. Smart use of libraries lets you ship code 10x faster. Two identical businesses.. one writes all their own code, one is smart about using libraries. Which one makes it to IPO first, and which goes bankrupt?

Are you arguing that you can keep velocity while building up technical debt?

The company "smartly" using libraries might stuck maintaining a monster of dependencies that only ever was meant to be an MVP. It will require 10x more engineers and while they might move fast at the beginning, they will only slow down over time.

The company minimizing their dependencies and paying attention to their stack will be able to add complexity over time without breaking a sweat. Their costs will be 10th the cost, and they will be able to run profitably.

I am not anti-library or anything, but e.g. adding sci-py to your python project just because you need a gaussian function in one place in your code is just lazy.

Managing dependencies wisely is one of the hardest thing in software development. It's right after cache invalidation and naming things ;)

Re: Software Developers Should Have Sysadmin Experience

#297
UC Berkeley's approach to teaching computer science I believe is the correct approach.

1. In CS150 one has to build a hardware computer. 2. In another class one has to build an OS. 3. In another class one has to build a Database. 4. In another class one has to build a Network.

Education is key. Understanding the TLB inside the CPU gives one an appreciation for context switching between the only 2 users the CPU has hardwired into it: kernel and user.

Being a sysadmin is insufficient experience as education. Every developer should know how to build a hardware computer from the ground up.

Computer science at Berkeley doesn't have a "Java" class. The language one programs in changes depending on the Professor and topic. That way one doesn't get too attached to a language.

Most developers do not understand the hardware implementation of a thread, or now-a-days a docker. As a result both get used wildly incorrectly.

Threads are useful blocking on IO to keep the CPU from starving. However, switching threads simply to swap CPU bound jobs is inefficient. Just adding a thread doesn't guarantee equal service to users just like adding processes does not.

Developers are using dockers today who have no clue why they are doing so...it's just that everyone is doing it and they do not want to appear stupid.

Experience as a sysadmin is no substitution for education.

Re: Software Developers Should Have Sysadmin Experience

#299

Earlier quoted context omitted.

If it is as you say, then why upgrade ever? How would we even discover bugs in software until it is used? To have progress we need to change things. When we change things, we may break things, regardless of tests. To quote deijkstra: "testing can be a very effective way of showing the presence of bugs, but it is hopelessly inadequate to show their absence". From 'the humble programmer'. Production is the only way to…

All I disagree with is testing bleeding edge third party software by heavily depending on it in your production systems. Software needs to be tested. But your view that the whole world needs to jump on it at once is very black-and-white.

That is not my view. If you're relying on prerelease software, you're definitely playing with fire.

Re: Software Developers Should Have Sysadmin Experience

#300

Earlier quoted context omitted.

That's terrible. If I'm a Python dev, why should a sysadmin who doesn't even know Python tell me what version of a library I will use? I have regression tests to catch if an upgrade breaks anyyhing. What does a sysadmin have to approve or deny an upgrade? A little beard stroking and changelog reading? I think the movement towards containers is like you said, to keep sysadmins off the code. Sysadmins add value in sett…

> why should a sysadmin who doesn't even know Python Because a Python sysadmin has been through all the transitions of packaging systems, all the nasty corners of "backwards compatible" changes, and knows how underlying changes to the operating system will affect your code, what the storage behaves like under load, and why one tech is not "better" than another. If you really hired an admin (cough, "reliability engine…

I think a lot of this debate argues for the sysadmin role being part of the dev team. The only real way to get both constraints (production stability and update to date fixes/features) is to have fast feedback between the interest holders of two sides.

In the python-specific case -- the requirements.in / .txt files for the virtualenv should be part of the software VCS, but the sysadmin should be able to edit & pin things just like the devs, so that they can bring their expertise to the container, rather than having to fight it.

---

Mind you, my opinion might not scale - I'm part of a small enough team that I'm holding both those roles, but I try make sure to spent time wearing both "hats", so that one role doesn't get more man-hours clocked.

Post reply on HN