I started writing this when I was halfway through capstone month at Ada, and I am just now finishing it post-capstone (and posting it almost two months later). I just presented yesterday – so I am officially done with capstones and I will start my internship at Avvo in just over a week! Here is a video of my Capstone presentation that I made for family, since they are all far away and wouldn’t have been able to see it otherwise: Rachel’s Capstone. For capstones we have a month to build our own project from scratch, including learning several brand new technologies and one new programming language. I chose to learn Swift/XCode for my front-end with Realm as my backend. Swift is a programming language that Apple developers made specifically for iOS, and Xcode is a development environment made by Apple. I also learned how to use iOS Charts for data visualization. For my project, I built an iOS app for habit tracking and goal-setting (based on my CHERPAS system – see blog post about that here: http://mycinqminutes.com/cherpas-a-life-of-action/). Pretty much everything else I’ve done (at Ada or otherwise) feels like a walk in the park compared to the intensity of this past month.
Before Capstone month started, we submitted a project proposal and a project plan, including things like user stories (e.g., Users should be able to enter their tasks and mark them as complete), market research (looking at similar apps and what they offer/what they don’t offer), and features we hoped to include in our app. Then on day one, we launched into designing and building our apps. The first week was so stressful and overwhelming. Where before, we had a month or even two months to develop comfort in a language, we now had maybe 3-4 days before we had to jump into building our projects. We also had little to no experience making design decisions, and this was challenging for many of us as well. It is tricky to figure out how to actually implement something in code, because the ways you can approach a project are endless and have huge implications for how you are able to scale your project up in the future (e.g., how easy it is to modify or add to it if you decide on a feature change down the road). We all took various amounts of time to ramp up that first week, but I think it was always in the back of our minds that the longer we spent watching tutorials, the less time we would have to actually build our app. I tried to jump into my app on day 2. Then I scrapped it and jumped in again on day 3. Then I scrapped it again and started over on day 4. This was amidst watching many tutorials on Swift, XCode and Realm and continually debating whether I made a huge mistake choosing so many new technologies for my project. This panic over time made me frenetically jump around from tutorial to tutorial, feeling like I didn’t have the time to develop a full understanding of the code or design – I just had to find specific tutorials for specific features I wanted to implement in my app. This was a mistake.
If you are reading this as a current or future Adie, I would highly recommend that you give yourself some grace that first week and spend more time on up-front design and learning (e.g., watch some general tutorials and then some specific ones for certain large features you want in your app, build your Entity Relationship Diagram for your model, pseudocode some of the classes and models you plan to use), even if you see others with more actual progress on the capstone project, because this up front time will make your life so much easier in the end. It will allow you to visualize your project and hopefully avoid backing yourself into a corner with the code you write/design you implement. I initially tried to piece together information from several different tutorials into my project, because it seemed like the most straightforward way. I built these features while watching the tutorials for the first time, and then I realized that the way I built one feature actually made it impossible to move forward with a couple of the other features I wanted in the future. Or in one case, I had implemented something from a tutorial because I wanted to do something similar, and I realized that even though the two tasks were similar, I would have to code it in a completely different way to get the functionality I needed. Some of these design difficulties are inevitable no matter how strong you are in a language or framework, but some of them are preventable, or at least that is what I realized for myself.
Homepage of my iOS app
One of my wireframes for my project
One of the graphs available to users of this app
Thankfully, my sister-in-law and I anticipated that week one would be rough, and we scheduled a spa day for that Saturday. I so badly needed it – we spent like six hours getting a massage and pedicure, soaking in hot tubs, reading, taking naps in saunas, and visiting. It was worth every penny of that money I don’t really have right now. Thank you, dear credit card. This is another recommendation I have for future Adies – take care of yourself over this month – whatever that means for you. Some students chose to work over the weekends and in the evenings and some didn’t work outside of Ada time at all – this varied a lot from person to person and is definitely a personal choice. For some, this actually eased stress because you make a lot of progress and feel like you are on top of the project. For others, it drains you to the point of illness. We are also given leeway in our schedules during this month – our core hours were 10-3:30, and outside of that time we were allowed to work from home. I am able to be productive from home, and I tend to get distracted when working on projects around a lot of other people, so I stuck to those core hours fairly closely. Others knew they wouldn’t be productive at home, so they stayed at Ada for much longer hours. I also know that I need to have time to recharge and I need to feel like I still have some semblance of routine in my life. So I built in time every evening to read lighter fantasy novels, I made myself run twice a week and do yoga several times a week, and I scheduled a couple of relaxing weekend activities. I tried my best not to crowd my evenings and weekends with social activities, because I know those can be draining for me. I engaged in my self-care routine a couple of times. All of these practices helped keep me sane amidst the stress of capstones.
Weeks two and three were much smoother for me. My teacher, Jamie, gave me some great advice at the end of week 1 that I think really shaped how I approached the rest of my project. First, let me give some background. We had the opportunity to see some Adies from the previous cohort give practice presentations toward the beginning of our time at Ada. It was so awe-inspiring and exciting to see what Adies had accomplished, and I think the pressure to match the quality of these projects loomed large as we dove into our own capstones months later. I brought this up in a 1-1 with Jamie, and she said that I needed to remember that these were presentations showcasing all of the best parts of a project. She pointed out that many of these students had buttons, features, pages, and core functionality that didn’t actually work at the time of their presentation, and that they just didn’t click on that non-functional button or show off that non-existent feature during their presentation. The goal isn’t to have a shippable project – it is to have something to present and to be able to talk about what you learned from the Capstone experience in a reflective way. Refinements and improvements and bug fixes can all be made down the road, prior to adding the Capstone project to an actual portfolio. This took off a lot of the pressure I was feeling and allowed me to continually come back to my core MVP features and ask myself what was most important for me to show off at my presentation. In the end, I had everything I had originally wanted in my project, but I did it without this sense of extreme pressure that I felt during week 1.
By week four, I had my MVP complete and I was able to work on adding additional features, improving the overall look of my project, and prepping for my presentation. If you are an Adie and don’t get to this point before week 4, try not to stress too much about it. Everyone chooses projects of different sizes and complexity and experiences different roadblocks along the way – the key is that you are learning along the way and that you have something to share by Friday of that last week. If you don’t have tests, that is okay. If your idea for a backend totally fails you, that is okay. Take deep breaths and give it your best. I had some difficult personal issues come up on Monday of that week, so I was very thankful that I had an MVP already. It allowed me to clear my mind and took off some of the pressure I felt in previous weeks. In that last week, I added the ability to choose from recently selected tasks, a graph to view the percentage of completed tasks in each area, and also a page where recently completed monthly goals and yearly goals appear so that a user can see their progress.
So, I am done with capstones! After my presentation, I experienced a very brief feeling of relief and sense of accomplishment, and also had a week to relax with my family, prior to jumping into my internship at Avvo. I’m so glad they give us a week in between capstones and internship – it was absolutely necessary for me to rebalance and prepare for another mental shift! Stay tuned for a couple of posts about my internship experience.