Episode 17 of the Coder's Block podcast out now

YouTube ads and Instagram posts make coding seem like a fun sticker filled evening with excellent cups of coffee and gorgeous scenery's of nature and such. Until you talk to a programmer with a job and a deadline. Then the coffee becomes required, the scenery becomes repetitive and the stickers are replaced with a 20lb laptop that says "Company Property" on it. And it's important to look at both sides, because, yes coding can be a fun sticker filled time as well. But in whatever industry you are in, you will face challenges. And they won't be pretty. So learning how to get through them is of utmost importance for your career growth and for your personal growth as well.

The Most Difficult Programming Challenge I've Ever Faced

So today I'll share a tale about one of the programming tasks I took on nearly a decade ago when I was first starting out as a programmer, that may or may not have broken me physically, mentally and spiritually. A task that would have either destroyed my passion for code, or fully reinforced it. And since I'm still programming daily today, you can guess how it turned out.

But first a little background on that young programmer from back in the days. Back then I was a know-it-all coder with an attitude and a backpack full of CS notes. My first job was for a very large magazine publisher with a massive tech stack that spanned 20-30 years. My job as a newbie was to watch the other programmers, learn the system, and eventually to dive in and begin to take over projects. In the beginning it's the dream job of course. You're doing little work, drinking free coffee, getting paid very well for your age and you're on top of the world. But life begins at the end of your comfort zone, and I was about to reach that edge.

I'm a fast learner and I'm very polite. 2 dangerous things when first starting out. But also 2 things that many employers look for. Any project I would have taken back in those days, and I did. And it lead me to what is probably the most complex piece of software that I have ever written in my decade long career. So today I will tell that tale. A side of programming that doesn't get talked about enough. But the not so pretty side of writing code as someone starting out.

A brief description of the project

This particular project by today's standards, is still very difficult and you shouldn't give it to the guy who's never heard of a web server (ie, me). The company wanted to build an Ajax based chat system that would work on any page, and any site property that they owned and that was fully integrated into each other. So user on site A could talk to user on site B, etc. And that allowed for group chats. And emojis. And many other features that business people like.

I'll mention that at this stage, I had never really worked on a website, and I didn't know anything about JavaScript. I knew C++ and Java. Neither of which were used here. But I took on the project, because I wanted to impress and not get fired. And what followed was 2 back to back 100 hour work weeks. Illegal? Probably. But I didn't care. I was going to complete this project or die trying.

The daunting deadline

If what I mentioned wasn't enough to deter you I should mention that the mandatory deadline was 2 weeks and for a very specific reason. A very large corporate sponsor (which shall remain unnamed, but believe me they are big) was paying for this project. Paying alot. More than years of my salary. But no pressure. After 1 hour, it was decided what we (I) would use to build this software and a very quick napkin drawing of a database was made. I had full control of the entire project for the most part.

To make things even more challenging however, I was not allowed to touch the database. This had to be done by our DBA and they were designing the schema as well. I simply just had to plug in the values and hoped they matched the holes and such. Other than that, I had full control of the entire project.

These are the types of deadlines that are common in the corporate world. And while I am against deadlines for many reasons, I definitely understand the pressure that managers go through when working with other corporations.

The first week of the project

Week 1 went pretty smoothly. Non stop Googling and coding was done. No thinking. Just typing really. Which might be what lead to having to scrap the entire project and starting from scratch. As Ajax was still somewhat new back in the day and not as robust as what we have now, I had chosen to go a certain route with making requests. As it turns out after a week, it wasn't a valid approach and it wasn't working. Not only was it not working. But 2 days were spent looking into why it didn't work. So at this stage a choice had to be made. Spend the rest of the week looking into this. Or using the current new found knowledge, start over with a fresh look at the whole thing. I chose the latter.

That first weekend was spent in isolation pretty much at home. My parents wondering what that job had done to that poor boy. If only they knew. This second time however, it was much much faster. The idea was already a part of my hands as I typed. So anything that I was building was coming from experience, as oppose to before where it came from various web tutorials and forum posts. Because StackOverflow wasn't really around back then.

This was definitely a blow to the mind. Because not only are you starting over, but you essentially have 1 week for this project. And this will happen and has happened since. Sometimes certain things are not visible until other things come to the surface. Everything makes perfect sense at the 20% mark, until you reach the 70% mark and realize that you can't go any further.

The final week

This is the magical week. This is the week where I didn't sleep more than 2 hours per day. Didn't eat more than once per day and that nearly drove me into another field of work. After 5 consecutive 14-16 hour days I was allowed (loosely used) to work from home during the last and final weekend. That Monday the project was to be delivered. And 5000-6000 lines of JavaScript later, I knew the language better than the Ecma International

The phone rang every hour on the hour. Our Director of Technology wanted updates and he wanted them fast. Again, I was just a kid with a tendency to say 'yes' too much. As I sat in my room with plates of frozen food everywhere, no light, and a boiling laptop with 1GB of RAM on my lap, I began to wonder why I was doing any of this. Friends were out and about enjoying time with their families. Even co-workers at this company were out doing the same. And here I was nearing another 100 hour work week. I could simply quit I thought. In fact, they needed me, I didn't need them. Except that I did as food doesn't buy itself just yet.

But that was the motivation that I needed. That was the moment that I began to take ownership of not only this project, but of my skill set and of myself. I ignored the phone for the rest of the day. Showered and ate. Went outside. And decided that I would quit. But not before finishing this project. It was an amazing feeling. That I wasn't bound to this. But more importantly, and shockingly enough, that the work I had done in these 2 weeks had been largely responsible for this new found confidence. That the difficulty and utter agony of sitting through this with 100% focus and dedication, is what allowed me to approach it with such ease.

Just 2 weeks prior, the concept of working on a Corporate Sponsors tech proposal and of even using JavaScript was foreign to me. But then there I sat, with this new knowledge and new way of looking at technology. A new understanding of real time communication was present. And I had this insane project to thank for all of this. Needless to say, the journey was well worth it to arrive at this place.

Embrace each and every challenge

The biggest lesson here for me was to embrace challenges, because after you overcome the challenge, guess what? It's no longer a challenge. It is now something that you know how to do. If you run from it, or hand it off to someone else, you're essentially staying put while these little opportunities flow through you like waves. Will you fail? Most likely. How could you not? It's your first challenge in a new field. It will most likely not work and you might have to start over again and agan. But you'll learn what didn't work, and that's the first step in success. If everything you've tried doesn't work, then there must be something you haven't tried that will.

So how did it end?

That was the climactic part of the story. The ending isn't as colorful but deserves to be told, as it also a part of this world we call software development. Essentially I drove in to work with about 90% of the project completed. Enough for a demo to say the least. The business partners loved it, then quickly made about 100 changes, which took me another week or so to complete at a much calmer pace. In the end, the corporate sponsor didn't like it, so they bailed out. And there I sat, on top of the throne of a 8000 line JavaScript project. A one line multi-user chat system that would work on any website you dropped it into. If only I had known how valuable that would be one day I would have kept the file.

Walter Guevara

Walter G. is a software engineer with over 10 years of professional experience. When he isn't blogging or being a CTO he enjoys coding randomly complex things that he hopes many people will get a chance to use one day.

Have a question or comment?

No comments posted yet

Add a comment

Start
Score: 0
snake left
snake up
snake down
snake right