My first job was both a blessing and a nightmare. It taught me more about the world than about software development, but those lessons were invaluable.
The company that recruited me DIRECTLY OUT OF HIGH SCHOOL was a consulting firm on the north side of Houston. They had big clients like HP, Compaq, and lots of oil and gas, not that I got much exposure to them while working there since my primary focus was an ocean-shipping contract management system.
I was super excited when I got a phone call and asked to interview for a software engineering position literally a week after I graduated high school. My family had a 2 week vacation planned in a couple of days, so I let the recruiter know I'd need to interview now, or not again until the following month. I also asked where they got my contact information before we got off the phone.
Lying my way into the door
Apparently they had found a resumé I had uploaded to Monster.com as a school project for my Business Computer Information Services class. That resumé had a few mis-truths and a handful of embellishments because the candidate was supposed to be the future me. After the project was over and we received our grades we were supposed to delete the profile, but what kid is going to do extra work AFTER they've already been graded. So it stayed up there for over a year before I was contacted by my first head hunter.
I bluffed my way through the phone interview, unsuccessfully tried to negotiate a higher salary (multiple times throughout the process, in fact), and after only a few minutes of "tech talk" I was accepted for the second in-person interview with the team I'd be working on.
I was probably a little too cocksure when I went into the interview. I should have been more cautious since I'd never had a job before, let alone one in an office.
Lying my way onto the elevator
The first part of the interview went according to everything I'd ever been told, they asked the trope questions, "what are your weaknesses?", "where do you see yourself in 5 years?", etc., and I answered with the same trope answers, "I work too hard, I'm a perfectionist, And I am stubborn and don't give up until I finish." and "Here, continuing to further the goals of the organization". Then we got into the technical portion of the interview where things got a bit more difficult for me since I had no real technical background other than programming with a group of other nerdy kids. So when I was confronted with questions I didn't know, I bluffed. When I was wrong, I convinced the interviewer they were wrong. When I was right, I was incredibly right.
Looking back now, if I were them, I'd have ended the interview after the 4th or 5th wrong answer, thanked me for my time, and laughed about me as the door closed. I honestly do not know HOW I made it through that interview, not to mention then GOT THE JOB. There had even been a point where one of the technical people was defending their position, and I raised my voice telling them they were wrong, and I went up to the white board to draw it out. In case you haven't gotten the message, yet: spoiler - I was the wrong one, but I was apparently good at faking, because they accepted my response. And I got hired within an hour of driving away... well, riding shotgun away in my now mother-in-law's car since I didn't have one capable of the 50 mile journey.
Lying even to myself
I was stupidly offered the job for the princely sum of $30,000 per year, which after one last failed negotiation higher, I stupidly accepted. It was a decent amount of money for an 18 year old. Not enough to really afford to live on their own in the big city (Houston, TX - biggest city I'd known so far), but it enough to buy a nice laptop, take my now-wife out regularly on dates, and buy a new car to make the journey to work every day. I bought a rotation of outfits, 10 polos, 3 khakis, and 2 new pairs of shoes. I had to look the part of a successful software engineer after all.
After about a week on the job, my dress code slipped. I ended up coming in one day in my skate shoes on accident (was operating on autopilot most mornings). After they commented how comically large my shoes were, I owned that as my new identity, and wore them every day. Then I switched to blue jeans. The owner wore blue jeans, so why not me! Then on a Friday I implemented casual Fridays... but only I participated, and I would forgo the polo shirt and wear a t-shirt. Amazingly I was never brought into the owners office and disciplined, or anything.
Is it even a lie now?
All while I was faking being a software engineer, I was also becoming a software engineer. I learned as much as I could, as fast as I could. After less than a month, I even asked the owner of the company if we could start the project over using the newly released .Net 2.0. He was VERY hesitant. They had spent nearly 6 years trying to write this application. I assured him that the benefits outweighed the cost, and ASP.Net with VB.Net was basically the same as ASP Classic. I was right about the benefits, but not on purpose.
The application was currently a Dr. Frankenstein's Monster of various technologies that didn't really work well together. ASP classic, Visual FoxPro, SQL Server 7, some Unix logging system, and worst of all was no one knew anything other than their own piece of it. I had a plan.
The application as it stood required a data entry person to input a contract into a Visual FoxPro database which looked a lot like like MS Access to me. They would then click a button labeled "Expand Records" which would then take all of these normalized rows and expand them into their de-normalized representation. The entire process took 2-3 hours and could fail at any point in the process and render that "expansion" corrupt. After the rows were expanded, they were inserted into the SQL Server database, one at a time, not in a transaction. Then finally using my piece of the monster, you could search for a specific contract route in the ASP Classic web application.
Basically a shipping company would input they have 40 foot standard and high-cube containers coming from Hong Kong to Seattle, LA, and San Diego, and they accept 20 cargo types and their prices. That would create 120 rows. There were thousands of these route tables that needed to be added per contract as a shipping contract was usually a few hundred pages of these tables.
So the FoxPro application was the only way to create the contract currently, and could only do one contract at a time, and had to be run inside the firewall, could fail irreparably at any moment. It was a limiting factor for launching this application for the ocean carriers to use directly. So under the new plan, I had to fix this. This was my first task.
So I guess I'm engineer now?
I settled into my "secret" project. Everyone knew what I was doing, but I was now operating on a parallel track to them instead of on the same track.
I first started with the contract input system, which would in one step expand and insert the rows into the database for a draft contract a new concept. It used javascript to expand the rows on the client side in a bunch of hidden fields, then submit them to the server in a single go.
Within a couple of days I had made enough progress that I was given the green light to completely replace the FoxPro application to the horror of the team working on it for the last couple of years. Another week and my next revelation hit me. Going to the server for every single action wouldn't work. I needed to do this asynchronously (a word I didn't even know at the time). And since I didn't know that word, I definitely didn't know about AJAX, and even if I had known about it internet explorer didn't expose the XmlHttpRequest object without including an activex plugin which I couldn't force on the end user.
Inventing AJAX -- well AJAI (Async JavaScript and Images)
So I needed the user to be able to approve each one of these groups of contract rates, but posting to the server, then getting the response to come back to the view was taking 3-4 seconds for EACH CHECK BOX so I devised a way that to this day is one of my favorite hacks. I took a screen shot of a check box ticked and not, and used them as an image. The image had an onClick
event that would change the source of the image to point to a URL that executed server code to approve the rate for that one row. That cut down on the data going to and from the server substantially, and sped up the response to under 100ms. The user could now "check off" each row without having to then wait 3-4 seconds for the round trip and the page to reload, and if any error happened, the un-ticked check box image would be displayed. Then when you submitted the form at the end of it all, no real data went to the server. All of these little improvements turned the input and validation of a contract into a short 1-2 hour process from an all day or sometimes all week process when a bug was discovered in the FoxPro application and it took days to code around.
Team Lead!? ME???
Within the first couple of months I had completely rewritten the application to the state it was in when I arrived. It wasn't done, but it was at least in a place that could be used "in production" by one of the clients to test it out and find bugs, while I and one other developer kept adding to the front of it. It was at this time that the owner took me to lunch, told me how impressed he was with my ability, and wanted to promote me to the team lead. He told me that due to my age, it would probably come off negatively to the other members of the team, but that I had proven myself to all the higher ups as a very capable engineer. He even PAID FOR MY LUNCH (no one had done that before). I accepted the new role, and started to now help the other developers get on board with the fast moving ship. I had no experience leading anyone, and honestly, I probably thought way too highly of myself at this point, but I tasked the FoxPro guys with speeding up the database. Currently it was very slow to insert and update because there were loads of indexes and triggers. The other VB developers (yep, we used Visual Basic back then - well VB.Net now, but we it started in VB) were to help me make the application more robust. After I would do my prototype of a feature, we would then work together to try and make it bulletproof. We worked this way for a couple more months before we launched the application (some might even say shipped it - sorry, pun totally intended).
More Responsibility = More Work && !More Pay
After we launched the application a handful of clients were on it and inputing their own contracts for the first time. Many of them were excited, as they had been promised this software since the year 2000, and we were in December of 2006 now. It was at this time the owner took me to lunch again, and discussed giving me more responsibilities still. He told me that I had pulled off something he believed impossible. In his 30 years of consulting, he'd never seen someone come in and right a ship so quickly (in hindsight I'm sure this is all smoke up my ass), and that he thinks we can reimagine the development team. Something leaner and faster moving. He wanted me to get rid of a couple of the original FoxPro guys.
I told him I would do it, but I didn't feel very comfortable since I had never done that before, and that my best developer works FOR his uncle who was HEAD of the FoxPro guys (now the database admin). But thinking this was how one gets a raise (the owner never stated I would get a raise, but naively I though I would), I did the deed. I came up with a not un-truth, but not completely true reason behind the downsizing: the application has finally launched, and now we are going to be in a development lull, we wont need everyone anymore, and I let go of the two FoxPro guys, then as expected, he took his nephew, and unexpectedly (at least to me), the other guy got up and left with them. I was now the team lead of... myself.
As the next month or so ticked on (hard to remember how long I worked like this), I was having to work later (10+ hours each day), and on weekends as well to make up for the lack of other developers, for no extra money, and that raise I had ass-u-me-d was coming never materialized.
Getting Out
I could have probably kept that job going for years getting more and more resentful, but my father came down with throat cancer over a decade after he quit smoking. So not knowing how much time I had left with him, I got a job as an IT Technician for our local school district. My schools were close to his work. So I was home more and close by him in case something happened while he was at work. Thankfully nothing ever came of the cancer the chemical and radiation treatments seemed to kill it, and he is still doing well 15 years later.
It was the perfect excuse to leave the most exploitative job that I have ever had. I felt guilty using my father's cancer as an excuse when the truth was I didn't want to be there anymore but I didn't know how to quit on my own.
I learned a lot doing that job though, and that cannot be understated. I don't think I've ever grown in my career as quickly as in that job. It lasted less than a year, but from start to finish I went from playing with computers as a pass time to actually shipping software as a career.
Looking back now 15 years into my career, I can see that the owner took advantage of my innocence multiple times, and from the onset. The recruiter telling me they only had budget for $30k (no software engineer would have accepted that low of pay in 2006 in Houston), making me team leader to get me to do more work, making me lay off around $300k worth of employees and do their work myself without giving me even a dollar of extra pay.
Every move he made, he made expertly, he knew how to manipulate an uneducated, young person trying to start their career.
BUT I also think back fondly of that move. I didn't have to accept this job. A normal person probably WOULDN'T have accepted it. But I thought I could jump start my career, skipping college, and getting my first salary. I think I'd be in a much different place today had I not done that. So I cannot say I wouldn't do it again knowing what I know now, as I probably would.
Disclaimer
A lot of time has passed. I'm a bit vague on the exact time-line (a month or so, a few weeks, etc) because I honestly cannot remember. I remember I started in July 2006, and launched the application in December 2006, and fired everyone shortly after that, and quit after my dad was diagnosed with cancer a couple of months later still.
I am also not trying to glorify or endorse lying in an interview or faking it until you make it, because its bad for all parties involved. Even if you get away with it, it is (or at least should be) super stressful knowing that you are not capable of doing the job.
I am also not endorsing hiring an 18 year old into a salaried position right out of high school for a very technical job that they have no businesses doing just because they are willing to accept a salary that is 1/2 what the market demands.