In the spring of 2015, I found myself moving to a new city to embark on a new career. I was hired by a small real estate marketing company as a junior developer. My role was to build client websites in HTML, CSS and JavaScript, and to learn how these websites interacted with the company’s in-house CRM. I spent the first few weeks acclimating to the new industry, nomenclature, and people. Just as I was beginning to get into the swing of things, I received a new task. Learn Python.

As I mentioned in part 3, my only demonstrable programming experience was a PHP news aggregation app. As it turns out, the approach I took in that tool was remarkably similar to the one taken by my employer on their real estate data feed. Since I had foundational experience, I was asked to try my hand at on-boarding new data. I agreed, eager to learn something new.

Real estate data feeds typically conform to a standard known as the “Real Estate Technology Standard” or “RETS”. Each regional real estate board (known as a “Multiple Listing Service” or “MLS”) syndicates their listings to clients via RETS feed. The feed packages data (albeit loosely) into a known format, capable of programmatic consumption. The standard is not very strict in it’s content, allowing individual boards a great deal of flexibility when defining their content.

Since the feeds were so flexible, they required a great deal of translation and transformation. That’s where I (and Python) came into play. Our tool would handle requesting and receiving RETS data, perform any necessary translations to shape it into a format our CRM understood, then saved it to the appropriate databases. This tool ran every hour, so it had to be flexible enough to withstand variation in the data, and not collapse when encountering edge cases.

I found Python really easy to use. Having some experience shaping data and now freed of HTML and CSS responsibilities, I was able to simplify and streamline the data acquisition process. I can proudly say my process refinement cut the on-boarding from 2 weeks to 2 days!

As the team gained new boards, we found ourselves in need of a new real estate search tool for our clients. Just as we began to discuss the new application and its technology stack, Facebook released React 0.14. Intrigued by the library and it’s capabilities, we set out to build a prototype. I spend a few days reading up on React and building our prototype. Amazed by React’s simplicity, the team all agreed on the tech. I now found myself in a new role. Lead JavaScript developer.

For the next 6 months, I poured every working hour into the company’s new search tool. We wrote it to industry standards, implementing unit tests and lint rules. We Webpack’d and minified, SSR’d and polyfill’d. Finally, in the summer of 2016, we delivered our release. My work, the tool I spent the last half of a year developing, was now live on 2,000 sites across the country. That was a good day.

After the release, my role flipped between RETS feed development and new search application feature development. It was a great experience, really helping to improve both my Python and JavaScript skillset, as well as refining soft skills like time and project management.

Professional headshot of Keith Richards Around this same time, I began seeing my inbox fill with recruiters looking to fill positions. I no longer considered myself a junior developer, and began entertaining the requests. It wasn’t long before I found myself transitioning from a for-profit real estate marketing company to a non-profit research institute.

At the research institute, I served as a software developer, translating academic research into real world applications. I worked on large scale statistical surveys, criminal justice research, social media analysis, and extensible public health microsimulations. I was fortunate to learn a lot of new domains and work beside a lot of very educated and well-respected individuals.

At any given time, I was assigned to multiple projects with dueling deadlines. I thrived in the fast paced environment. I was fortunate to refine my skills on Python and JavaScript projects, while learning new things along the way. I picked up DevOps tools like Docker and Kubernetes, cloud computing resources like AWS and Azure. I dabbled in Golang. I picked up some new JavaScript skills too, learning D3 and Vue. I grew a lot in those two years.

During my tenure at the non-profit, I was also able to complete both by Bachelors of Science in Information Technology (specializing in software engineering) and a Masters of Business Administration (focused on information technology management). It was a busy two years!