Do you remember the first time you started coding? The experience was likely frustrating, having to deal with code that doesn’t work and finding out the problem was a missing semicolon after a whole night of debugging.
But the wonderful moment comes, suddenly it all clicks, statements, constructs, functions all of it! You feel like you can code any application if you wanted to! It is not long before your nirvana crumbles and you have to deal with maintaining thousand line monstrosities!
Then you discover classes. Oh what a wonderful savior! Classes helps you pack up information into neat objects. Maintaining code has never been so easy. Until when it’s not! You see now you have classes all over, most with names like “Database”, “User”, “Customer” etc. But the classes are spinning out of control! Where do I put this new functionality that signs up a user to our newsletter? Is it the “User” or the “Newsletter”?
At this point in time, our knight in shining armor by name Taylor Otwell comes to the rescue. You know what I am talking about right? Yes Laravel. This is the point you discover frameworks. The power provided by MVCs or MVTs for Django is unparalleled. With fancy slogans like
Love beautiful code? We do too. The web framework for perfectionists with deadlines.
Surely you now have landed on the magic elixir that will help you build huge applications in no time!
And guess what, this time they deliver, you are now rolling out apps like crazy and getting paid! That’s all fantastic!
Your reputation as a developer who gets things done has grown significantly. Today you are seated on the opposite side of some seriously monied individuals. This businessmen want you to automate a very complex workflow for their business. It includes everything from payment processing to a full blown CRM.
You can see it all in your mind, the controllers the views the models! It’s all there! So you start coding!
But something is going terribly wrong. Why do you have three separate payment controllers? Does it really make sense to repeat this code there? You can remember something about “DRY” or was it “SOLID”? How do you apply all those?
As luck would have it you land across a conference recording showing a whole new way of thinking. Welcome to the world of design. Suddenly you see the world is much bigger than MVC you now have a rich vocabulary to build your application!
- Design patterns
- Architectural schemes
- Hexagonal design
- Micro services
- Command query separation
Awesome stuff! Now your code looks a lot more smarter and you are proud to show it!
Finally you have something to show to the client. Call them to the presentation room and proudly show your wonderful creation!
Something is wrong, no one smiling, in fact you note they are glowering at you! What could have gone wrong? Before you have the time to even verbalize your queries the client goes into a tirade. Claims everything you have just presented to them is worse that useless! The functionality is all wrong and the interface simply sucks!
A few meetings later its all clear, during your kickoff meeting you miscommunicated and with all the micro decisions you we’re making, you drifted further and further from the vision that the client had in mind. But now you know what is up, you promise to do better next time.
This time you are not going to mess up, and if you do mess up, you need to know about it quickly. As you are thinking about it, you realize what you are actually constructing is a process, that is something you heard about somewhere, was it waterfall? You google it up and land on something even far more powerful, agile processes!
- Extreme Programming
- Unified model
Now truly you can do almost anything you have the coding skill, the design skill and the process to bring it all together.
Congratulations chap, you are now a senior developer.