Mastering the Basics
Choosing the appropriate Tools, Methodologies and Frameworks
Focus on the Problem. Are those Tools useful for solving the Problem?Always ask yourself if the tool, framework or language is suited for solving the problem. It should go without saying.
We’re in the business of solving problems first and foremost. Communicating, understanding the problem and figuring out how to solve it are the important parts. Technical excellence also plays a major part in this, just to be clear. This is not the point.
If we think from an XP point of view, technical skills include making it work, then refactoring, also includes understanding the when and how of testing, pair programming or being able to communicate with a diverse group of stakeholders. Technical excellence also means understanding when to use which tools.
Avoid getting stuck within a single framework. Rather focus on mastering the ability to choose the right tools for the problem you’re trying to solve. Context is everything. No expert advice or book will be able to give full insight to the current problem you’re trying to tackle. This is nothing new.
Keeping up with the latest trends and having and understanding of possible solutions is a competitive advantage. That being said, refactoring the existing App to the latest hipster framework just because it’s the latest hype might be a bad idea.
This is not about React vs. Angular2, this is not about Java vs. Ruby. It’s also not about Scrum vs. the latest agile methodology. This is just plain and simple boring. Uninteresting. You don’t want to be that “framework X guy”, except if you want to build a consulting business around framework X.
Framework X might or might not be the right solution for solving your current problem. It depends on a number of factors, that change with every project or product you’re involved in. The circumstances revolving around a product are never static.
The more paradigms and fundamentals you understand or master the more options you’ll have to tackle the problem.
I avoid reading any “this vs. that” articles. It implies that somebody understands the context within we’re operating in. Are you a sole developer or are you building an enterprise product with a large team?
Are you using agile or is it deadline driven? Context is Everything. Framework X might be great for one set of problems and terrible for another set of circumstances.
Fundamentals will take you a long way. Avoiding getting caught up in a box. To round it all up, let’s think about a function called compose. Wouldn’t it be interesting to understand what compose actually does and how to implement it yourself?
This might sound trivial. But imagine there is a function called compose inside your current favorite framework. compose let’s you glue two components together. You’re using compose all over the place and a couple of months later you refactor from your previously favorite framework to your new framework of choice. There is no compose in the new one, but there is a function called glue. Interesting. So now you’re using glue all over the place. A couple of months later somebody asks you how to combine two components together, but he’s not using your current hipster framework…Wouldn’t it be interesting to understand what compose actually does and how to implement it yourself?
The endless stream of posts themed around React/Redux and getting started could be interpreted as a need for guidance or rather a search for a one-size-fits-all solution. Investing in understanding the basics is a long term investment, which goes against the concept of quick wins and hype cycles.
Asking the right Questions
We’re in the business of solving problems and constantly learning along the way.
A couple of lightweight questions to ask before starting any project/product:
“Do we really need this?”
“Is it helpful to use this tool/framework/methodology?”
“What does this tool/framework actually do?”
“Does this tool/methodology/framework help us to solve the problem or could using this become the problem?”
Bonus: Rich Hickey has a couple of great talks on the topics simplicity/complexity, including the classic Simple Made Easy.
Take the time to watch Rich Hickey Simplicity Matters by Rich Hickey (Rails Conf 2012 Keynote).
In case you have any questions or feedback leave a comment here or leave feedback via twitter.