I got my first programmer job

Last week, on Monday (August 9th), I signed a contract for my first full-time developer position. I started the next day and completed my first week, even though it was only 4 days. Yesterday, I started my first full week. The position is with a landscaping company based out of California. I’m working on an application that they produce and license to other landscaping and contractor companies. It focuses on making estimates and tracking hours, workers, jobs and all of the numbers that make those things up to determine profitability. I’m going to blog through this initial period while its still fresh, so hopefully other new developers can gain some insight into what a new developer experience might look like for them.

Landing the position

So, after 18 intense months, I graduated from Lambda School in April and started looking for work. I had been applying to positions that I came across from time-to-time since I was either in the React or Node units at Lambda, so sometime in the 2nd half of 2020 I was actively seeking work, albeit not with as much effort as I would after graduation. Some of my earlier posts talk about this a little. Once I graduated, I began to apply much more earnestly, using my own ad hoc internal system to track positions I’d applied to (hello, Notepad!) and eventually making use of Lambda’s application tracking program as well. I had an updated resume, I had updated my LinkedIn profile a bit based on programmer & developer advocate Danny Thompson’s LinkedIn series and I was working on projects to try and keep my skills up and learn new ones.

I landed a few interviews based on blind outreach, but I was selective, too. I didn’t apply to hundreds of companies like some others do. I tried to find positions that I thought I was a good match for and wrote a cover letter template that I then customized for each position I applied to. I also started adding people on LinkedIn more actively, and actually took a day to specifically hunt down recruiters and add them on LinkedIn. I had a short introduction that I shared with each of them when I sent a connection request. Ultimately, this outreach didn’t seem to matter.

In what seems to be a more typical process, I learned about the position that I eventually landed through a contact from Lambda on LinkedIn. She posted that she knew of a position available for a developer in South California. Since that’s where we moved to, I replied to her thread and let her know that I was interested if it was a junior position. She DMed me and asked for my portfolio, GitHub profile and resume, which I sent, along with a link to my online resume and LinkedIn profile.

I was in Arizona at the time. My parents were visiting from back home in NY and we drove 7 or 8 hours to an airbnb to visit with one of my sisters and her family. The night after I sent my contact the information she had asked for, someone else messaged me from Lambda’s Slack. He said that he works with my contact who I had forwarded my information to and wanted to know if we could meet. We ended up having a 2-hour Zoom meeting that ended around 12:30 AM. We’re both night owls. During the meeting, we went over my work history at the EMR I’ve been employed at for the past 18 years, as well as a little bit about my 5 years in I/T before that, and some other things (he learned a bit about my love for extreme metal and electric bass, and about my family). What we spoke about the most was my EMR experience though, particularly some of the complexities of system design and planning integrations with other applications (we have a clinical system for nursing homes and had partnered and built interoperability with finance, pharmacy and laboratory programs).

I let him know that during that time, I was not a programmer. I was originally in tech support and then application design, eventually becoming the lead designer for the software after our founder passed from melanoma. His name had been familiar to me, and during the meeting, I learned that he is an instructor at Lambda (I didn’t have him as a teacher, he taught mainly even-numbered cohorts and I was usually in odd-numbered ones). He also has a web development company with around 16 employees and a bunch of projects. I told him a bit about my own small web development company (which had added a new person the day before my meeting with him). In the span of two days, a lot had happened in Arizona.

So, that was on a Wednesday & Thursday about 3 weeks ago. I told him that I was driving back to CA on Friday and wouldn’t be available until late. We ended up connecting again the day after I got back and he said that he had spoken with the owner of the company that the job posting was for and that he thought I was a shoo-in. They wanted to arrange a Zoom meeting, which I agreed to. Later that day, I had another 2-hour Zoom with the owner of the company. We got along pretty well, he got a feel for me and my experience and I got a feel for what his company does and what the software did.

He sent me some material to review, it was a series of videos that explained parts of his estimating process. Later on in the week, his company sent an IQ test. It was 30 mins long and consisted of 80 questions, all multiple choice. I think I made it through 74 of them before the time ran out. A day or so later, I was sent some more videos as well as a PDF of a 156-page book that he wrote explaining his process for determining if a company is profitable or not, and corrections that could be made to ensure profitability. I read through that book and watched more videos. We Zoomed again close to the end of the week, or during the weekend after my return to CA and walked through the system, with him quizzing me on certain principles and having me do math to show that I was following along and understood the process, which their software is based on.

I thought that things went well and messaged both of the Lambda contacts (the one from LinkedIn and the instructor who owns the web dev company) to let them know that and to thank them for the opportunity. The following Monday, I Zoomed with the owner and he made me an offer. I accepted verbally and they sent a contract, which I signed. That takes us to now, which I’ll detail in the next section.

Its important to note, as well, that I didn’t have a technical programming interview for this position. There was no whiteboarding or even a take-home project. Our discussions revolved around my experience and how much coding I had done, which I was honest about – it was roughly 2 years, and the majority of it had been at Lambda, with other projects being built during my enrollment there and after graduation. They also included talk about salary and other compensation.

