WIBWO 1: Library and Design Patterns

Oct 21st, 2019

This is the beginning of a series of posts I'm calling "What I've Been Working On" or "WIBWO" (I know, very clever). Every Monday I'll be detailing my week outside of work when it comes to my learning, side projects, you name it. It's just a way for me to keep a consistent journal that is documenting my struggles and keeping me accountable.

Projects

This week I've been working on something I'm calling my "Library". This Idea came about because I switched browsers to Firefox Developer Edition, and one day I opened the browser to find that 90% of my bookmarks were deleted. I have nearly 400 bookmarks, most of them being development related, whether it's resources for learning or references to problems I've needed to google that I'll likely encounter again. I've enjoyed using the browser outside of that and a couple other issues. I'm considering writing a post about it, so there may be a link here later.

Maybe I'm missing something, but importing bookmarks between browsers has almost always been a crap chute for me. I'd like to be able to reference a set of universal bookmarks no matter what browser I'm toying with. I'd also like to be able to share those resources that I've begun to compile with others. It's especially important for newer developers to be aware of all of the different types of resources that can help them on their way.

That's where my Library comes in. It's essentially my bookmarks imported onto my website for all to see. Initially it'll just be a usable list, but I'd like to also make it exportable so others can add it to their bookmarks or whatever they want! That could very well come next.

Learning

As I'm getting more comfortable in Laravel, I'm beginning to realize my limited knowledge of object oriented programming is holding me back. I'd say I have a pretty firm grasp on the basics of OOP (classes, coding to an interface, public and private, etc.), but when it comes to refactoring some of my ugly code, I don't know what to do.

This has lead me to (hopefully accurately) think that my lack of knowledge of design patterns is stunting my ability to better utilize the Laravel framework. At the same time, I've read more than enough about junior developers who over-reach for these patterns and they get lost in a sea of complexity, so that has been in my mind constantly. I have been reading a book on design patterns called Learning JavaScript Design Patterns. I know the gang of four book is the go-to here, and I plan on picking that one up after I go through this one.

Something I've realized as I get better at learning in general is you must apply and practice knowledge as soon and as much as possible. It's too easy to burn through 20 hours of tutorials and walk away feeling accomplished only to go a week without using anything you learned and then realizing you forgot it all when you sit down to apply it.

In order for me to learn these design patterns I plan to do the following:

  1. Read and take notes lecture style.
  2. Go through my notes and try to explain what I've read in my own terms. This will help me assess how much I've actually understood. It helps to try to explain it out loud as if to another person (rubber duck method).
  3. Apply the patterns in pseudo-code to see how they look and interact when used and where I'm stuck.
  4. Write the patterns in actual code using the language of my choice and testing them.

Work has been busy so my capacity has been limited, but I'm still making the time to keep going. See you next week!