loading...
Cover image for The Importance of Discipline in Development

The Importance of Discipline in Development

oohsinan profile image Omar Sinan ・4 min read

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.

Trulli


How my Sketch Page looked like after a week (had to hide some artboards πŸ™ˆ)

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:

Trulli


How my ClickUp space currently looks like

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! πŸ™Œ

Posted on by:

Discussion

markdown guide
 

The more disciplined version:

Use your pencil & paper to sketch ideas and discuss them with your client/manager/team/friends to reach a better and clearer understanding of the requirements... Far cheaper than using any tech out there!

Moral:

Control the tech... instead of being controlled by tech

 

Could absolutely work for some people, thanks for sharing! πŸ™ŒπŸ½

 

When I realized I should actually design in sketch before coding that was a game changer for me. It’s so much quicker to change decisions on your design in Sketch than it is in code.

Also, don’t worry about having all your art boards on one screen: most of the designers I work with work that way!

 

Absolutely, it has definitely changed the way I work. It helps a lot!
Also thanks for the reassurance πŸ˜…

 

Discipline gets even more important when working as a team on the same project. In one of my hobby projects the disorganized way of using git resulted commit becoming incompatible. Some of the incosistencies were resolved the wrong way: Keep my stuff, throw away work of others because that is easier than merging right. Frequently occuring on the short end of that premise you pile up frustration and stress easily. You are starting to lose sight of your different project branches status', what you are doing and what others have done, although everyone agreed to use git avoid these symptoms.

In short: You not only need to discipline yourself (although it's a start) but have to agree on certain standards with your teammates and on ways to enforce them. Unfortunetly, we lacked the latter which drove me into abandoning a multi-year project which I believed in strongly.

 

Absolutely it's a start, can't agree more. Thanks for sharing πŸ˜ƒ

 

It's great to hear the word discipline being used. That word doesn't come up as much as it should in software development these days.

 

Can't agree more, it definitely isn't discussed as much as it should be.

 

Sir you solved my 80% problem....god bless you sir🀘

 

Awesome, I'm glad! πŸ™Œ