My first week

My first week was only 4 days long, but it was a long 4 days. There’s a lot to learn. The software I’ll be working on is being built using React, along with several libraries. There are older versions, from an MS Access one to a Visual Basic one (which we spent a lot of time looking at) to a C# version, to the one I’ll contribute to. I spent a lot of time reviewing the VB system because it has features that still need to be built for the React version. I also learned about a bunch of other application that the company uses for various purposes. Some are for running the company and marketing and others are for time-tracking and interoperability with other applications.

I was in a lot of Zooms last week. I met with marketing people, the team who builds websites for the company and its holdings, other developers and office personnel. On Friday, I drove to the office (its about an hour away, with this reduced COVID traffic) and met with a ton of people from all departments. I also attended Zoom meetings from there, on the big screen. What stands out to me the most is meeting a person who I had been briefly introduced to during a Zoom earlier last week. He’s from Guatamala and has a computer science background from 20 years ago, which places him in my age group. He had learned a bunch of different languages that I’m not experienced with, including C++, Java, and maybe 4-5 other languages. He has a love for SQL as well. When he came to the US, language was a barrier, so he was unable to land a developer job. He did other things, but has been with this company for a few years now, knows the software, understands programming and can now speak English very well.

We spent a bit talking about programming concepts and our experiences and hit it off pretty well. I think he should be on the programming team. He’s more experienced than I am, even though he doesn’t know React and hasn’t worked with JavaScript in years. He said that right now, what he does is something that the owner tasked him specifically to do, and it closes a big money gap for them, but I did give him back the itch to code. We’ll see what happens in the future…

There’s a lot to learn, and right now, I’m a overwhelmed. I should actually be focusing on work, but I think I need a small reprieve, hence the timeout to write this blog post. I’m trying to get up to speed with the program. I need to learn the workflows. I’ve been reviewing the other programs that the company uses, particularly ActiveCampaign and Zapier. I also have my first big task: build an API to connect the company’s software to Zapier, so it can then connect with other applications already in the Zapier ecosystem, like QuickBooks and ActiveCampaign. Its a monstrous first task, because I don’t know the system as well as I’d like yet.

Yesterday, I met with one of the other programmers, who is also a Lambda graduate and was in my original WEB23 cohort. Its great working with him, as he was sharp, kind and insightful, even back during Lambda. We talked through some questions and ideas about how to connect with Zapier and looked over the system together. He gave me a good run-down of the entire React application. We chose two components that should be the first to be connected to Zapier, but after reading through their technical documentation yesterday, it looks like we’re going to have to work on authentication before we start working on the rest of the API. I’ll probably write a post about that process, to help others, once I’m far enough in. So far, I’ve started creating to document the first component we’re integrating. I listed out all of the fields onscreen, made columns to list the names in the database, data type for each field, constraints and general notes. I also made a document that lists all of the request payloads when working with the local API, which ended up expanding my list of fields to 4 pages of fields that are possibly used, but do not appear onscreen.

I have access to a bunch of repos on GitHub with code for various applications and websites that the company has built. Earlier today, I was reviewing the backend, which is written in a bunch of languages (C#, JavaScript, TSQL, HTML, CSS and Smalltalk). I’m trying to learn about additional constraints that the backend code places on all of the fields I listed in my document. I think later today, the lead developer will meet with me to review the database schema, which should answer a lot of my questions.

I’ve been meeting with the owner via Zoom every morning at 7:30, to give him a short status update and to make sure I’m doing ok. Its also how I ended up with meatier first-tasks, like this API. At our meeting this morning, he informed me that we can now stop or reduce the frequency of these early AM meetings, as I’m working on a project and apparently give off the appearance that I know what I’m doing. Later today, I have meetings with various team members and two other companies. One is with ActiveCampaign and the people who build the company’s websites and the other is with BusyBusy, the programming team and the lead business person. Actually, that first meeting is in less than an hour, so I’m going to wrap up.

Oh, also, I’ve been working on small projects to try and help learn the company’s application. Last week, I built out a Next.js website and converted some of the documentation for the VB version of the software from Word format to the web. I’m only about 25% through though. After I have all of the content up and I’ve refined it (its ugly) then I’ll share it back with the owner so that others can use it as a quick reference tool or for the same kind of training I’m undergoing. Its a good way to learn the system and produce something at the same time.

I also looked over the repos for some of the websites and for the application. I have a lot of ramping up to do before I can contribute to any of those. They’re using a few libraries I haven’t seen before and things I’m not to great with, like Material UI. The repos that are in languages which I haven’t learned are also out there, waiting to unravel my mind. And I created a Trello board to organize the Zapier integration, as well as some other things in my head.

So, that’s basically the first 5-6 days thus far. I’ll update again. Oh – and I haven’t announced anything about this position yet on LinkedIn or in the Hired channel at Lambda. I’m waiting a few weeks to see if I sink or swim before I add this and let the world-at-large as it exists on the internet know.

Leave a comment