The Importance of Discipline in Development
Tags: beginners, productivity, ios, motivation
Published: 2019-06-12 12:52:41

---
title: The Importance of Discipline in Development
published: true
description: A discussion on the importance of discipline in development with regards to designing a project in terms of infrastructure as well as UI/UX.
tags: beginners, productivity, ios, motivation
cover_image: https://i.imgur.com/lDo2ICz.png
---

For the past couple of months, I have been working on side projects (mostly on iOS using XCode and Swift) just for fun. I have noticed that I have a tendency to begin projects, but at some point I would give up and completely abandon the project. There are many reasons that force me to abandon the project, but the most common ones are:
* Getting annoyed when coding the UI
* Having problems deciding on the structure of the application
* Straight up hating the way I wrote and structured my code

##🗣 Lets talk about discipline
So what does it mean to be disciplined when it comes to programming?
I believe that it is setting up standards and having a proper workflow that is followed throughout the development of a project.

I realized that almost all of my failed projects have the same exact trend. They are the projects that I started right away.
I did not spend any time:
* brainstorming more ideas
* deciding on the functionality
* designing the UI
* deciding on the structure of the project

Eventually, I would face a hurdle that seems impossible to solve, even though I am sure it is. However, because I spend more time debugging and facing unexpected problems, I eventually lose motivation and discard the project completely.

##✍️ Changes I decided to make
####👨‍🎨 Design my UI using Sketch
Around 3 months ago, I came up with an idea for an iOS application that would help me and my friends study more productively (partially inspired by my unfortunate grades 😬). On May 26, I was finally free from all the schoolwork and I decided to begin planning the app.

Planning the app was the first step towards a more disciplined approach to development. I spent around a week on Sketch designing every possible screen I could think of that would exist on the app.

<figure>
  <img src="https://i.imgur.com/yF03S21.png" alt="Trulli" style="width:100%">
  <figcaption>How my Sketch Page looked like after a week (had to hide some artboards 🙈)</figcaption>
</figure>

I know, I know... I probably should have used separate pages to organize the design, but this was the first time I used Sketch and... yeah things got a tad bit messy 😅

The reason I encourage designing the UI before starting the development is because when I am programming, I would rather just focus on functionality instead of design. All I had to do was translate the designs into code, which did not take as much time as designing the UI from scratch in previous projects. In the projects which had no reference for me to use, I had to spend some time sketching up a design in my head which wasted even more time.

####📝 Use a project management tool
Having worked on dozens of other projects throughout the last couple of years, one of the things that I vividly remember is the struggle of managing my tasks. I could never remember what I did and what I want to get done.

For this project I decided to use ClickUp which is a project management tool just like Trello and other famous services. I started filling up the "Open" column with simple initial setup tasks that I wanted to get done. Slowly, over time this is how my space looks like:

<figure>
  <img src="https://i.imgur.com/DyAcOmb.png" alt="Trulli" style="width:100%">
  <figcaption>How my ClickUp space currently looks like</figcaption>
</figure>

What I liked about making this change for this project is that there are many features that I could take advantage of that are not available when using text editors to keep track of tasks or using the traditional pen and paper method. I was able to sort my tasks based on priority, add a description, set due dates, add subtasks and much more.

Another thing that I really liked was the integrations. Especially the GitHub integration. When enabled, each commit is assigned to a task in ClickUp (by using the Task ID) and therefore, it makes it much easier to search and filter through the tasks and find the corresponding commit.

####🎉 Get over my fear of using Git

Believe it or not, for all my previous projects, I have never used a version-control system. I used to code away in my local computer, create over a dozen directories (just in case something goes wrong 🤦‍♂️). With this project, I decided it was finally time to get over my fear of using Git and finally learn how to use it (mostly due to the GitHub integration on ClickUp).

I can not stress enough how life-changing Git was for me. I could easily go through all my commits and see the changes in each file. Everything felt so organized and just right.

Since this was an iOS application, I was using XCode which makes it a lot easier to commit to my repositories using the GUI interface provided, which also convinced me that adapting Git is a good idea.


##💬 Final thoughts and reflections
After about 2-3 weeks from initially starting this project, I noticed a lot of changes in my workflow and productivity. I am still working on my project and I am LOVING it! Everything is so organized and easy to find. I have made 91 tasks on ClickUp so far, finished all my designs on Sketch and committed every code-related task on GitHub. I have noticed that I enjoy working on this app A LOT more than any other previous project I worked on. I believe that being disciplined and having tools to use throughout my development have made me a lot more productive, the setup was really beneficial to me and I cannot wait to continue using it for future projects 😃

Do not shy away from sharing your thoughts and the tools you use to increase your productivity! 🙌