Ladies and gentlemen, in the spirit of Object-Oriented Programming I present to you Internet-Oriented Software Development (IOSD): a style of software development in which the official way to program is by trying something, giving up, asking strangers on the internet, and hoping for the best.
You may wonder: how is this new, seeing as that's what we are all already doing? The keyword here is "official". If you want to program with (say) Keras during a long trip with unreliable internet, you could do it with an offline version of the API reference alone. Sure, getting the offline docs will take a bit of work, but at least there's an official repository of knowledge that you can always go to. Of course you can search on the wider internet for help too, but you don't have to.
IOSD is different: when you release IOSD software you publish an okay guide to your software, and that's it. There is no need for you to keep it up to date nor for it to be useful, because your documentation is Internet-Oriented: if someone has a problem, they can ask the internet, IRC channels, their co-workers, anyone but you.
Rust came to mind because, as I complained before, that's how their intended development cycle apparently works: if you don't know how to do something, you are encouraged to either search the forums or ask the developers. In the later case, "we don't know, we won't do it, and we won't tell you who is doing it right" is a possible response. TensorFlow used to be like that too (ask me about the Seq2Seq tutorial!), but they reversed course and their current official suggestion is that you use Keras (no, seriously).
But Unity is an even better example. For starters, the official docs are essentially useless because they tell you what something does but neither why nor what to use it for. Can you guess in which situations is a Sprite renderer required, and what do you need it for? Because I can't. One might argue that Unity Learn is where you should look for answers, in which case one would be wrong. Taking the first course in the "Game development" section, for instance, gets you this tutorial which is only valid for an outdated version of Unity.
No, the real source of answers are YouTube tutorials. Sure, sometimes they refer to windows that aren't there anymore and/or changed their name, but you can always add a "2019.4" to your search and try again.
I am not entirely a beginner with Unity, as I worked with it for my PhD projects. Even then, the list of resources I needed to complete my current project so far includes 5 YouTube tutorials, 2 forum threads, and zero links to official documentation. Is this a problem? Is IOSD better than the thick manuals we had before? Am I the only one getting outdated answers for trivial problems? I have no idea. So I propose a compromise: I will point at the situation and give it a name, let someone else answer the hard questions, and we will share the credit.
I know this is not in the usual style of this Blog, but I found something so out of touch with reality in Batgirl #36 that I need to share it with you. Please follow me on this journey.
(Warning: spoilers for Batgirl #34–#36. Also, I'm assuming you know who Batgirl is.)
Our story starts in Batgirl #34 with Barbara Gordon (aka Batgirl) missing a meeting with her business partner Alysia and some of her company's investors due to bat-related obligations:
As it turns out, the investors are not happy. They bought plenty of shares in the company, and want to use their position to push Barbara Gordon out:
Unfortunately for them, they don't have enough shares to kick her out. Even Alysia tells them so. But they wouldn't be important shareholders if they didn't have a backup plan, right?
You see: many issues ago, Barbara hired Pamela Isley (aka Poison Ivy, known eco-terrorist and occasional villain) to develop bee-friendly plant fertilizer for their company (it's a long story - see "Batgirl and the Birds of Prey" #12 for details).
The investors have now found out, and want to use this information to blackmail Alysia into kicking her friend out of the company. If Alysia does not agree to fire Barbara, they'll make this information public, tank the company, and put all their employees on the street:
But here's the thing: those investors have acquired a lot of the company. That is, they own it because they paid for it. Do you know what would happen to that investment if they went along with their plan? Yup, you guessed it: gone. All of it. Millions of dollars lost just to spite one of the company's founders. And it's not like they can sell their stock either: doing so in this situation is a clear-cut case of insider trading. Barbara Gordon may end up on the streets, but those investors would end up in jail.
You would expect a smart executive like Alysia to thank the investors for their valuable input, promise to call them back, get a good night sleep, and (at worst) negotiate a good separation agreement for her friend. A less smart person (but smart nonetheless) would have called their bluff: Mutually Assured Destruction is a good stalling tactic, but only an idiot would actually follow through.
Of course, none of these perfectly reasonable suggestions occur to Alysia. She kicks Barbara out of the company instead, leaving her broke and homeless.
And here is where I draw the line. See, I'm fine with the idea of an early-20s super-genius with photographic memory jumping from rooftops and fighting crime without the Police Commisioner noticing that she looks exactly like his daughter. But now you want me to believe that executives from a million-dollar company wouldn't have the simplest grasp of economy? Hell, do you want me to believe that you can organize a hostile takeover, fire a company founder, and freeze their assets in less than 3 hours?! Talk about nonsense.
With that out of the way, and as a final point, I would like to call your attention to Alysia's last words to Barbara. I think you'll agree that her frustration is a little... misplaced.
No, Alysia, Barbara isn't letting "them" take away her life's work. That one's entirely on you.
I was warned. I was told this wasn't a good idea. I mean, even the price should have pointed out that something was not what it seemed. But no, I had to go ahead. I had to be cooler than the other guys, and I was certainly going to prove everyone that you can't go wrong with a Nokia phone. So I got myself a Windows Phone 8.1 (again), and today I say to you, that was a stupid choice and I'm stupid for going with it.
I've chronicled in a previous blog^1 how much of a pain it was to try to develop for a Windows Phone (WP). That alone should have kept me away from buying a smartphone with a too-good-to-be-true price. But on I went, tricked by memories of me saying "this is not so bad after all", carefully ignoring that I only said that before I tried to write my own app. And here we are again.
This is, step by step, what my experience trying to develop a very simple app for my (Lumia 530) Windows Phone was like. Yours might vary, of course, but I'm not betting on it.
Install Visual Studio Community 2015 (free), following the Official WP develop guidelines
Problem: all versions that could work in Windows 7 (the one I have) are deprecated for WP development one way or another: they don't have required tools, cannot be activated because the servers are gone, or just won't work. So get Windows 10 and that comes bundled with itwant it or not, and try again.
Update your Windows and Install Visual Studio Community 2015 (free), following the official WP develop guidelines
Problem: the installer doesn't actually install the WP tools. Go back to the installer and modify your requirements.
Plug your phone to enable development
Problem: you need to unlock your phone first.
Sign up to Microsoft's Dev Network to register as a developer to get your phone unlocked
Problem: you need to pay €14, because reasons.
3.1 (Optional) Sign up on Dreamspark as a student to get a free developer account
Problem: the automatic verification process is broken. You need instead to send a copy of your ID, your student ID, and a transcript of your grades to Microsoft over unencrypted email. But don't worry, this data will be destroyed after they use it. "Anna" promised me so over email.
Start Visual Studio, create your first project, and add a couple text fields
Problem: bugs! The auto-complete is buggy, running my app once would force me to restart every time, and adding a control on the GUI while the text cursor is in the wrong place can (and will) erase every other control. But hey, at least we are finally developing something.
Add a "select date" field to your project
Problem: you need the DatePicker control to do this, but it's not included - I guess people don't select dates in phone apps. You have to follow several steps to get it working. However, as there's a library incompatibility somewhere, you'll get stuck anyway.
If you have been following all the steps you'll notice that, after several GiB of downloads and a lot of hours spent on internet forums, I have not yet managed to finish the first screen. I spent three days trying to get things running, which is the time I budgeted for the whole app, I'm out €14, and yet I haven't even managed to add a control that should have been there anyway. I also gave Microsoft quite some money, along with a lot of my personal information.
But the worst part is that I knew this is what development would be like, and yet I insisted on giving it another try. This is why I'm an idiot, and if you think your experience will be any better, it is my opinion that you are deluding yourself too.
Listen to my advice, dear reader: Windows Phone? Not even once.
^1 As of now I haven't restored the backup anywhere, but once I do you should see a link to that post here.