I agree with the author. I've also quit my job as a software dev. early this year, after about 10 years in the industry in various companies (so I can say it's not just a local issue) Having some savings, I'm looking to reorient into something else, also technical, but more hands on - literally. Also, as an added note I think that a large part of software written today makes the world a worse place to live in (I'm thinking social platforms and cloud computing - one taking away the realness and empathy in interacting with each others and the other taking away the ownership of anything). Also, don't get me started on ads system and the crap list of apps/games/software in general that gets pushed down people's throats due to big advetising budgets. If the people working in the industry as software devs doing the above would instead use their creativity and skills in other fields of work (ie. actual science and engineering) we would have a better world. I truly loathe the software development industry in all aspects, as it unfolds today. Not the software dev. activity itself, mind you. But the current goals, players (corporations) , environments, values and trends of the industry as a whole!
I initially considered this as well (still considering), but I am a bit reluctant - a decent mining rig can be quite expensive - and I keep hearing or stumbling myself upon both pros and cons.
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)
(OP) I woke up this morning and I was pleasantly surprised at the large number of answers to my question. I saw some pretty insightful ideas. Thank you!
Also, it would be nice to hear about hurdles that non-software devs are facing.
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.
(OP) I agree with the point you are making. Smaller tools that can be chained together to obtain new functionality is better (in my opinion also) than "bulky" feature-rich tools (which can never be truly feature complete).
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".
(OP) I've had a short look at Visidata. Maybe it works or not on my described scenario (I should read the docs more carefully and make a test to be sure), but it's definitely in the direction I had in mind (a simple yet customizable enough tool for the job).