20 karma · joined January 11, 2014
Some of the cons: - Bitcoin mining is now feasible only? using ASIC miners. They cost a lost and I can't find a reliable source to buy them (i.e warranty for hardware breaking down, etc.). - Bitcoin prices are very volatile, so if they go down (even for a limited period - e.g. up to a few years) I would be stuck with (temporarily) unprofitable equipment. - Ethereum (for example) is minable using GPU-s (less risky investment from my point of view) but I hear in the near future it will transition to proof of stake and not be minable anymore (correct me if i'm wrong)
It may be a skewed opinion of mine, but I think that more value can be added, more easily, by software into other domains, than what can be added by software in software development itself.
Software "divorced from reality" is pretty useless. It becomes useful when: it helps drive a real process (e.g. factories, cars), it helps better understand a phenomenon (e.g. data analysis), provides entertainment or education (e.g. games, animations), gives answers or predictions (AI, machine learning), facilitates communication (messaging, video calls), etc.. A god-like software running in a box (e.g. general purpose artificial intelligence), but not plugged into anything (e.g. at least a monitor, speaker, etc.) will literally offer nothing (even if it could, should it be connected)
Say you make an application to facilitate selling of tickets to a business. Then you may go optimizing the database/website to handle more users, etc. Then you may go optimizing the build-tools, the programming language, etc. The more you continue down this chain (which goes more abstract) the less you directly and meaningfully impact the initial requirement. I'm not saying it's a bad thing! I'm saying:
-> The more "meta" you go, the more broader impact you have on a whole area, rather then just the initial requirement. This is the good part! But also the harder and more complex it gets! Exponentially! This is the "bad" part.
I guess the ultimate point would be to reach general purpose AI. When we get there, the whole purpose of this discussion thread is useless anyway.
But until we get there, I personally think we should focus more (or at least just as much) on fixing the actual problems (in a clean way, with few dependencies), rather then going to deep on that "meta" chain I mentioned. There are good outcomes of course, but one bad outcome of going too "meta" is the increasing bloat and complexity we seem to be experiencing in all modern software.
"Inherent Complexity: The Ways the Problem You’re Solving is Hard" "Incidental Complexity: When Programmers Make Their Lives Worse" https://pressupinc.com/blog/2014/05/root-causes-software-com...
But! If you look at it from the perspective of someone who is a non-software developer (e.g. scientist, accountant, graphic designer, etc.) who just wants to do a specific task, it makes more sense to have dedicated tools for the job. Even if those tools, under the hood, are a combination of smaller tools, the end user should not be concerned with anything other than his/her field of expertise.
With my question I was trying to get some insight into people's (who are not necessarily software devs) workflows and how we can improve those workflows (if we can).
The question applies to software development as well: someone who is specialized, say in compilers (broadly speaking), for example, can help the workflow of many who don't have the time / resources to do it themselves. It comes to mind a feature that someone posted above: "List what packages have functions that can get called when I call function X".