The Bitwise Malandro

In Capoeira, a "malandro" is someone who adapts in the moment and hacks the system through inventiveness. Here's to somersaulting through code!

Keeping Your Project Organized and Focused

clutter

Project ideas can easily get overwhelming and complicated when going from initial thought to reality. This is even more true when working in a group.

Here are a few tips to help get ahead of the curve and be on point when building a project from the ground up:

1. Set a strict deadline and figure out if you can get done a simple, base-case version of the idea within that time

When do you need to get this hack done by? A week? A month? Make sure you stick to whatever date you pick. Don’t give yourself wiggle room (at least at the beginning), as you might be tempted to take advantage of it.

Pair down your idea, stripping away layer after layer, until you get at the core of what you’re trying to accomplish. And then build from there. Weigh each feature of the project to estimate how feasible it would be.

2. Sketch a flow of how a user would interact with your app, and how the app would respond to the user. Design the infrastructure around this flow

When someone visits your app, what would be the first thing that they would see? Where would they go from there? How would they use your project in their life. What would they click on, and what do they expect it return?

All these questions need to be answered to figure out what the app will look like and what it will contain. Also, come to piece with the fact that you might not get this right the first time. Programming shows us how both intuitive and error-prone we all are. Constantly evaluating the app flow after every change in the project can get us closer and closer to the truth.

3. Collect resources and tutorials about the technologies you may use for the project

The programming community is very collaborative and there are tons of free resources available. Take advangtage of that fact. Everyone comes across errors and bugs that baffle them from time to time so get comfortable reading documentation and looking up answers to broken code on forums like Stackoverflow.com

4. Create each new feature on a separate git branch. Only merge to master after a thorough inspection

Not only will this help you prevent team members from working on the same issues at the same time and creating overwhelming code, but it allows you to make an easy-to-track progression of how your project was built.

5. Write out the code you want to have in the comments. Use it to form the code you will have

Writing out the comments first allows you to verbalize to yourself, and your teammates, what kind of logic you need to implement, as well as what variables you have access to.

6. Hack away at the problems in the code until you’re exhausted, then hack away some more

Jump right into the thick of the code and swim your way through it. Keep practicing figuring out things in the moment, adapting to each situation as it comes. If it’s not working, push yourself to think about it a different way, and question your assumptions.

7. Figure out what job each part of your app is supposed to have, and partition their functionality

Think of every piece of your app as an object that serves a specific purpose and a role to play. Defining that purpose can help make your code cleaner and narrow down where the error might be located when they pop up.

8. Always ask for feedback

A new fresh set of eyes can do wonders to your project’s progress. As well as challege your assumptions about the way things need to work.

9. Delay the desire to abstract until after it’s already working

Abstraction is important, and can help us hone in on programatic thinking and effecient design patterns, but the wrong abstraction will cost you dearly. Make sure your code is nearing its final form before you start making it look clean and pretty.

10. Work on the frontend last, and split up the workload

It’s important to have a good app styling and branding, but without a solid and robust backend holding it up, the project can become brittle and unpredictable easily.

Also, even when you approach styling last, proceed with caution. Frontend styling is usually applied across every page of an app, so any merge conflicts can get messy fast. Make sure anybody working on frontend is working on a specific goal on a feature branch and that their tasks don’t overlap with anyone else on the team.