272 karma · joined June 3, 2017
https://github.com/vinayms2017/JEEP2018
As for the mechanism you talk about, that's basically declarative style and a lot of platforms (for the lack of better word) do this, mainly in business logic and scientific applications. The most famous example is Excel. However, this style works like a charm only when the set of possible actions is predetermined, and is not conducive to creating new actions, which is why every single platform has some kind of scripting. And scripting is editing text. So there you go.
That's a seriously weak premise. A bicycle is more than a metal rod with wheels; it needs a good steering mechanism and driving mechanism, not to mention ergonomic seating mechanism. Humans have certainly had a lot of things in their blind spot which makes us wonder why it took so long, but bicycle isn't one of them. Eraser-butt-pencil, may be. Bicycle, certainly not.
Also, the sheer number of crazy models that happened in its evolution is a testament to the fact that a bicycle is anything but intuitive. Remember, it was an age where mechanical devices was a rage. It was sort of like the AI-ML of that era. There was a lot of activity by people of varying levels of expertise - from tinkerers to people who knew what they were doing to people who thought they knew what they were doing. Despite this it took that long.
So its absurd to start off with the said premise.
Points like material and manufacturing process are red herring IMO. This argument is backwards. What needed to be made was a prototype. The things mentioned would follow naturally. No one had to invent a "professional grade" machine at the word go. An example from software: HLL were not invented first and then OS were written in it, but OS were written first, and in the process people realized HLL would be more productive, and OS were rewritten in them.
The conclusion about cultural and economic factors also seems unconvincing. The only plausible reason could be the clout of horse carriage mafia or something like that which influenced the powers that be and stifled rival technologies.
In the exuberance of ecological conservation and all that, we must not overlook and override what nature would have done. For instance, one shouldn't plant a water sucking tree where it wouldn't naturally occur, and damage the balance.
At work? Yes. How did I handle it? I quit.
The good ones do.
> This is why most of the times, you just start using a totally new language, that way you buy into a totally new set of programmers, practices and community.
What happens when that new language reaches a stage where it needs new features?
I think new languages are unnecessary unless they comprehensively solve the problems of the existing ones, and don't create new ones of their own. I have always felt that creating brand new languages is more of a personal taste driven rebellion against the language one uses. When they find that its too cumbersome for their taste, or the clique in committee refuses reforms etc, those who can will go ahead and create, some evangelize successfully (I feel this is the case because I have created a few half baked languages over the years to challenge C++ lol).
As for Lisp and ML, being Indian, I had no access to these, even in CS section of the library, as you might understand. Many years ago I tried learning Scheme by/after watching the lecture series. I even have the book SICP. It is fun and elegant, refreshingly so, no doubt, but only till a point. I found once we venture into necessity for conditionals & data mutation, its unbearably cumbersome - I can deal with spaghetti C code but not this - may be I am conditioned by exclusive C++ usage. I tend to think those who stick to Scheme like languages and solve real world problems do it for bravado and cry when no one is looking lol.
As for design pattern, I don't see it being exclusive to OO. Its just a bunch of ideas to build software. One would have it for assembler as well if it was used for mass production (I wonder how it was in early days when it was exclusively assembler). Its certainly poorly used and abused, agreed.
This is like describing a middle aged man based on what he did in middle school. Things evolve. C++ has. Almost to a fault where one can legitimately call it a mutation.
Generics/templates and indirection are not OOP. Procedural style encourages them as well. You can see that in C++ itself.
Now, don't get me wrong, I am not saying this is useless. I am just saying that if one chooses to give a 30k feet perspective, they had better stay there and not bounce between 40K and 10K.
If that is strange you'd find it stranger to know that I am Indian and sleeping on floor is both tradition and sometimes compulsion due to poverty (though I was never poor). I was fine with it all these years and don't know what changed recently.
The distinguishing feature of the latter is that they are polymaths in the making, a journeyman polymath if you will. They have sufficient depth in multiple fields and produce works that demand attention, whatever that might be. The former, on the other hand, is just a bits and pieces guy living in delusion who doesn't know anything beyond elementary knowledge in his "fields of expertise".
To use a cricketing analogy, since 'tis the season, people like Richards, Tendulkar and Kallis are true alrounders (generalists) whereas people like Robin Singh, Madan Lal and Andy Bichel are just bits and pieces guys who are useful on that odd day when specialists and generalists are having a bad day.
That said, I think its worth having this for the humbling experience it provides. This experience is very much needed for every engineer, and specifically software engineers, because after a while of reapplying same old tropes to churn out solutions to problems, there creeps a feeling that we are at the top of our game, and "experts", when in reality most of us are only "experts" in a specific insipid framework or technology which are as permanent as the latest fashion trends. This series of books makes us feel worthless and keenly introspect. It makes us see that there is a vast array of knowledge that we severely lack. It builds personality and keeps us grounded. It separates true musicians from college band guitarists who shred the neck to cheering crowds.
I have Combinatorial Algorithms Part 1 Volume 4A and it makes me cry every time I peruse it.
This would make the rich influence policy in yet another way, albeit a bit more openly than usual.
So I created an experimental framework for myself, called JEEP. Its an OOP framework that enhances JavaScript by bringing features from C++. I shared with the community here by posting a Show but unfortunately it didn't succeed in capturing people's interest. I have more to say on this but defer it to later when the time is appropriate. I know and hope once I release a remarkable product created with JEEP, it will automatically garner attention. It was anyway intended to serve only me, which it is doing, and anything greater was always a bonus, so I am cool with whatever happens.
However, times have changed. Since late 1990s, the industry has become a lot more aggressive. While the CRUD shops exist, there are more and more companies who produce products that need engineering from ground up. Some of these are truly innovative but many simply reinvent solutions. The kind of funding these new age companies with NIH syndrome get allows them to afford quite a bit of reinventing of the wheel, a wheel that suits their purpose specifically. In this scenario, one needs to know fundamentals of CS, so having interviews of this nature is justified. The candidate must be aware of the sort of company they have applied to and know what to expect. There is no point ranting after they fail.
That said, I do have my objections to these sort of interviews. I am in my mid thirties and what I do is 50-50 in terms of over all architecture and low level details. I am currently looking for a change and every time I see ds-algo mentioned in the job description I feel disappointed.
Firstly, the cargo cult interviewing is quite enraging. I mean, just because a mega corp with NIH syndrome does tough algo-ds interviews because they arguably need it, the CRUD shops following suite is ridiculous. They are glue job companies with CRUD jobs that need glue job engineers whose need to know CS fundamentals will be limited to reading the label on the libraries they use, if they advertise the ds and algo they use in their implementation.
Secondly, even if its a NIH mega corp, I dislike how the interviews automatically filter out experienced good engineers. The sort of questions asked can only be answered by three kinds of people - recent graduates, those who have written ds-algo libraries at their job before, or those who study them just for the interview. I feel the third kind is a sham as its worse form of rote learning without applied knowledge. People like me who possess a lot of knowledge through real world experience on a lot of things and can build a lot of things from scratch, basically generalists, but can't write code to balance a binary tree on whiteboard in 5 minutes feel almost discriminated. Why can't where be a middle ground where we discuss the solution strictly qualitatively without having to answer it as if it were a college exam? I think this is how it ought to be for mid career engineers.
I have had my share of both kind of interviews that has left me extremely disappointed. I have realized that people like me are best suited to work at medium sized product companies whose name not many have heard of. I used to work at one such and had tremendous success, and I am exclusively looking for such now.
I never had depression in the medical sense, only a few days of feeling that I am worthless after failures. Oddly, I like this feeling. It keeps me grounded.
I ask this because I had something relatable but wrt education. For three years, aged 16 to 18, I was deep into science and maths as I wanted to get into mechanical engineering at a good college, and these subjects were the key. I did quite well in the entrance exam and achieved what I aspired for. I was excited and did really well the first semester. Then, per chance, I visited the city library, for the first time, and saw a big hall full of books of all kinds on liberal arts topics. Having been immersed in STEM topics for so long, I was instantly taken in by its charm. I had never seen anything like that before and I indulged in it full time. I lost all interest in my engineering for the next few years, and my grades took a nose dive, but I did come to my senses and recover eventually. After I joined the software industry I had occasional flings of this kind with other topics but my past experience made me more prudent in dealing with them. I take that as a great life lesson.