Climbing Mountains and Building Software
A few months ago I left on a hiking trip with some friends. We never made it to our destination. I left the planning of the trip to my friends, thinking that it would turn out okay. But once we started hiking on the first day it was clear we were never going to make it. In retrospect, I learned a few things during my recent hikes.
- Lack of planning is prone to lead you to failure
- Taking the long trail can still get you to the top, but at what cost?
- Carrying too much weight on your back is never a good idea.
A few weeks after that, I went hiking again. This time I took the time to really sit down and plan my trip. Everything from my arrival, camping locations, and departure was planned ahead of time. Then I took a look at the route I wanted to take. There is more than one route to the top of a mountain, and this time I would take the easy one. I also learned during our trip that we didn’t need a lot of the extra supplies we had brought. Ultimately, this ended up just weighing us down. I went from taking a 20 lb backpack to carrying a much lighter 12 lb backpack for my next trip. This time, I made it to the top, and then I got to thinking.
Building Software is Like Climbing a Mountain
Plan Plan Plan
The easiest thing you can do to assure failure when building software is not plan enough. Little thought to the overall architecture and design of your system will surely show in your end product. Planning your goals is also a good idea. It’s nice to be able to say “At ___ time I want to be in ____ position”. You may not achieve your goals, but it’s important to have them so you have something to strive towards, and so you know when to stop.
Take the easy way
Another thing to keep in mind, is to take the easy way to achieving your goals. Some people might be tempted to start their project using a framework they’ve never used before, just for the sake of learning a new technology. Don’t do this. At least as long as the goal of your project is not to learn a new technology. Don’t do something if it’s not going to help you achieve your goals.
If you know anything about topographical maps, you’ll know that lines get closer together as the grade of the land gets steeper. In the picture above, you’ll see three trails converging at the top of the mountain. Don’t take the steeper slope. If your goal is just to get to the top, take the way that’s going to conserve the most energy in case you need it later. For all you know, there could be 3 more mountains you have to climb that you didn’t see before.
Don’t weight yourself down
It’s easy to get excited about software engineering (for me at least). Remember that at some point, you have to put down the pencil and start implementing your system. Don’t weight yourself down with too much process that might hinder you later on. Don’t get me wrong, software development processes are great. But there’s a balance between the amount of time you should dedicate to your processes and the amount of time spent developing. For the solo developer and small teams, this can be crucial to your success.
If you have something to add to this idea, please leave a comment. If you liked this post, be sure to subscribe for more!