“Give me six hours to chop down a tree, and I will spend the first four hours sharpening my axe.” – Abraham Lincon
To cut a tree, a sharper axe held by a strong person would do a very efficient job. We can’t say this for a blunt axe. In the context of wood chopping, an axe would be a performance multiplier.
The same thing goes for Android developers. It’s important to “sharpen the axe” when given a project with timelines.
If you spend some time planning, you’d figure out how seamless and straightforward execution can be.
Here are a few things I do and the tools I use to help me “sharpen my axe”.
What I do while planning:
- When given a go-live date, I target some time before that day (could be a week or two depending on the timeline) and use that as my own date. The objective of this is to help me actually meet the deadline without any form of last-minute pressure.
- I break down projects into smaller pieces and connect the dots. For example, if I have to build an e-commerce android app, I define the screens and what they will contain, how to persist data within the app, the obvious dependencies I will need to install and how to structure my tests even before I create a new Android studio project.
- I write down my thoughts. Writing down actually helps streamline your thought process a lot more. After breaking down the project into smaller pieces, I write down each task and subtask. At this point, I define what tasks are milestones and what tasks depend on others.
- Once I have all the tasks laid out, I use a project management tool to arrange them and then I get to work. After planning, it’s time to design what the screens would look like.
Tools I use while planning:
During the planning phase, I already had an idea of how many screens my app would need and what would be on them. So now it’s time to design each screen. To do this, I use Figma. But I know a lot of people that use Invision, Zeplin or Adobe XD.
Once planning and UI design are out of the way, it’s time to write some lines in Android studio. However, I advice test-driven development. In this section, I would highlight what I do when I’m actually coding and the tools I use.
What I do while coding:
A lot of people say test-driven development requires discipline. Listen to them, it actually does.
Following the test-driven development approach, remember while planning we broke our project down in smaller pieces? Those pieces were actual features of the app. And I like to do test-driven development iteratively, feature by feature.
So how do I do this:
- Choose the next feature to implement
- Write test cases for the feature (They will fail initially).
- Refactor code until those tests pass
- Move on to the next feature and repeat 1 – 3 until we are done
10 (+1) Tools & Libraries I use while coding:
- Android Studio or IntelliJ Idea. It just has to be one of these IDEs.
- Android Arsenal: This is a directory of Android libraries and tools. If your project might require a particular feature and you don’t want to worry about writing boilerplate, this is a good place to come to.
- Anko: Anko is an Android library that makes development easier and faster. It is majorly divided into four parts: Commons, Layouts, SQLite & Coroutines.
- Source Tree: This tool provides a way to manage Git repositories through a GUI without having to have command line.
- Realm is an object-oriented database.
- Android Asset Studio: A collection of tools to easily generate assets for an Android app.
- Android Emulators & Firebase test lab
- JSON Stub: Fake the backend while you develop the frontend.
- The Android Documentation.
- SemaphoreCI or Travis
- Spotify. It’s a great tool. Music helps a lot.
With planning, I know exactly what I’m to do when it’s time to get into the code. This means I code faster with the right tools as opposed to jumping right in immediately without having an actual plan to follow.
It’s important to plan and use tools that speed up your productivity since they both work well together. When you plan, you’re able to gather the necessary things to sharpen your axe and cut that big tree down. I hope I have empowered you to plan for your next app. Please let me know how it goes when you do it.