How Summer Affected My Workflow And Habits

It was the start of summer, I had just finished my second year of Uni and I hadn't managed to get an internship. This left me in a situation where I ideally needed to do something with my summer in order to keep up with others who had landed internships. As my overall goal was to become a better developer I split my focus into the following areas:

Improving Programming Skills

GitHub graph

For this goal my primary solution to getting better at programming was to do it more and do it consistently. For this I attempted to form the habit of coding once a day. This proved tricky as sometimes there are other aspects of life that require more attention. For instance, I felt it was probably best I left the laptop at home when I went to meet my girlfriend's parents for the first time. Due to this I created the goal to attempt to code daily and a measurement of that habit which gave leeway. My measurement for this was that I had to have 80% of my daily squares filled in on GitHub (I went with 80 as my old gym coach used to say for athletes to excel they needed to maintain an attendance of more than 80%, so I embraced my programmer side and just copied and pasted).

For this coding habit I decided to develop the image sorter app for a friend. This was originally a team project so would not only help buff out my project portfolio but would also improve my team working skills. Unfortunately the other programmers did not want to follow in my footsteps and instead opted to enjoy their summer. Despite this I still got a project where I could code daily. Not only learning from my mistakes but also improving upon the use of my tools such as VIM motions where I jumped around much quicker in debugging as time went on.

Creating A Project Portfolio

This was quite a challenging task as I have spent little time with web development and even less on developing nice looking stuff on the web. With this I needed to find a balance where it was quick enough that it wouldn't be a project in itself but polished enough that I would want to display it. To do this I opted to use the bootstrap framework for all my styling as despite it creating a bunch of very ugly in-line CSS it was efficient in making the web page look somewhat polished, meaning I could focus on the content.

After creating the project portfolio, which took longer than expected, especially when looking through projects from many years ago where I had to understand the tech stack along with key details to write about. I decided it would also be good to add a blog to the page as despite many example portfolios I looked at not having them I felt that at the end of the day this is my portfolio and it is made not only for employers but also for future me to look back on, and so I felt a blog was an effective way to look back into my past experiences and relive the thought processes that took place so I can hopefully see how far I have come in aspects other than just the end products.

Expanding Knowledge

A showcase of read books

Since there was more time as I was on break I could finally reorganise my emails and delete a bunch so I would have a clean inbox. This led to me properly looking at emails when they came up rather than just leaving them to add up. This benefited me as it meant when tech newsletters such as Hacker News popped up in my inbox I would actually read them. Leading me to explore new technologies and concepts as well as keeping me updated in the big news for that week.

Along with my daily coding habit I also decided to read daily. As I'm dyslexic this is quite a slow process so I tend to only read non-fiction books within my field so I don't feel I'm wasting my time. I started off this habit with the aim to read just 3 pages a day, however, this went up to 5 pages as it is easier to count, and then 10 as I began to get into the habit of reading. Below are the books and more importantly my opinion and their impact.

The Pragmatic Programmer

This was the first book I picked up when I started to read again. I found its tips useful and overall enjoyed the read. However, due to the way I read it I have likely forgotten many of the tips, due to this I plan to reread it, implementing what I learnt from Pragmatic Thinking and Learning so I may fully absorb the information.

The Cyber Effect

This book is about technology and its psychological impact on various social groups and societal norms. For this book I found roughly 2/3 of it interesting with the chapters being very hit and miss and some of the connections seeming a little far-fetched. However, the chapters on its impact on babies, its impact on dating and its impact on extreme kinks were interesting.

Pragmatic Thinking and Learning

This book was very interesting as it discusses various ways of learning, along with various personality types and their importance in a workforce. This book probably impacted my workflow the most as I have implemented many changes, some of these include - using a second monitor of similar size when possible (this reduces context switching), being strict when on a task and not going back and forth from others as this context switching can make you 20-40% less productive (20mins regain focus), reorganised my emails with folders for better experience and finally, using obsidian for note taking as it allows you to build connections between pages which can later be easily transferred to a mind map at a later date as you can view these connections as a graph. With obsidian I would also make summaries of what I learned in each chapter of new books to reinforce the concepts and give me a place of reference.

You can view my Obsidian notes here

Practical Vim

Before reading this book, I had already been using neovim for about 2 months, however, I would only utilise movement with numbers and the movement keys/word keys. I also had a basic understanding of using macros, but that was it, when it came to utilising command mode or using markers I was clueless. This book helped me massively in my flow as I could now use vim for more than just its basic movements (also using Ctrl + [ to exit insert mode was a massive time saver after remapping the control key to caps lock).

Modern Vim

This book was the sequel in a way to Practical Vim, with this it went into features specific to neovim. Overall, I found this book underwhelming where many of it wasn't that useful. Two useful things I did after this book was firstly, looking at my telescope plug-in and configuring it to also find help documents quicker and secondly, utilise the terminal emulator, as I am already in tmux this wasn't useful in most cases, however, it was amazing for running local servers as I am sometimes forgetful when it comes to stopping the terminal in the other window. Having both within neovim meant when I was done editing I would also shut down the server.

tmux 2

This book was interesting and showed me more potential in the tool through examples such as pair programming remotely using ssh and sessions. The main change this prompted from me was to utilise multiple sessions more over multiple windows, this again helped prevent me from context switching.

Code Complete 2nd Edition

At the time of writing this I am only 150 pages into this rather large book. I am enjoying it and feel it is already teaching me better habits, such as the importance of design and architecture before coding begins.

Readers Note

If you have any interesting recommendations for me to read next, please send them my way at sonnykidd@icloud.com. I currently plan to read The Mythical Man-moth next and purchase Design Patterns from the gang of four for OOP references.

Software Tools And Workflow Changes

An example of my workflow

For main projects and important work, I will still use an IDE, however with a vim motion plug-in. For personal projects I am using tmux with neovim. To help with context switching and navigation around my computer with minimal mouse interaction I am also using skhd and yabai for a tiling manager.