Programming made easy - not just for kids
We need to make a bigger effort, making programming easier.
There is a lot of effort going into making development easier for kids…
Well… How about making it easier for everybody?
I see myself as a seasoned developer, but I still struggle with keeping bugs out of my code and spend to much of my development time, testing if the last 10 lines I wrote actually works… Especially in Internet Exploder!
We need to change this!
I think the guys over at NoFlo are on to something…
What I like about NoFlo, is the idea of thinking in boxes of functionality, that can then be coupled with whatever fits into the in/out scheme/API.
You are only limited by 2 things:
- Does the block do what you need?
- Does existing blocks provide or consume the correct parameters?
That creates a considerably easier way, of getting a good overview of how the code is to be structured - much better than having code blocks from 30+ developers, that all have their own ideas and opinions on how things should work.
What I think I’m trying to say is
It would be soooo nice, if we could do more work that concentrates on structure, flow and the special parts, rather than rewriting user login flows, database storage schemes, etc.
We have so many languages, that we can choose a style we like, many have large communities, libraries, etc., which gives us free blocks of code, that we can re-use.
But we keep writing boilerplate code again and again.
We still need to write a lot of code, that is not much unlike A LOT of code, that we have already done several times.
Why should data manipulation look so much different from the last project we did?
I know there are different opinions on how data should be stored and retrieved e.g. NoSQL vs SQL, etc.
But there can’t be so many opinions, that we shouldn’t be able to find a couple of ways to do things, that accommodate most people!
Just a thought experiment
You want NoSQL? Fine… So you want to have some schemas? No problem!
That’s 2 possible opinions.
You want SQL? Done… You want it to be flexible like key->value storages? Done deal!
2 more opinions.
There is probably more than these, but let’s shoot high and say 100 opinions, if we count out totally arbitrary fetiches and only aim for 80-90% of developers out there…
Let’s say that we only aim for the top 20 languages, then we end up having something like 2000 possible solutions for something like the above case.. BUT… It’s still just 100 solutions for any given language!
These can even be divided up… Half is for SQL, that’s 50 opinions for SQL.
Several sub-categories will probably emerge, that makes it even simpler to drill down to the wanted solutions.
Even more important to remember:
Everybody is already programming these things anyways!
If we collaborate on creating some good standard blocks of code, fewer would need to do the work + we would have more fun creating NEW code, rather than recreating already existing stuff!
WE ARE MILLIONS OF SOFTWARE DEVELOPERS IN THE WORLD!!! WE CAN DO THIS! :-)
Libraries, frameworks and other helpers
I know that a lot of languages (or rather: frameworks) tries to help with this, but in my opinion, all they do is letting someone develop a bit faster, if you think like the guys/gals that developed the framework AND have spent time getting to know how stuff actually works.
I like libraries much better, because it forces YOU to connect the dots - instead of forcing you to actually find out where the hell the dots are in the first place… Even better: you can just replace a dot, if it’s in the wrong place or has the wrong size or color.
Each time I have to learn a new framework, this is what happens:
First version of the project is utter crap and buggy, since I do things the wrong way - but I do learn how the framework works.
Next version is better, but now I start to run into trouble, because I need feature X to work a bit weird, compared to what the framework is trying to solve.
Bugs are getting harder to solve, because they usually resides in the already hacky code, that really doesn’t fit into the framework’s way of doing things.
All in all: I think I spent more time doing bug-fixing and learning, when I choose to use a framework, than if I just create a basic framework for each project I develop! At least I can fix and refactor my code, if stuff starts to get out of hand.
Bugs are easier to fix and feels more like swatting a fly, than trying to code around a big angry elephant.
tl;dr;tl: In the end of this revolution, it will have became so much simpler to code, that any kid will be able to pick it up, like it was just another iPad game…
tl;dr;tl == To long; Didn’t read; Too late
Discuss @ HN