A few years back, Michael Nickey shared his unusually romantic capstone project in the Thinkful student community. In honor of Valentine's Day, we took a look at his project in-depth, and gave him the chance to share some advice with fellow students. Note: you can work through the scavenger hunt in its entirety by using the “Click Here” links at the bottom of each page.
What was your goal coming into the Software Engineering course?
Basically, I wanted to get to the point where I was qualified to find full-time employment and possibly some freelancing gigs. Thinkful offered the 1-on-1 mentorship and a skill set I was looking for. I knew I wanted to learn Python, I had studied it a bit in the past, but needed more help in actually building things. I was also excited to pick up new concepts like SQLAlchemy and markdown.
Today, I’m a technical analyst contracting to Google where I build Python and SQL scripts. What I picked up from Thinkful (beyond the actual concepts) has helped me a ton. I can think like a developer. I still use Thinkful’s resources (Community & Career Services) to this day.
Walk us through your experience leading up to your capstone project.
The first couple of units were fairly easy in retrospect. FizzBuzz was a good warmup, then we moved on to ArgParse with Snippets and so on. The hardest part for me was fully grasping object-oriented programming. I knew what it was referring to at a high-level but hadn’t actually used it before in any programming language. The Bicycle Shop lesson was great in helping me understand that concept. We were asked to set up a bike shop, but there were a lot of small things that we needed to keep track of… inventory, customers, costs, profit and the like. All these became classes with different attributes and methods. It really helped bring the shop together and gave me a much better understanding of Python OOP.
After the Bicycle Shop project, I moved on to Tuneful. That was a whole new world. We were asked to build a site that you could upload, download and execute files from. That was next big jump. I learned how to implement file uploads & downloads but the most important aspect that I learned was SQLAlchemy, which allows you to create a data object from a SQL query.
How did mentorship at Thinkful help you learn faster?
One thing the mentors do really well is that they don’t give you the answer. They give you a direction to get the answer. “If you do this, what do you think will happen?”. “Let’s take a step back, what are you trying to do? Why?”. It’s one thing to just know the answer to something but it’s another to actually learn how to problem-solve.
Slack was really helpful as a community of mentors and students. We have mentors we can bug at almost anytime to answer our questions. Sometimes that’ll mean walking through the problem step by step, other times they’ll share with you a specific resource or StackOverflow answer that explains the concept well.
What was the inspiration behind the scavenger hunt?
I had just finished up the course and was going to start my final project. I had started dating Rachelle at the time. We were really interested in GeoCaching. The basic idea is that you go hunting for a small object like a film canister (remember those?) and once you find it you mark it as complete, sign the paper log inside and move on to the next one. This is a phenomenal way to explore new areas. So I decided to make a scavenger hunt similar to that.
When I started building the scavenger hunt, our relationship had strengthened, so I ‘pivoted’ to a proposal that incorporates something similar to GeoCaching but is way more personalized. Since I had been playing billiards for years on a local team that she recently joined, I recruited our whole team to help her out in the hunt. They were given answers to the next step if she was stumped.
While she had no idea what I was working on, when she was given a URL to my project, she immediately got it. The good folks at Coffee meets bagel even recorded a video for me. That’s the dating site we met on and it’s also on the front page of the scavenger hunt website!
Tell us about the development behind the project.
The frontend is mainly bootstrap, with some customized grid columns. That’s one of the things I learned in the Thinkful course. It’s a very easy way to create a theme that looks professional yet is highly customizable.
It was a continual project. It started with one page, then moved to two, then three, etc… until I had about 10 pages. Using Python and Flask to pass variables back and forth was key. After I had completed the first two pages, making the remaining pages was simple.
When I felt it was ready for deployment, I used Heroku. This was another thing that we learned in Thinkful’s coursework. I used flashing messages to give the user (Rachelle) feedback on their answers or submissions.
But I realized - what if she simply didn’t know the answer or couldn’t figure out my puzzle? That’s when I decided to involve key conspirators to help her along the way. Everyone on the team, including her own sister, was jazzed about being part of this secret project. There were many times that I had to hide my screen from Rachelle as I was working on it. I’m sure she became suspicious of my nefarious activities.
After adding the co-conspirators, I wanted to add messaging to the people who were involved. The idea was to give the people helping me a clue to where she was in the puzzle. This was good because at each stage, she would meet someone and that person needed to be ready. So I used Python’s SMTP library to send SMS messages from my account to their phone.
I had done something similar as a side project. I was really proud to get that working.
When I first attempted this, I realized that I needed to keep some things private from my GitHub repository. However, I couldn’t push this to Heroku since the file that contained these variables was in my .gitignore file and therefore couldn’t be seen by Heroku. But Heroku was able to help out with environmental variables. This allowed me to set variables and use them without them being exposed to the entire world.
Finally, I wanted to give her a way to move forward in case people had emergencies and couldn’t make it. So, I added what I call cheat links. Simple links that would allow her to move on to the next step. In retrospect I should have set a timer on these after the first submission.
Now let’s get to the exciting part… what was her reaction?
She was very surprised that this was what I was working on the entire time. Very happy about it. There were things in there that were very personal and intimate. Things like where we met or our first date location. The site became a living project. Having such an intimate interaction with the project helped me realize that not only was this the perfect proposal for us, but how much I have grown as a developer and a person, and how we've developed as a couple.
Any advice for students in your position?
Overall, I learned a lot building this capstone. In the past, I would be given a task or assignment and I just had to do it. I didn’t have a project to get inspired. With the scavenger hunt, I had to put a creative spin to it.
The capstone project can be intimidating. So, I had to break down a large problem into smaller bits. Those things were not hard to do, but putting together the pieces was exhilarating. I had to do a lot of research to figure out what I needed, and I learned how to ask the right questions. I learned to be okay with saying “I don’t know”. It’s okay when you don’t know. That’s a pivotal point in learning.
You just need a project that inspires you, something to hone your creativity. Rachelle was mine. She said yes :)