About five years ago, I almost quit programming altogether. I'm a self-taught programmer--a child of the cyberpunk 80's, who grew up on emerging technology, remembers gopher servers and BBS, and loved the dream of a utopian cyberspace. I didn't have a degree when I started programming, but eventually I went to college, took a break, switched majors, and completed a degree in psychology with undergraduate work in human-computer interaction. I had enough fun that I decide to get my masters degree, which afforded me the ability to work on research dealing with grade impacts from online learning tools.

Meanwhile, in the real world, I was a minority owner in a software company that did consulting services. My business partner was working on a product, while I pushed the broom to keep the bank account full. We were working on some of the best code that I had ever produced. I learned a lot, and started to become confident in my skills.

The problem was that the outside world was seeing things differently. The CIO of one of our clients was replaced, and the new CIO knew little of programming. He thought that Wufoo Forms could replace a complex admission form process that automatically entered students in the CRM, ERP, and SIS systems, while being fully extensible for custom actions and message queueing. But, you know... Wufoo Forms.

At the same time, the marketing department was dictating most of the major decisions, so it was time for the every 3-4 year CMS refresh. This time they hired an outside design agency, paid them about a quarter of a million dollars, and let them dictate software and technology decisions. Thanks to jQuery plugins, designers were getting more clout as front-end developers, and many in marketing or management couldn't tell the difference between a plugin popper or a software engineer. All they saw was the shiny end results--it didn't matter how much glue was used, or how it would hold up six months down the line.

This was the problem with design agencies at the time: too many plugin poppers or script kiddies selling the shiny interface and a little eye candy. They grew dangerous thanks to jQuery and jQuery plugins, and often convinced marketing teams that they knew what was best. Never mind that the fancy social media dashboard they sold you was a third-party plugin that relied on PHP, which wasn't the stack you were using. Marketing wanted it, so you had to make it work. Am I speaking from experience? Of course. It meant that I had to spend some time writing a .NET Twitter library to mimic the PHP code--along with all the other patching I had to do because the design prototype wasn't an actual finished product--even if marketing thought it was.

On top of that, everyone thought that SalesForce would heal all wounds and sprout magic beans out of the box. You know... the same thing that SAP was supposed to do about 10 years earlier.

Programming is hard. Did I forget to mention that? If it's easy, you're probably doing it wrong. It might come easy to someone... especially after 10-15 years of experience, but that doesn't make the work easy. Installing a 3rd-party system, adding a few plugins, and tweaking a custom template makes it look easy until you have to start kludging a few software components to meet business needs, hire a few more employees for manually processes the software can't handle, and ultimately replace the product in three years. In fact, lack of investment up-front on quality software engineering and/or integration will directly lead to additional employees hired solely because of software and process inefficiencies. An investment up-front; however, can mitigate the potential for being forced to make long-term investments in personnel to support a poor application or process, freeing up that salary for investments in people who can further the company's mission.


Side note: Notice that word integration? Just because you invest in a software engineering team, doesn't mean every system has to be custom, but your programmers will have the best knowledge of which systems may or may not work well with the company's infrastructure and goals. I can't tell you how may times I've seen IT excluded from leadership meetings.


More and more what I was experiencing was discouraging, it was appalling, and honestly, it was disrespectful to the years of hard work I had put in as a professional.

It wasn't just there that I was seeing it either. This attitude towards custom programming was proliferating across many industries--industries that required technology to succeed, but didn't have to own that knowledge. It seemed like those in the high priced manager positions for IT held their place by virtue of just being a little more technical than the person that hired them. I'm sure I'm just being bitter, but that's sure how it felt at the time.

As I was saying, I almost quit programming. I had zero desire to have to prove my worth to marketing departments and those who didn't value programming. No matter what you did, it would never be enough. I wasn't happy with my day-to-day work and interactions. I didn't really see a light at the end of the tunnel, and dealing with the politics of IT was weighing on me. I was in the midst of my master's degree in clinical psychology, and I could double major in counseling to get licensed. I could then apply for a PhD program, and check out permanently. My advisors at school--and my professors and classmates at colloquium--thought enough of about my abilities to encourage me to do so.

I decided to persevere. My wife and I struggled to have children, so we went the IVF route. She had a difficult pregnancy, the twins were born premature, and I found myself in a position where I had to move on, but wasn't quite ready to enter a doctorate program--so I took a deep breathe, relinquished my stake in the company, and looked to switch jobs.

When I did, it reinvigorated me--mostly because I was given the latitude to make the right decisions, and choose the right technology. There are still many uphill battles: still those that think buying something off the shelf is better than investing in something with the team that they have, and still too many "web developers" on marketing teams slinging plugins like a D&D Elven Ranger, and passing them off as ninja secrets. Right-handed dates without up-front requirements are still a thing too.

The point is that problems like these are in every industry and every company depending on the management structure, and unless you work for a technology company that understands the complexities of software engineering, you're always going to have to fight these battles. The trick is to persevere. The trick is to believe in your own skills, work hard, and try to keep your head out of the politics.

Five years later? I'm not only at a high point in my career, but I'm at a high point creatively. I'm experimenting with artificial intelligence, speaking at conferences, and metron has been one of the most fulfilling projects I've put together. Then at the beginning of this month, Joe Darko calls me, and informs me that I'm now a Microsoft MVP.

Five years and a lot of hard work can make a world of difference.