2,507 karma · joined August 17, 2010
https://tad.me.uk/
function big() {
let x,y,z;
{
// First bit
let localToThisSection = 42;
...
}
{
// Second bit
...
}
} function doFirstBit() {}
function doSecondBit() {}
function big() {
let x,y,z;
[x,y] = doFirstBit();
[x,z] = doSecondBit(x, y);
}
to: function big() {
let x,y,z;
// First bit...
...
// Second bit...
...
}
To me, it's no harder to find the portion of interest in the latter when making a local change, and substantially easier to understand the whole thing (because you can sit down, maybe with a printout if that's your thing, and read through it linearly without having to jump back and forth to the subfunctions). And passing data between the portions can quickly end up nastier than my contrived example above, at which point people start doing things like creating a class just to hold what used to be the function's stack-frame.Not saying very long functions are something to celebrate. But if they're organised sensibly they're not a huge problem, and to be honest probably bother me less than functions which aren't abstracting anything terribly interesting and only get called once.
Stacks: I suspect we'll see more emphasis on making new-built software that can be sold to management as "cloud aware". Which in practice, probably translates to more Kubernetes. But again, mostly stuff we're seeing today.
Hardware: amd64 still dominant for servers and desktops. ARM for mobile, gradually making some inroads into the server space (but if it takes over completely, that's still >5 years off). Maybe some ARM desktops. Hopefully POWER will be hanging in there, and maybe some RISC-V hardware -- but only in niches. Number of cores will continue to increase, but addressable RAM and memory bandwidth will be even bigger limiting factors than they are today.
What are they developing?: Line-of-business CRUD apps.
Edit: Re-reading, this comes across as quite negative. I do think we'll see a whole lot of innovation in these areas -- just that it'll take multiple years to filter through to what the average developer is working on.
I also think there are some break-points where adding libraries can change the nature of a project significantly. Think of old-school Javascript, loaded directly with a few script tags. In general "new style" JS (with many small libraries, a bundler, and probably some other tooling) brings some noticeable advantages (at least for larger applications), but you definitely lose something relative to the "no tooling, just hit reload" edit-test cycle.
It definitely wasn't Digg. According to Wikipedia, that wasn't even founded until 2004.
2. In house designed and built custom hardware platform
3. Our entire UI framework was highly customized by us, for our specific needs
It turns out, when you control all the variables, making estimations becomes possible. It isn't easy, but it is possible!
That's an interesting set of observations there. I've been wondering for a while whether we -- as a field -- have been systematically underestimating the cost of using libraries. To my eye, the anecdata definitely seem to be on the side of projects going more smoothly when the dependencies are few and well understood.
Does anyone know of anyone doing research into this kind of thing?
If it's long term valuable, i.e. "I considered obvious, attractive alternative algorithm X but it failed horribly because of Y", I'd prefer that to go in a comment in the code instead. Far more likely to still be noticed in three years time, after the code's been run through two different auto-formatters and otherwise mangled around.
On-orbit servicing of friendly recon sats was considered pretty seriously, though: http://www.thespacereview.com/article/3390/1
This could actually be the test in itself. There seems to be a substantial contigent who believe that this is what a collaborative programming environment looks like, and they might actively want to select against people with a more shut-the-door-and-work-through-the-problem mindset. I'd argue that a pair programming exercise is probably better than whiteboarding-with-interruptions, but setting that up well is more work for the interviewer.
Edit: completely messed up the quoting in original!
"The reasonable man adapts himself to the world: the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man." -- George Bernard Shaw.
(I'm not 100% sure how this is enforced. It rather seems as though getting a cheap flat north of the border and declaring that as your normal residence for the duration of studies could be worthwhile if you can afford it...)
I do agree that the invasion is a bit of an outlier, although even in that case there are questions of scale.
I've always loved that quote, but my reading is: on top of the everyday things, it's worth picking up several skills which require some deep study. No, you won't get them all, but having several -- and being open to learning something new if a good opportunity arises -- is valuable.
This has been considered before, e.g. https://en.wikipedia.org/wiki/Project_Chariot
See, for example:
And yes, more than the pencil-and-paper aspect of this, what I find striking is that it's one person working quietly and alone, with a manager who was prepared to take "Still designing" as an answer. There seems to be very little room for that in a lot of modern workplaces, and I find that rather sad.
I'm not sure https://motherfuckingwebsite.com/ is the analogy I'd make though. It uses a non-trivial amount of CSS (about 5k) -- but not so much that it'll slow most people's downloads, and not a big "framework". It's got some somewhat distinctive branding -- you'll know instantly if you navigate away from the site -- but the elements don't take up too much of the screen. It actually has some responsive elements (try making your browser window narrow).
There's a few lines of JS to make the drop down menus work. But again, nothing huge.
It doesn't seem to be consciously avoiding anything. It looks to me like the work of someone who's started from a clean sheet and is trying to build a site that works for them rather than ticking off a list of best practices. And yes, I like the results.
Personally, I’d argue that doing one or two more substantive projects might be more satisfying in the long run, though. Depending on your tastes, something along the lines of Niklaus Wirth’s “compiler construction” book might provide some inspiration.
In locations where developers are very thin on the ground (i.e. not Massachusetts...), things might be harder. There's always the possibility of hiring remote.