As you may have read in the other blog post on our website, I joined PromptWorks as an apprentice software engineer three months ago. As the apprentice program approaches its end, I would like to share my experience here at PromptWorks with you, the things that were expected and more.

Lydia Li giving a talk during PromptWorks' weekly Talk Tuesday series
Lydia giving a talk during PromptWorks’ weekly Talk Tuesday series


Unique, transparent, & great experience

When I was invited to the office to meet with the hiring committee, the team gave me an overview of the program and explained to me the rest of the interview procedure in detail. Sarah Gray, one of the apprentice program creators, said PromptWorks wanted the process to have no surprises and be as transparent as possible for me. They outlined the process in stages, beginning with a take-home coding challenge. The second stage was an additional office visit for a pair programming session and to present a previously completed project.

I felt uneasy at first to pair-program with my interviewer

Pairing up with a professional was a new experience for me. At first, I felt uneasy about pair-programming with my interviewer. I had to expose every bit of my reasoning and logic to the evaluation of my interviewer. However, my pairing partner Dustin Ingram controlled the pace very well, making me feel more at ease.

For the project presentation, I presented to Mike Nicolaides, our CTO, and Yvonne Chen, our former business analyst. Mike and Yvonne were simulating potential clients PromptWorks might work with. Presenting the details of your project to people who have no prior knowledge is already a daunting task, and when your audience includes people with no technical background, the task becomes even more complex. But this is what real-world software consulting looks like: your clients come from a variety of backgrounds, and you must clearly communicate your ideas as effectively as possible.

From an interviewee’s perspective, I think the interviews were designed with an intentional purpose. They covered both the hard skills required for a programmer and the soft skills needed as a consultant. This process integrated well with the content of the daily work of a consulting software engineer.

Impressed by the great interview experience and the comfortable office environment, I accepted the offer to join PromptWorks as an apprentice software engineer in July.

Lydia Li working with a client on-site during a PromptWorks discovery.
Lydia Li working with a client on-site during a PromptWorks discovery.


Since the goal of this program was to guide an apprentice into a billable engineering role, each day of my schedule was a combination of investment time (learning) and billable hours. To best utilize the investment hours, Sarah, who was now my mentor, set up a Trello board for me. We listed goals that I hoped to achieve by the end of three months, then added corresponding tasks to the board.

The first project I was placed on was already in progress and required knowledge in languages I had limited experience with: Ruby on Rails and ReactJS. Thus, besides walking through the existing project code base, brushing up on Rails and learning React went on my board as well. My teammates, Patrick Smith and Dan McClory, directed me to plenty of quality resources for both tasks. My work proceeded smoothly with the support of my teammates. When I felt ready to take over some user stories, Patrick and Dan spent a lot of time pairing with me to help me understand the code structure.

Directly facing the client and pulling out their needs via a multi-dimensional conversation was a very interesting experience.

In late August, I started my second project. Different from my first one, this project was for a client new to PromptWorks. I got to be part of this project from the beginning, as the apprentice committee intended. Our team started with a three-day, on-site discovery with the client. Directly facing the client and pulling out their needs via a multi-dimensional conversation was a very interesting experience. To me, it is similar to sketching, where you start from scratch and gradually outline every component. After we understood and collected the needs of the client, we listed the potential stories and estimated their time cost as a team. With the confirmation from the client, we proceeded to development work.

Mentorship & Pairing Session

My favorite part of the apprentice program was the mentorship. To make sure everything was on the right track, Sarah designed a bi-weekly informal check-in session for me, where we had casual walk and talks. Besides that, we also had a monthly formal check-in. These sessions gave me a great chance to provide the committee with timely feedback about the program. From these sessions, I also learned more about the other on-going projects in the company.

Pairing sessions with different people gave me a viewpoint to peek at diverse working and coding styles

Another essential component of the mentorship was the daily pairing session. When Sarah reached out for the first pairing session, I was not aware that pairing is a part of the mentorship. For the first several sessions, we paired on the tickets we were working on at the time. Later, Sarah came up with an idea of doing a mini-project, so I can practice my understanding of PyTests. It was a fun idea and we started immediately. As development went on, the scope of the project expanded. It turned into a web game with major usage of Flask and ReactJS, which motivated me to pick up Flask. We also attached Continuous Integration (CI) and made the game auto-deployed on Heroku. Along the way, I got to pair up with other colleagues as well. Pairing sessions with different people gave me a viewpoint to peek at diverse working and coding styles, which was a bonus point.

I have had a positive experience with the apprentice program at PromptWorks. Not only is it a great transition/prep program for a newbie like me, but also it adds to the diversity of the experience level of the employees.

Response from PromptWorks:

We loved having Lydia in the office during her time as an apprentice. While the intention of the apprenticeship was to hire Lydia full-time at the end of October, just as the apprenticeship was concluding, Lydia accepted a position at Amazon where she had applied prior to joining our team. We’re sad to see Lydia leave us, but wish her all the best at Amazon! We know she’ll be great and we are grateful for her time as our first apprentice.