It’s the end of week 6, and we are in the thick of our starting and/or working on the final project. It could be called a type of thesis, and as I mentioned in a previous post, it has caused a lot of excitement over what to do for a variety of reasons. This post is to covey two main points: what I’m doing and key points to get started.
My classmate, Kelley, wrote a great post on her experience and challenge with choosing a project, which I can definitely relate to. Figuring out what to do and putting a stake in the ground with so many ideas is not easy.
The concepts from our class have run the gambit from Gulnara’s focus on developing a new programming language to Lindsay’s work on automating text mining from scientific journals. Many of us are targeting web applications and/or a data analytics tools with very different goals in mind.
In the interest of time, I have shifted my initial plan from using the Arduino and Raspberry Pi despite my desire to learn the technology. We have about 3 weeks before we present at Career Day, and faced with that reality, I am targeting a web application to really solidify what I have learned regarding the LAMP stack. If there is time I may try to leverage the Raspberry Pi to expand functionality, and if not then there is always personal projects after the program.
The idea for my project came from trying to figure out where to get some sun during a hike last weekend. Living in SF, the weather can be tricky from neighborhood to neighborhood let alone where you are in relation to the bay. This is a very Bay Area centric issue, and I’m fine with sticking to that scope (for now).
Most weather sites already cover this in one form or another, and I’m sure someone has done or is already doing my project. Still I want to make a solution that quickly answers the question I have when going for a hike. Also to note, Hackbright encourages us to recreate solutions that exist from a purely academic perspective (we are here to learn).
I plan to continue to post on the experience as well as publish my progress on Github.
Last point for anyone interested, this idea is different from what I used in my application to Hackbright, and I think about 80 to 90% of the rest of the class is doing something different than what they applied with.
How to Start
- Set a goal
“When deciding on a project, figure out a question you are trying to answer or problem you are trying to solve.” – Christian
This quote really helps set the stage on how to find a project as well as to keep perspective on what you are trying to accomplish. If you are trying to figure out how to get ideas, look around you during the day and think about things that could be done differently or better through technology. If there is a technology and/or concept you want to thoroughly understand, this is a great way to recreate and practice it. One main point that we hear time and time again is to do something you enjoy because that will motivate you to learn.
- Think about the audience
While trying to define what you want to do, keep in mind who the main audience is and how you will use this application. Usually, you want to think about who will use the application and/or who will buy it. For most of the students, it’s about having something to showcase our skills on Career Day to an audience of engineers looking to hire. Additionally, this is about the learning experience and leveraging the resources we have at school. You can have other audiences or Career Day does not have to be a focus for you. Just make sure you are clear on who you are really producing this project for and what you want to get out of it.
- Keep time and scope in mind
We’ve heard that most students up to this point didn’t finish their project. Meaning it wasn’t fully executed to the extent that they planned. They all did finish their projects to the point of having a solution to present at Career Day. What finished means can be debatable. You may have a passion for a concept, but if you find that its too ambitious for the timeframe, be open to scaling it back to accomplish the real purpose of the project. Don’t let your ego get in the way of being able to deliver for the underlying purpose.
- Make a plan
We were asked to first plan our project before doing any coding. Planning is key to breaking down the problem you are tackling into digestible pieces. This means research, wire-frames and pseudocode. My mentor recommended a couple online wireframe tools (Keynote Kung-Fu, Mockingbird, Balsamiq), and several students just used the back-to-basic pencil and paper solution. I did use the trial-version of Balsamic for my wireframes, and really enjoyed the ease of it. They are not paying me to post this, and I didn’t try the other options; thus can’t compare. The main goal of this point is that you need to make a plan so you can break the challenge into small enough steps for work to begin.
Don’t ‘boil the ocean’ with the plan. Its so easy to get lost in in the details of planning and never get started. I even got so into my wireframes this week that I made lots of notes of things I’d like to do in future versions. Its important to be aware when you have enough planned out to get started, and you can always come back to continue refining later. If you are still not sure where to start, the instructors and your cohort are very helpful on giving pointers. Just start somewhere.
- Manage time
If you are able to plan out milestones and activities for each week or day when planning your project, knock yourself out. For most, I would recommend keeping the presentation date in mind and target to have the core of the project work largely done a few days before. This means plan to stop working on any major functionality additions or changes. Give yourself a couple days so you have time for tweaks and getting it ready to show as well as to practice your presentation.
- Be very flexible
Flexibility is a valuable skill to learn and with any project, it will almost never go according to plan. I’m pretty sure I have yet to see any project I’ve been a part of and/or planned, go exactly as expected. The key to success here is the ability to adjust and to do it quickly. This is when a goal keeps you sane. As long as you know what you are going after, you can stay focused on it and figure out how to get there while accounting for challenges.
The points above are take-aways from working on this project so far as well as experience with projects in general. A blank canvas can debilitating at times but it is surmountable.