How meta information automates the software development process
Meta information is probably the single most under appreciated subject in the software industry, since it has the capacity to increase productivity by 1 million times
Join the DZone community and get the full member experience.Join For Free
Meta information kind of implies "information about information". For instance, if I told you "all cookies are made out of chocolate", that would be a piece of information. True or false is irrelevant, it is still a piece of information. If I sent that information to you over an electronic connection, then meta information about the information would typically include things such as ...
- Time and date for when the information was sent
- Who sent it
- Who received it
- How was it transmitted? Text message, HTTP, TLS or in plain text, etc
- How many servers did it pass through before recipient received it
Once you dive as deep into meta information as I have done, interesting things reveals themselves to you - Such as for instance the realisation of that most of your job can actually be automated, leaving you with the fun stuff, while your computer does all the boring stuff automatically for you.
In the following video I illustrate how Magic works, and how its single most important axiom is meta information, and how that actually allows me to create fully fledged web apps, with thousands of lines of code, 100% automatically - By tapping into the concept of meta information.
Of course, not realising the potential of this ability, is arguably madness, since software developers are expensive, and computers are cheap. For instance, it has been proven that the average software developer produces between 325 and 750 lines of code per month. The system you see me demonstrating in the above video produces about 100,000 lines of code per second. And more importantly, the code it produces, is 100% perfect, not even in theory capable of containing bugs, assuming I have done my job of course as I created it.
I don't know about you, but I tend to refactor my stuff some 3-4 times before it's good enough to be considered "stable", which I guess Magic itself is a testimonial towards. Implying you can further sub divide your productivity by 3-4 if you're anything like me. Hence, if you can tap into meta information, you increase your productivity by several orders of magnitudes. To illustrate how powerful automation is in regards to this, let me ask you a question.
What is 1,238,435.78 multiplied by 378,544.58?
If I asked you to give me the answer to the above question using nothing but pen and paper, you would probably have to spend minutes finding the answer. My calculator can find the answer in 0.00000000000000000001 seconds.
Retrieving meta information from your data, software, and computer is actually quite easy once you make a conscious choice to start down this path. For instance, to show all tables in your MySQL database is as simple as this.
Once you have your table names, you can retrieve columns for each table, and what types your columns have, etc - Which of course brings you "down the rabbit hole", allowing you to automate a lot of your own job. Of course, taking it to the extreme lengths that I have done, where the end result is a fully fledged Angular GUI, with CRUD operations wrapping all database tables - Might not necessarily be for the faint at heart - But ...
Mount Everest is conquered one step at the time, right ...?
And just a single step down the path towards meta information has value, simply because your software becomes more agile and generic in nature as you apply some few simple steps of meta information retrieval, allowing you to solve more than one task at the time. Which of course is why Magic is such a productivity booster - Simply since I didn't solve one problem when creating it - I solved a billion problems as I created it!
Humans have a lot going for them, but productivity and speed of calculations is not one of those things. Spend your time doing creative and fun tasks please. Life is simply too short to do stuff your computer does 1,000,000 times faster than you ...
In fact, I would like to come with a prediction, which is as follows; "Unless you tap into meta information, you won't even have a job 5 years down the road, because some stupid $5 pocket calculator will be easily able to replace your job." With meta information though, you can solve multiple problems at the same time, since you solve the underlying problem, in a generic way, allowing your software to become the solution to multiple problems.
Gutenberg and automation
Don't believe me? Realise this has happened thousands of times before through history. Roughly 5% of the population of Europe became unemployed with the invention of the printing press, simply since a copy writer needed 18 months to create a Bible, while the printing press could produce hundreds of Bibles per day. Did the printing press do an equally good job as the copy writers? Of course not. But 99.9% of the world didn't care, because a Gutenberg Bible was only a fraction of the cost of a "real Bible". Today, only crazy people manually write pieces of text off by copying them from one page to another. However, 500 years ago, some 2-5 percent of Europe's population had this as their sole task, using their income to provide for their families, and supporting themselves. Literally over night, these copy writers no longer had an income.
In a way, it's the Universe's Karmic punishment too you might argue, since we as a profession have for decades made other people unemployed, due to automating their jobs - Hence, when you as a software developer are no longer needed, you will probably find little sympathy from the masses in regards to your problems ...
Solving multiple problems simultaneously, is arguably human developers' sole asset in the future
Opinions expressed by DZone contributors are their own.