• 9 Posts
  • 265 Comments
Joined 2 years ago
cake
Cake day: June 12th, 2023

help-circle


  • In the very first real programmer job that had, back in 1986, the IT department estimated that they had a 51 man-year backlog of development work. That would have translated to two or three calendar years of work. Probably more, considering how crappy estimates always are, and the always under-estimate.

    It turns out that this is pretty much the industry standard. Virtually ever place I worked for the next 35 years had a similar size of backlog. And that backlog isn’t standing still, either. All you can hope is that 3 more years worth of new requests don’t come in during the two years it takes to complete what you already have.

    Some of those new things are going to have a higher priority than stuff that’s already in the backlog. The reality is that some item that’s down at the low end of the list is going to get bumped down, again and again, and never get done. Or it’s going to someday become an urgent priority that can’t wait any more.

    So the pressure is always intense for the developers to go faster, faster, faster. And the business doesn’t understand or care about good engineering practices, even though the shit hits the fan when a critical bug gets released to production. And God help you if that backlog of 51 man-years has grown to 70 after a year because of the technical debt you introduced trying to go faster.

    The fight to rein in scope is constant. At that first job, the head of the department told us, “to build Volkswagens, not Cadillacs”. It was laughable, because they were struggling to keep up while building Skodas.

    You can’t just add more programmers because the productive backbone of the development team is a group of programmers that have all been there for at least 5 years and they are domain experts. It’s going take at least 5 years to bring new hires up to that level of knowledge.

    And that’s all three sides of the project triangle: scope/quality, resources and time. You can’t meaningfully add resources, scope’s already stripped down to bare bones and the time is too long.

    And the truth is that every one of those projects in that 51 man-years backlog is important, even critical, to some aspect of the business. But the development process is unfathomable to muggles, so can’t you just go faster? Can’t you wring a bit more productivity out of those domain experts?









  • I spent 30 years working with derivatives of the Pick Operating System and its integrated DBMS. Notably Universe and Ultimate. Back in the day, it was very, very difficult to even explain how they worked to others because the idea of key/value wasn’t commonly understood, at least as it is today.

    I was surprised at how similar MongoDB is to Pick in many many respects. Basically, key/value with variant record structures. MongoDB uses something very close to JSON, while Pick uses variable length delimited records. In either case, access to a particular record in near instantaneous give the record key, regardless of how large the file is. Back in the 1980’s and earlier, this was a huge advantage over most of the RDBMS systems available, as storage was much slower than today. We could implement a system that would otherwise take a huge IBM mainframe, on hardware that cost 1/10 the price.

    From a programming perspective, everything revolves around acquiring and managing keys. Even index files, if you had them (and in the early days we didn’t so we maintained our own cross-reference files) were just files keyed on some value from inside records from the main data file. Each record in an index file was just a list of record keys to the main data file.

    Yes, you can (and we did) nest data that would be multiple tables in an SQL database into a single record. This was something called “Associated Multivalues”. Alternatively, you could store a list of keys to a second file in a single field in the first file. We did both.

    One thing that became very time/disk/cpu expensive was traversing an entire file. 99% of the time we were able to architect our systems so that this never happened in day to day processing.

    A lot of stuff we did would horrify programmers used to SQL, but it was just a very different paradigm. Back in a time when storage and computing power were limited and expensive, the systems we built stored otherwise unthinkable amounts of data and accessed it with lightening speed on cheap hardware.

    To this day, the SQL concepts of joins and normalization just seems like a huge waste of space and power to me.





  • That’s a little confused. From what I remember, it’s the server that matters, not the domain when being blocked. If you self-host this is a problem, but not if you use your own domain on a commercial service.

    The “MX records and such” are all a function of domain management. You’ll have to do this whether or not you self-host.



  • HamsterRagetoProgrammer Humor@programming.devThe Right Skills
    link
    fedilink
    arrow-up
    14
    arrow-down
    3
    ·
    2 months ago

    As an IT/Development manager, I only had one role that I hired for where the skills for getting the job matched the skills for doing the job: Business Analyst. Not job entailed presenting information clearly, both written and verbally. So I expected the resume and cover letter to be organized and clear.

    Programmers, on the other hand, I wouldn’t expect the same level of polish. But I would expect a complete absence of spelling errors and typos. Because in programming these things count – a lot.

    A lot of the people that applied, and that I hired, did not have English as a first language. So I gave a lot of latitude with regard to word selection and grammar. But not spelling. Use a goofy word or two, but spell them right.

    I figured that most people were highly motivated when writing a resume – about an motivated on you can get. And if not level of motivation cannot get you to take care, then you’ll just be a bug creation machine if I let you touch my codebase.