Just over a year ago I quit my job, changing fields, completely new technology and just about everything else.
For nearly a decade and a half I worked in the energy industry, creating control systems for oil and natural gas wells and pipelines. I created embedded systems for wired and wireless communication between instrumentation and control computers. My day job covered the entire spectrum of the development process. Creating the build environment, bootstrapping the OS to the in house designed hardware, writing the application code, designing and building the test fixtures. Some days I was writing kernel modules, or adding USB support to our boot loader, and other days I was writing customer facing desktop tools. For a long time, I was a one man band when it came to the projects I worked on.
Even though my work load was diverse, I wasn’t progressing through the corporate ladder the way I had hoped. Record sales, leading the industry in technology, patents, etc. and all I’d see each year was inflation rate pay increases and competitive pay in an area where there was little to no tech jobs. I was the “go to” guy for a lot of topics in a huge organization and yet keeping talent was never on management’s Top 10 list of things to do.
A man with a plan
So over three years ago I decided to start looking around for something new. We had recently moved to another state, and my old job allowed me to work out of sister company’s office. This meant the job prospects were better. While there were a lot of job postings, they were almost all for Web Technologies, stuff I had not really done in a professional capacity.
To give myself experience, I needed to come up with a “real world” project. To be real world I decided that the project required the following:
- The project must be full stack, with a front end that called APIs in the back.
- It must be mobile friendly
- It had to use a database, SQL or NoSQL.
- It had to use 3rd Party APIs for other services.
- It had to have both authenticated and non-authenticated routes
- And it must handling logins with a simple, yet modern user model.
If I had time, the option to create a mobile app that used the APIs, logins, etc. would be a bonus.
The actual project itself wasn’t that interesting. A SaaS site for property managers to create a communication portal for residence. The mobile app would be brandable, and allow direct correspondence with management and the 3rd parties that handle the specific jobs requested.
Most of the job postings were for NodeJS so that was the language I picked for the back end. Having no idea what stack to use, I did a quick search for tech books, blogs, and package download numbers for npm, I ended up using ExpressJS. Ever job posting had different requirements so there was no point in picking something specific.
The first run through the project took about 8 months to “complete”, getting to a state where everything seemed to work while having horrible code. A lot of the code was me trying to squish a lot of tutorials, books, and blog posts into something that resembled my problem. It was done during nights and weekends, whenever I had spare time and if I started to burn out I’d drop it for a few weeks. Once I felt I had a fairly firm grasp on the tech stack, I started over and wrote it again from scratch.
The final solution took around 5 months to complete. The front end still looked very “tutorial” like using the default Bootstrap CSS. But I was able to get everything working correctly and was all code generated by me, not just copypasta. Registration and password recovery actually sent emails. Databases were backed up on a regular basis. Docker containers were created pulling code from git and tested by CI. I even created a working Android and iPhone app that received push notifications when the site updated, linked events to the native calendar and opened Google Maps when locations were selected.
After that I started sending out resumes and using my lunch breaks for phone interviews. This went on for nearly a year. Even with coding skills, and team and project management examples, and everything else I did at my old job, it was difficult to sell that I had done such a huge amount of learning and work in my spare time. In my old position I wore so many hats that over extending myself was the norm.
In the end I received a few offers, some for web development, some for low level stuff similar to what I was doing before. I opted to make the transition because it will make the next transition even easier.
Back to today
I now am a full time full stack developer working for a marketing company that deals with rewards, rebates, and contests. I still jump around different aspects of projects but nothing compared to what I used to do. A lot of other aspects changed too. We do agile, while my old job was just starting the transition off of waterfall. Project delivery times are weeks instead of months (and years). And knowledge is viewed as a resource to be shared.
I’m definitely glad that I made the transition. It was a long time coming and took a bit of work. Jumping from one end of the development spectrum to the other just required a lot of determination. When people post questions about what languages to learn, or how to make a change from their current job to something completely different, this process has shown me that its less about what you know and more about what you’re willing to do.
Oh and my new job actually keeps me busy to the point where I kinda dropped off the map with respect to all things online. I really need to resolve that issue.