Began learning HTML/CSS/PHP - 2003
I first began learning to tinker with websites in 2003 by working with PHP websites ran with vBulletin and WordPress. Since I did not have any formal training, this was a great challenge and taught me a lot about persistence as well as created a strong foundation in pattern matching and attention to detail.
I worked as a hobbiest, primarily tinkering with websites that merged with my interests. I created and worked with several gaming group websites.
Learning on my own through trial and error forced me to consider code in ways that most people don't. I learned coding concepts by connecting them to real world metaphors, such as a dresser being an array, or getting a certain number of cookies out of a cookie jar as a for loop.
Developing my skills in this way has aided me greatly in explaining to clients how code is running behind the scenes, because I'm able to give them metaphors that they can relate to.
Began Developing Custom Modifications - 2007
In 2007, my hobby of tinkering with code started to change. I decided to take the natural next step to creating some custom modifications.
I began working to create an Email Integration system that would mimic an email list. But the emails that were sent out came from vBulletin's Cron Jobs and those some Cron Jobs periodically checked an email box for emails to be processed. Essentially tying an email list to a forum. This allowed users to interact with the forum on the website, or from their email box.
This forced me to learn about IMAP/POP3 and how to work with Pear packages. As well as process those incoming emails as a large string and break them apart, which brought on the regular expressions.
Learning to write and modify regular expressions developed some strong pattern matching skills. Where many programmers will run screaming from RegEx, I shrug and dive in. It's not that I prefer them... but I put in my time to understand them.
The Email Integration modification still exists for vBulletin today, though I have not supported it or developed it since 2009. I released the permissions on the modifications for others to continue it's development.
Managed and Developed Websites - 2009
The next natural steps in my career came in 2009 when I began developing and managing websites for a couple of Not-For-Profit organizations.
This was a huge change for me as I transitioned from working on ideas I had or things I wanted to, to interacting with a "customer" and trying to make their dreams a reality.
I still had no formal training, so there was definitely a lot of trial and error.
One of the main applications to be developed was a registration system for festival events. The registration system had several requirements:
- Allow users to register for the event
- Be able to purchase merchandise
- Pay for their registration and merchandise with Paypal
- Admin system to manage attendees arrival at the event
- Reporting system to export data to excel after the event
I learned an amazing amount during this time diving deeper into PHP and MySQL. One of the things that I find most interesting is that I built the database without any knowledge of Normalization. When I look back at that database that contained over a dozen tables, only one column of one table violated Normalization. Which shows that my natural instincts for organizing information and almost perfectly on track.
Centriq (Formal Training in C# and .Net) - 2011
During the previous years of my time tinkering with code, I had held a nice paying day job in data entry. However, near the end of 2011, the company I had worked for laid off over 30% of its work force. Since I had been there for 10 years I got a great severance package.
Prior to this I had learned a great deal about HTML, CSS, PHP, and MySQL but I had what I call "street smarts" when it came to programming. I would say that I could "duct tape" code. I could make anything work, I couldn't tell you why it worked, but I could get it to work.
I was lacking in "book smarts" and knowing the jargon. In addition to the fact that PHP is generally more utilized by smaller companies or hobbiests.
I decided to start taking classes at Centriq Training in 2011, making the transition to C# and the .Net framework. The similiarities between PHP to C# and MySQL to SQL made this an easy transition that was more about learning the jargon, a new way to do things, and finally understanding why somethings worked.
The year that flew by! - 2012
I began working at CST Industries immediately as a Web Developer immediately after I finished the program at Centriq Training.
I dived in as the sole web developer for the company, which even though I was new to C# and .Net, was a natural progression after so much experience managing and developing sites with PHP.
The website ran with a system called Ektron. I wasn't a big fan of the system, but it did build on my skills as I learned XSLT and learned how to work with a library that had very little documentation.
After going through Centriq I had developed a thirst for knowledge that had me expanding my skills in 2012 with:
- Front End Design - HTML5, CSS3
- Middle Tier Development - Business Logic Layer, Data Access Layer, .Net User Controls, Custom Controls
- Back End Development - Large scale database design using normalization rules
Near the end of 2012 I was approached by Centriq and asked to come back as a teacher. I still felt a shaky with the jargon, so it made a lot of sense to go back and teach. It pushed me into the deep end of understanding every in and out about programming concepts, C# and .Net.
Continued Education in 2013
Teaching at Centriq has been a blessing - its been a great mixture of my life outside of code (as a performer in Tricks of the Light) and having learned so much about programming on my own. My stage experience allows me to keep the classroom engaged, active and having fun even while their brains are being stuffed full of concepts, as well as, teaching them concepts with metaphors that they can get a hold of that make it easier to absorb the jargon.
It has been said that the best way to learn is to teach, and I have learned so much teaching. The questions that an individual asks when they have no preconceptions about what should or should not be possible is amazing. It's allowed me to keep thinking that programs can do anything, it's just a matter of how much code you need to write to make it happen.
I've continued to push my skill levels farther and in 2013 I picked up the following new skills:
- Front End Design - Canvas for games and menu, jQuery custom plugins, Responsive Design
- Middle Tier Development - MVC, Interfaces, Extension Methods
- Back End Development - Creating Stored Procedures
2014 was a lot about preparing. I put in my notice with Centriq late in 2013 to leave the company March of 2015. Working at Centriq Training was an amazing experience with a great group of people that are truly passionate about technology and helping people make the transition. I look forward to a possibly returning to teach again at Centriq. But first, I wanted to get back to full scale development. The people at Centriq are amazing and really do care. It's not just a business to them, they love technology and love driving the industry
The program at Centriq Training is simply amazing. It's been a blessing to see it change peoples lives with so many success stories. I've seen many close friends go through the program and come out with a career they love. which is always hurting for people with the necessary skills.
The new skills I picked up in 2014:
- Front End Design - SASS and AJAX
- Middle Tier Development - Inversion of Control / Dependency Injection, Test Driven Development, and Team Explorer
The difference between good code and code that works, is often the amount of time you have. In 2014, I realized I had gathered a lot of skills and could create pretty much anything the customer requested, however, the code I created wasn't always the most efficient.
The last half of 2014 was spent building a "Starter Template" with Code First Entity Framework, MVC using customized Code Templates, SASS to manage css and a lot of snippets and custom visual studio's templates. The result is an ability to rapidly generate a site for a customer spending a minimal amount of time customizing the models, and creating the scss file.
Back to developing!
The start of this year the big question was where I was going to be. As I was leaving Centriq, I really wanted to keep my full stack abilities and expand on them.
Luckily, I got my wish and I accepted a full time Senior Software Engineer position at FreightQuote. This is a great shop to work in as I get to run the full gamut of .Net as well as get to do a lot of new development with the MEAN stack. This varied, bouncing around, frameworks is exactly what I love and need to expand my abilities.
I never seem to have a limit to what I want to learn and these are the items that remain on my radar. Will they happen in 2015? I don't know... but keeping my eye on what I want to learn, ensures I continue learning.
- Angular Done!
- Mean Stack (Mongo, Express, Angular, Node) Done!
- Kinect Programming
- Architecture Design Patterns Done!
- Advanced AngularJS and custom directives Done!
- PHP Laravel
- Android App Development
- Windows 10 Application Development