Do you ever feel as though you have reached a point where you know everything? Yea, me neither. The old adage “The more I learn, the less I know” is a feeling that I like to embrace.
The web, and the languages that run it, are in their infancy. As such, there is an ever deepening well of understanding to acquire. An army of minds are pushing the technology towards maturity with each small bug fix and every ambitious project.
This rapid evolution can sometimes make it difficult to keep up, but it makes for a fun ride when you love what you do and you are driven by discovery.
As a professional, I have been working with various web languages and other application languages for over a decade. Most of my experience has been in an agency capacity where task switching, organization, and planning are key traits for thriving. I have completed hundreds of sites (and several apps) from quick builds to sites that have required monthly maintenance releases that stretch over years of time.
My interest in software can be traced back to when I was 10 and was given six floppy disks containing Visual Basic 3.0 by an uncle (Thanks Steve!). I would spend much of my teenage years writing various programs (well, finding code and tailoring for quite some time, a.ka. typical script kiddie). The need to distribute these programs lead to building websites for myself and others.
Over the years I would learn things that made my endeavors easier, like using version control with SVN and later GIT. I would learn concepts like OOP that would lead to developing larger and more complex applications. I would adopt tools like Composer and NPM that would make implementing other developers work into my own projects a simple and maintainable task.
During college, I discovered that I could exchange my skills for money and thus my freelance career was born and would live for years after I had graduated.
Freelancing was perfect for my early career as I would gain skills in communicating with business minded types about technology. This communication skill is the reason why I quickly have found myself in leadership roles in every job I have taken. Knowledge acquisition was driven by the needs of my clients, which meant that I never said “no” to any request. Time + Coffee would lead to the fulfillment of any request.
From there I would take on a string of jobs in the Digital Agency industry. The work was mostly starting new projects that could be anything, including marketing sites, iPhone Games or specialized internal management software. The projects would have rapid early development cycles and then cool off and be shelved for months before being revisited for maintenance or feature additions. This type of work taught me how to write code that I (or anyone else) could quickly understand later on, when all knowledge of the project had passed from memory. It taught me the importance of writing code that was highly organized and written so that each part followed software patterns and organizing principals that made sense intuitively.
Currently, my life is about moving a large, highly active, and very old legacy project over to a new system while still maintaining and often adding new features to the old system. This has been highly valuable at teaching me about planning and preparing for what to do when those plans don’t unfold perfectly. It has taught me about managing server resources and writing tests and testable code. Unlike Agency world, my life is all about a small handful of projects that we are constantly working to improve iteratively every week. This work environment has been instructive about planning for the future and writing code that is highly adaptive to rapidly changing business requirements.
I am most happy when I make things better today than they were yesterday. Kaizen, or continuous improvement, is the principal I live by. That may mean shaving off a few milliseconds from the TTFB response from a web server or freeing up memory or CPU resources from a process. Other times that means implementing new work flows that make my team more adaptive to business needs. It may mean training other developers, getting out ahead of issues before they become costly or staying up to speed with the latest developments in the software engineering world.
Tomorrow is always an opportunity to move forward and I want to make the most of it.