February 18, 2017
The count down is on. I've officially retired from teaching, cleaned out my classroom, and am excitedly awaiting the first day of class at Galvanize. The 24-week full stack web development course commences on August 8th and, in preparation, all enrolled students have been asked to complete pre-course work. The pre-course work involves revising/learning about Mac OS X, keyboard shortcuts, Google Chrome, Slack, Atom, algebra, and completing 2 projects.
The first project is a personal website that that needs to have 2 pages: an introductory page about who I am, and a page that outlines my plans for the future. This was a pretty fun project because it was the first time I've built pages from scratch. My blog was created with a template from Start Bootstrap but, while I've made numerous changes since the day I downloaded the package, it's not quite the same as building pages from the ground up. My project is by no means perfect. I worked out how to get the layout looking the same in different browsers but, if you view the 'Who Am I?' page on your phone, you'll soon realize I'm yet to grasp responsive web design.
The second project requires students to build a Hangman game. In the lead up, I had to read the first 8 chapters of JavaScript for Kids, then use the code provided to start building the game. If you look at the end of each chapter you'll notice that there are programming challenges - a way to practice what you learned in that chapter. You'll start building the hangman game in chapter 7, make some adjustments in the programming challenges for that chapter, then adapt your game at the end of chapter 8. Students weren't asked to continue with the book past chapter 8 but I decided to work through the rest of the content because I want to enter class with a solid understanding of JS, and because I noticed there was additional Hangman content that would allow me to improve upon my game. Like my personal website, this too is far from perfect but, when my skills improve (fingers crossed!), I'll come back and weed out the bugs.
Now only days remain before class commmences. At the end of each quarter I'll cover several aspects of the course: an overview of the content that was covered, my experiences, tips, the main exercises I had to complete, and my end of quarter project.
Quarter 1
I've survived quarter 1! As promised, I will cover 4 areas at the end of each quarter: content, experiences, tips, and projects.
Content Covered:
- The Command Line
- Git and Github
- Intro to JavaScript, and JavaScript Fundamentals
- Memory Diagrams
- Intro to HTML
- Intro to CSS, and intermediate CSS
- Intro to the DOM
- JavaScript Events
- Material Design
- Web Forms
- Intro to jQuery
- jQuery Events
- HTTP
- AJAX
- User Interface Design
- Wireframing
- User Design Testing
- Scope
- Higher Order Functions
- Issue Tracking
- Linting JavaScript
- Data Modeling
- Debugging JavaScript
- Local Storage
My Experiences
The first few days of the course were pretty easy-going. I met new people, set up my laptop with all the required software, covered the importance of learning to learn, and went over the basics of the command line, and Git and Github. However, the feeling of ease did not last long. The first homework task, which involved searching through extensively large files for data using the command line, was the first indication that things were about to start getting tough. By the end of the first week, I was already sleeping a lot less than usual and was spending nearly every waking minute working on homework, revising content, and completing daily warm-ups.
The following few weeks didn't get any better. The amount of sleep I was getting decreased even more and my stress levels rose dramatically. The content was so hard and I was having so much trouble completing some of it that there were numerous times where I wondered if I had made the biggest mistake of my life. Over the first four weeks I lost count of how many times I thought I was too dumb to see the course through to the end. I felt like I was the bottom performer in the class and that I was the only one who wasn't keeping up. Everyday I was overloaded with so much content I was struggling to absorb any new information, and putting any of it into practice seemed impossible. More than once I considered throwing in the towel and, to be honest, if there wasn't so much pressure to make up for the fact that I've quit my job and am paying a fortune to be a part of the class, I probably would have. All that said, now, at the end of first quarter, I am extremely glad I'm still going.
The past week was project week and, throughout the course, our instructors warned that if would be an extremely stressful time. This was of great concern to me anytime this was mentioned as I was alread overwhelmed. Thankfully, I had the exact opposite experience. For me, project week was the most relaxed, and the most fun, of the entire first quarter. I can't say that all future project weeks will be the same but it's definitely encouraged me to not give up.
Tips
If you're thining about enrolling in a bootcamp, or are awaiting to start a class, consider the following:
- You're not alone: Even if you feel like you're at the bottom of the class, chances are, you're not - well at least not consistently anyway. I'm sure there were times when I literally was the bottom performer but, it wasn't have been for absolutely everything, even though that was how I felt. Unfortunately, it took me more than three weeks to realize I wasn't the only one struggling. Others were finding the content hard but nobody talked about it. I guess, like me, no one wanted to openly admit to their peers that they were finding the content hard. It's not easy to admit to people you barely know that you don't understand the content. It's compounded by the fact that there are students in the class who have the opposite experience - everything is a breeze for them and frequently complain that they need more of a challenge because the work is too easy! The point is, try not to let the tough moments get to you. There will be times where you will grasp concepts faster than others and, although it won't seem like it at the time, the hard stuff will get easier.
- Work with your peers: Difficult homework tasks and exercises are far easier when you work as a team. When you admit you can't do everything on your own, others will too and, when you combine the small bits of knowledge you all have, you'll be able to get things done that you may not have been able to do on your own.
- Try and get plenty of sleep: This is one I have not yet been able to do. There is so much to do that sometimes the only option is to pull late nights. However, one thing I did get better at towards the end of the course was realizing when I had hit a wall. In the early weeks, if I reached the point where I was starring vacantly at my screen, accidentally working in the wrong file, not making sense of a question, or repeatedly making the same error, I'd try and push through. I felt like I had work that needed to get done so had no other choice than to stay up into the early hours of the morning to get my homework done. However, not once did that work out well for me. If you feel like you reach the point where you have hit a wall, go to bed, or at least take a break. Come back to the work when your head is a little clearer, or set your alarm a little earlier and give it another try in the morning. Worst case scenario, you don't get your homework done and talk to your instructor when you get into class. Tell them you found it hard and get them to help you - it's what they're there for.
Exercises and Quarter 1 Project
Stoplight: This was the first exercise that required us to combine all the knowledge we had 'gained' during the week. Due to the fact that keeping up with the content was proving a challenge, I found this quite difficult. We didn't need to design the stoplight ourselves - that code was given to us. Our job was to add the functionality. Using event handlers we needed to allow the user to either click on, or hover over, 'stop', 'slow', or 'go'. As with all homework tasks there were additional challenges, such as adding a timer, but it was a stretch for me to get the basic requirements up and running.
Pixel Art Maker: The Pixel Art Maker was our first mini-project, and it was the first thing I had to build completely from scratch. Unsurprisingly, I was faced with blank screen syndrome when I first attempted to tackle the task but, thankfully, I eventually managed to overcome and got the job done. I even managed to work my way into the bonus tasks - adding a drag feature, and changing the cursor. Sadly, it is by no means responsive. It wasn't a requirement but I would've liked it to be a little more responsive than what it is.
jQuery Calculator: This was undoubtedly my least favorite homework task of the entire first quarter. Partly because I found it hard, partly because I was at a pretty low point by the end of the third week. The intensity was continuing to build, I wasn' getting even close to enough sleep, and I was doubting my decision to leave teacing and enroll in this course. I really struggled with the calculator and didn't even get all of the requirements done. Like the stoplight, the foundation was provided (I added the backgrounds in an attempt to make myself marginally more positive about the experience), we just needed to add the functionality. My calculator does most of the things it needs to do except it doesn't output decimals correctly for division problems, and outputs infinity when you divide by zero.
Galvanize Delivers: For this mini-project, we were given a mock up of the site which we needed to replicate. I struggled a little with the CSS on this one but found functionality of the checkout page very challenging. Calculating the cost of the items as they were added to the list was like working with the calculator all over again so, as you can imagine, I didn't enjoy that portion of the task very much. Also, like the calculator, I fell short of meeting the requirements. If you leave the form blank and try and submit your all, a toast will appear telling you that the fields cannot be left blank. I was supposed to have a similar feature up and running if no food items were added to the cart but was unable to meet this criteria. Something that was an extra which I would've loved to do was to increase the quantity of an item if more than one was added to the cart, as opposed to having the list grow down the page.
Ajax Hero: This was the first task that involved the use of an API. APIs are definitely a very powerful tool but not always the easiest to work with so, as-per-usual, this was a battle. I got the basics up and running - you can enter a title of a movie and the corresponding posters will display on the page below but didn't complete the bonus task of adding the plot synopsis.
Gific: At the start of the fourth week we were instructed to start brainstorming ideas for our first project and, by the end of the week, we had to submit two proposals. The application I made is called Gific, which is an interactive comic strip maker that pulls gifs from the Giphy API. You can randomly generate a title or enter your own, type in keywords or phrases to search for gifs or randomly generate one, and enter text under each gif. If you hit save you'll be alerted that your Gific-strip has been saved but, at this present point in time, you won't be able to retrieve your wonderful creation as I have only set it up to save to local storage. Saving to a gallery is a feature I hope to add in the future, along with a text-to-speech feature so you can have your Gific read to you.
Quarter 2
Content Covered:
- Node.js Filesystem
- Node.js HTTP Server
- Express HTTP Server
- RESTful Express HTTP Server
- Node.js Modules
- PostgreSQL
- SQL
- Entity Relationships
- Knex.js
- Indexes
- Knex Migrations and Seeds
- Express and Knex
- User Registration
- Heroku Deployment
- Promises
- Automated JavaScript Testing
- Server-side Validation
My Experiences
The first two weeks felt pretty easy, which gave me a false sense of security. Homework aligned really well with the content from the day's lesson and, by working with several peers, we were able to overcome any problems pretty quickly. Then along came week three, where we were required to tie the concepts from the first two weeks - servers and databases - together.
I understood (or so I thought) the lectures and homework about servers and databases so I, naively, thought combining the two together would be straight forward. However, it turned out to be a lot more challenging than anticipated. I still cringe when I hear the name of that week's assignment, 'Galvanize Bookshelf'. I didn't mind it at the start of the week but definitely wasn't a fan of it by the end. The worst part is that it keeps coming back to haunt me. We had to revisit it the following week and now, I'm studying the structure to make sure I have a solid understanding before quarter three commences.
At the end of that same week, myself and another student decided to pair up for the upcoming project. We decided to work on an Alexa skill which, at the time seemed far more simple than it turned out to be. What was meant to be something we worked on for a week, ended up being something we worked on for about two and a half weeks. There were a lot of late nights and a multitude of moments where we felt like our work wasn't going to come together in time for presentation day but, thankfully, we managed to pull it off just in the nick of time. It was certainly a very different experience to my Q1 project.
Tips
- Don't rush too far ahead with the homework: One day I forked and cloned homework in the morning but the instructors made a few changes to it during the day. This meant, when I did the homework, I was missing some of the content. Even though it was only one question I was missing, it meant my test cases were wrong and several other aspects needed to be adjusted. One other woman in the class had actually completed most of the homework for the week over the weekend. She ended up with twice the amount of work. Doing homework ahead of time may help you feel like you're getting ahead of the curve, but having extra homework is not something you want when you're already struggling to find time to complete work.
- Take a break: This is a do-what-I-say tip. I keep telling myself it's something I need to do but, while I think I've made small steps in the right direction, it's by no means a strength of mine at this point in time. I have a bad habit of convincing myself, that if I just keep pushing the boulder up the hill for a few more minutes, I'll get it to the top. Next thing I know, I've time traveled minutes or hours into the future and I'm still in exactly the same spot, only I feel far more frustrated and stressed. Going for a walk, or going to get a coffee, seems to give me enough time to disconnect and feel a little less tense. Figure out what it is that helps you disconnect, and do it whenever you feel like your chasing your tail.
- Rubber duck it: This isn't something I've made up. Rubber ducking is a real thing. In Q1 I knew of it's existence - even went as far to buy rubber ducks for the class - but I had never done it before. While working on my Q2 project however, I came to appreciate the power of rubber duck debugging. Sometimes I would spend hours trying to find a bug but it wasn't until I explained what I was trying to do to someone else, that I found what I was looking for.
- If you're a Windows supporter, be prepared of the possibility of crossing to the dark side: One day after class, while I was at home working on something, I had a thought I'll never forget, 'I think I like Mac more than Windows.' This was a hard thing for to admit, even to myself. I've always been an avid Windows user. So much so that, when I bought a MacBook Air six years ago - purely because I liked the exterior design and weight - I had the Mac operating system overridden and replaced with Windows. Now, a few months into spending most of my time on a Mac, I have grown to prefer it. Using a Windows device now just feels foreign and strange. It still hurts to talk about it so let's move on.
- Invest in Red Bull: My husband is a programmer and, when I decided to enroll in this course, he told me I needed to stock up on Red Bull. The only time I'd previously had Red Bull was when it was accompanied by vodka, something I didn't think would support my learning, so I decided it was best to ignore him. However, after working many late nights and struggling to keep my eyes open, I added Red Bull to my shopping list. At the end of project week I emptied small trash can I keep by my desk and out came four emply Red Bull cans. I know this advice goes against my 'try to get plenty of sleep' tip from Q1 but sometimes you just have to get shit done.
- Pick a project partner you work well with: Of course, you can only do this if your instructor allows you to choose but, if you have the option, take advantage and make a wise choice. I was fortunate enough to work with someone who thinks in a very similar way to myself, that I get along really well with, and who was able to make light of the many stressful moments we experienced. Not all pairs were as fortunate as us and some conflict arose. When working on projects, added and unnecessary stress is something you want to avoid.
- Take your own advice: Of course, this doesn't always work out the way you'd hope but, if you have done something in the past and you know it works, then it's highly probable it will again. As I mentioned in my description for my quarter 1 project, I had a lot of fun and experienced minimal stress. In the early weeks of quarter 2, a peer mentioned that she liked how relaxed I was during our first project and said she would like to feel that way for her next project. She went on to say that she had tried to add too many features and it all became a little too much. So I told her the thing that really helped me when building my first project was to keep the functionality simple at the start and then build on top of that, instead of trying to achieve grand plans right off the bat. This was a strategy that I knew, from experience, worked. Yet, it was as far from what I ended up doing as it possibly could've been. Don't get me wrong, I enjoyed working on my Q2 project, and am happy with the finished product, but it. was. tough.
Assignments and Quarter 2 Project
Pet Shop: Node Filesystem: Sadly there are no pretty screen shots to accompany this project or the one that follows, merely a brief overview of what was required. In quarter 1, we were given daily homework that correlated with the day's content, but was entirely separate from the previous day or the day after, followed by a painful weekend assignment. This quarter there were no weekend projects (phew!). Instead, the homework that was given each day not only expanded upon what we learned that day, it built up over the course of the week. Pet Shop had four parts: Node filesystem, Node HTTP server, Express HTTP server, and RESTful HTTP server. The process allowed us to see how a server would be built with and without the wonders of npm packages.
PostgreSQL Fundamentals: Same deal as Pet Shop but this time the focus was on building a database. On day one we created tables for a database, day two we practiced manipulating data in tables, day three we worked on combining table data, and we wrapped up the week with Knex.js.
Galvanize Bookshelf: This assignment was the culmination of what we learned during the first two weeks, with a whole lot of complexity tossed into the mix. As I mentioned earlier in this post, combining server and database was harder than I had expected, but it wasn't what I struggled with the most. Wednesday, week three, we were introduced to user registration and on Thursday, user authentication. They may not sound scary, but they are. Well, at least they were. Apparently the format is always the same so what I now have can be reused. Just don't ask me explain it to you. You're on your own with that one.
Event Board: After a very short discussion with my project partner, Carolyn Kunz we decided that we would work on an Alexa skill for our quarter two project. The skill we built could be potentially used during morning stand up in Galvanize classrooms. Users can select any city were a Galvanize campus is located, and specifiy whether they are in a data science or web development class. First our server, which is running on Heroku, is queried to gather data about topics relevant to the curriculum for each class. A call is then made to the Meetup API for the next five events coming up in the chosen city.
Quarter 3
Content Covered:
In Q3 there we learned AngularJS and ReactJS. The content covered for each includes:
- AngularJS: controllers, views, services, digest cycle, UI router, custom directives, and $http.
- ReactJS: tools, synthetic events, stateful and stateless components component lifecycle, React router, Material UI, and immutable data models.
My Experiences
Although there were days when I experienced the overwhelming feeling I have come to know only too well during the past four months, I have to say that quarter 3 was the easiest so far. Not in the sense that I found the content easy and I was breezing through, easy in the sense that it was the first time since starting the course that I started to feel grounded.
Throughout the first two quarters I experienced brief glimmers of hope that I was on my way to becoming a successful and independent programmer. Sadly, as the rollercoaster proceeded, those feelings were superceeded by self-doubt and uncertainty. During Q3 I began to notice that some of the things I had previously struggled with were becoming easier, and some things I could do without giving them a second thought. I'm still far from being the poster child of confidence, but quarter 3 helped push me in the right direction.
Tips
- Don't freak out when the instructors loosen the reigns: At the start of the course the instructors told all of us that the first quarter would be lecture heavy, with some independent time, and that this ratio would shift over time: lecture time would decrease, and self-guided work would increase. Yet, for some reason, when this started happening in quarter 3, some students seemed to be put off by the change in the class structure. If you're planning on joining a Galvanize class, or are already enrolled, understand that this is something that will happen. Your time as a student will be gone in the blink of an eye and when you're unleashed into the real world, your instructors aren't going to follow you and hold your hand. The first two quarters are designed to set you up with the skills to fish for knowledge you have not yet obtained - something that is an essential programming skill. The instructors will still be around to support you, but you will need to start learning to cross the street by yourself.
- Keep bragging to a minimum: If you happen to be one of the lucky few who enter the course with enough experience to find the majority of the content simple, try to remember that you are the minority. Most of the people around you have dark days, and some of those people, myself included, feel like they are barely breaking through to the surface on a good day. Constantly dropping how simple the work is and how your days are filled with your awesomeness and all additional things you are learning, only leads to your feeling better about yourself, and others feeling worse.
- Give honest feedback: Every other week Galvanize students are asked to complete feedback where they review the performance of the lecturers, the content that was taught, and how they think they are progressing personally. What makes this process hard is that it is not anonymous. The instructors all read what everyone writes. When I discovered this back in Q1, it definitely took the wind out of my honesty sails and prompted me to tread lightly when completing my reviews. The reality is, the lecturers are all professional so if you have constructive feedback to give, make sure you relay your thoughts to them. If there is something that you feel could be improved, it is unlikely it will happen if you're just sending along smiles and praises.
- Document your journey: It is only now, at the start of quarter 4, that I am truly grateful that I created my blog when I first started learning to program and, more specifically, this post when I started the web dev class at Galvanize. If you want proof of how much you've learned, in my opinion, writing down your progress is one of the best ways to keep track of where you are at and where you came from.
Assignments and Quarter 3 Project
SnapShop - AngularJS & Bootstrap: The first two weeks of quarter 3 were spent learning Angular JS, which is a structural framework used to make dynamic webpages. To demonstrate our understanding of the framework we were asked to build an e-commerce site that sells cameras. We were given a basic wireframe on day one then, over the course of the two Angular weeks, had to add: directives and filters, controllers, services, routing, custom directives, and finish it off by connecting to the server.
Looking at the screenshot below of my homepage, you may notice that this isn't your typical-looking camera store. The great thing about my instructors is that they are pretty easygoing so, as long as you show you understand the concepts and meet criteria, you are free to design your project as you please. When I feel overwhelmed, I like to counteract that by making the work I am doing as enjoyable as possible which, if given the leeway, tends to lead to the ridiculous and absurd.
I began by searching for images on one of my favorite sites to get high quality images for projects, Gratisography. Gratisography has lots of fun and comical images that definitely tickle my sense of humor. I didn't intentionally go in search of people wearing animal costumes. It just happened that way. Promise.
If you decide to check out the site, and make it through to the catalog page, you will be able to search for cameras, or sort by name and price. Rating 'technically' works because every camera in my store has 4 stars (ignore the number, just trust the stars), and on sale, well, that just straight up doesn't work. You can add items to your cart and, if you click on the cart, a modal will pop up, allowing you to edit your cart items.
If you decide to go ahead and buy one of my 4-star cameras, you'll discover you will be redirected to login, if you haven't already done so. Unfortunately, you won't be able to login via Facebook or Twitter, despite the fact there are buttons there indicating that you can. I only learned about OAuth yesterday (day 2 q4) so in SnapShop they serve no other purpose than looking pretty. If you're a first time visitor, you can make your way on over to the signup page.
Once you're logged in, you'll be able to proceed to the checkout page. If you hit the checkout button, you'll see a payment modal pop-up. Like the social buttons, this is there for design purposes only.
Oddities- ReactJS & Flexbox
At the start of the third week of Q3 we began learning ReactJS, which is a flexible JavaScript library that allows developers to build user interfaces. As we were coming up on Thanksgiving, we had to cram React into seven class days, so this project was intended to be a React version of SnapShop, but on a much smaller scale. We weren't expected to build this project out as much as the previous one, simply show that we could replicate the main features we built in SnapShop, using React in place of Angular. We were required to struture our app with stateful and stateless components, use synthetic event handlers, and manipulate components throughout the component lifecycle.
This project was originally called React Camera View but after two weeks of living and breathing SnapShop, I couldn't stand to look at another camera. Thus, Oddities was born.
The functionality of Oddities is pretty basic. You can add items to the cart, adjust the quantity, remove them, search, and sort. The checkout button redirects you to a larger version of the cart from the catalog page, where your short journey in the Oddities store will come to an end.
Refined - ReactJS & Skeleton:
Luckily for me, when I proposed the idea of building an app based on mustaches and beards, my project partner Madeleine Huish was happy to pick it up and run with it. Inspired by Movember, my original idea was to build an app that provided styling guides and advice to men looking to style their facial hair. It soon turned into an e-commerce store so, because we had worked on two e-commerce apps previously, we decided to build out the features as much as possible. There are still a few things we need to complete, some bugs that need to be ironed out, and the responsiveness is a work in progress, but overall, we are happy with what we created in a week.
If you take a course at Galvanize, your instructors will most likely tell you that when working on a project with a partner, you should try and share the back and front ends, trying to divide both sides equally. This is a tip we would have liked to follow but I have a strong preference for client-side, while Madeleine has a strong preference for server-side. We divided the functionality, but Madeleine ended up building out most of the backend, and I designed the frontend.
A few things we would like to get up and running on the homepage include: a real map instead of a hard-coded image, tweaking the CSS, and adapting the current design of the image panel to improve UX.
If you are checking out the site, when you get to the product page you'll find much of the same functionality present in my previous two projects but, after you add an item to the cart, you'll be redirected to the cart, where you can adjust the quanity or remove your items.
Sadly, one of the features we were really close to getting up and running is the product modal. The modal works but if you're trying to click on different products you may quickly discover the problem we are yet to resolve.
Unlike SnapShop, you can go through the entire checkout process without needing to create an account. Users will all go through three sections during checkout: customer information, shipping, and payment, the only difference being that users who are not logged in will need to enter an email address in the customer information section.
When you enter a zipcode in the customer form, you'll notice that the tax will update based what you entered. To get this feature up-and-running, we used the Avalara API. For the payment section we used the Stripe API, which allows developers to test credit card validation. Nothing magical will happen on your end if, for some reason, you decide to enter your credit card details, but when we enter the details for the test credit card, my partner's Stripe account receives an update with the amount that was charged to the card.
The checkout section is definitely the part of our site that needs to most work. We need to make shipping free if the user makes a purchase over $50, allow the user to enter a different billing address, make sure that users who are logged in don't need to fill out the customer information form, and alert the user if there is a problem with their credit cart details.
If you do choose to create an account, you will be automatically logged in and will have access to a user's page which, along with the style guides, is still under construction.
Quarter 4
Content Covered:
- Automated JavaScript Testing
- OAuth
- Integration Testing
- JavaScript Object Model in ES5
- Intro to Algorithms
- Big O Notation
- Search Algorithms
- Intro to Data Structures
- Intro to Sorting Algorithms
- Hash Tables
- Recursion with JavaScript
- Stacks and Queues
- Intro to Memory
- Pointers
- Binary, ASCII, and UTF-8
- Advanced Sorting
- Trees / DFS / BFS
- Graphs
My Experiences
Entering quarter 4 I was definitely amazed at how close I was to the finish line, and felt extremely daunted that in a matter of weeks, I would need to start looking for a job. The pressure was on to build my capstone project, while also trying to learn the fundamentals of computer science - something that definitely takes more than 2-3 weeks to master.
Due to the Christmas holidays the structure of the final quarter was a little odd for my class. We had a week of computer science, a week to work on our capstones, a week off for Christmas break, another week to work on capstones, then a week and a half of computer science. Computer science is vitally important knowledge for any software developer but, aside from the fact that it is pretty complex topic, trying to focus on it, knowing that my capstone project was looming, was not an easy task. And it wasn't any easier post capstone presentations. Being in class after the capstone showcase and trying to stay motivated was a challenge.
One of the most positive things that came out of the final quarter for me were the interactions between everyone in the class. My class, g34, certainly had some ups and downs throughout the six months. In quarter 1, everyone was new, trying to find their feet, and slowly getting to know each other. Quarter 2 was a throwback to high school with people talking about each other behind their backs and doing things that, well, high school students would do. Quarter 3 people started to work together more cohesively, then in quarter 4, everyone became friends and any animosity that lingered simply went away.
Another positive thing that happened during the final quarter was that I learned to love presenting. Prior to Galvanize I had always hated giving presentations. Standing at the front of a room with all eyes on me had a tendency to turn me into a big sweaty, quivering mess and, each presentation I delivered was just as nerve-wracking as the previous one. However, prior to life at Galvanize, the frequency at which I presented to an audience was low. As a web dev student I was expected to deliver a presenation twice each quarter - a lightning talk and my quarterly project. Regularly speaking in front of an audience turned a fear into something I enjoy. The nerves were still there but dropped from a 10 to about a 2.
Tips
- Computer science: as I said, trying to focus on the comp sci content was not easy when all you can think about is your capstone, but try your best to stay focused. You'll soon be entering a market where interviewers like to ask technical questions and want to see at least some understanding of the topic. If you have a chance during or before the course, try to at least familiarize yourself with it a little. A group of people from my class spent some time working through a book called earlier in the course. If you are new to computer science and want to dip your toes in the water, I recommend taking a look at this book. The explanations and examples are really clear and straightforward, and it's filled with lots of fun illustrations that help break up the text.
- Buy yourself a whiteboard: In the second last week of the course, my husband bought a whiteboard for our home office to celebrate me making it through to the end. Some companies may not ask you to solve technical questions on a whiteboard but, from what I've heard, those companies are few and far between. Having a whiteboard of your own, and walking through the whole interview process from start to finish, can seriously improve your confidence in an interview. In the final week of the web dev course I interviewed for the Microsoft LEAP program. I wasn't successful getting into the course but I think my experience would've been a lot different if I hadn't practiced on my home whiteboard beforehand. Technical interviews have been something I have feared from the get-go but, because I'd spent hours going through the process at home, I wasn't a nervous mess the day of the interview. If a wall-mounted whiteboard isn't a possibility, try buying a mini whiteboard or, in the very least, go through the interview process on a piece of paper.
- When planning your capstone project, don't go crazy with new tech: Our lead instructor suggested an 80:20 ratio - 80% tech that you know, 20% new tech. I thought that sounded like a perfectly reasonable idea but I think mine ended up being more like 60:40. This meant I ended up spending far more time trying to learn and understand the new technologies I'd chosen, and no where near enough time on the site's design. Remember, you're time to build your projects is limited so evaluate your chosen tech stack carefully.
- Meetups: Throughout the course your career coach and instructors will encourage you (numerous times) to go to as many Meetups as you can so you can network. If you don't do this, don’t worry and don't feel bad. I would've loved to go to far more Meetups than I did during my six months at Galvanize but it simply wasn't something I had the headspace for during the course. When I did go to one, no matter how interesting the Meetup was, if I was stressed out knowing that I don't have to go home to work into the wee hours of the morning on an assignment or homework, my networking skills went out the window. Now that I've graduated I've significantly increased the number of Meetups I go to and am loving the opportunity to network and connect with people in the tech community.
- Applying for jobs: Another thing your instructors and career coach will tell you is that if you want a job as soon as you graduate, to start applying 1-2 months before the course ends. Again, if you don't do this, don't worry. There was absolutely no way that I would've been capable of walking into an interview and trying to solve a technical problem a few months ago. If you feel you're ready, go for it, otherwise, wait until the course is over then focus your energy into applying for jobs. Being unemployed after graduation, and having to spend a few months job hunting, isn't the end of the world.
- Capstone showcase - don't expect to get a job: This may be the opposite of what you want to hear but it's important to be realistic. Throughout the course there is a lot of talk about the capstone showcase and you'll probably feel like everything you're doing is leading up to the 'big day'. Sorry to be the bearer of bad news, but the chance of you getting a job offer that day is slim to none. No one in my class got any offers, and hiring rates from past courses have been minimal. This is by no means a reflection of the quality of capstone projects, but rather a result of a lack of attendance of companies looking to hire bootcamp grads. Most of the people who came to watch our presentations were current students, previous students, students who had enrolled for the following cohort, and Galvanize staff. The networking I got to do at the end wasn't with potential employers as I had envisioned, it was with the students who were starting the course soon and wanted to know what they should expect. However, just like I said in my tip about applying for jobs, don't fret, you'll get a job in the months after graduation.
Capstone Project
For my final project I decided to build a project called Run Fido that allows users to search for dog parks within a given area. I decided to build this application because I have a dog and often take him to parks. There are sites in existence that allow you to carry out this same task but they also have a lot of other features I don't need. I wanted a site that focused solely on locating parks.
Current Features:
- Google Maps Geolocation API allows users to decide if they would like to application to pinpoint their current location.
- Users can enter a location they would like to search.
- Results render to the following page with an image of the park, current rating, and park name. There is also a map that marks the location of the results.
- If a user clicks on a park they are redirected to a page that provides more information about the park including address, description, park reviews, and any images that have been uploaded. There is also a link to the Google Maps page with the selected park marked on the map and, if the park has a website, a link to the site.
- Users can signup for an account. This allows them to write park reviews and upload images that are stored on the Cloudinary cloud.
Technologies Used:
- Redux
- ReactJS
- Skeleton
- Webpack
- Node.js
- Express.js
- Knex.js
- PostgreSQL
Now you may be wondering why there is no link to the site or screenshots of the application. My goal for my capstone project was to build an application that was above and beyond anything I had previously built during my time at Galvanize. Unfortunately, it didn't meet the standard I had set for myself. My project was finished and functioning on the day of the showcase but it wasn't even close to what I had hoped to build. I spent far too much time learning new and unfamiliar tech, and no where near enough time on the design of the site. As a result of this, I've decided that I am going to rebuild the client side of my application. It's currently a little bit of a sore spot for me so I'm not ready to start working on it again at this point in time but I've bought myself an official domain name for the site and plan of having it up and running sometime this year.
Overall Experience as a Web Development Student at Galvanize
If you've read this entire post you know that my six months at Galvanize wasn't smooth sailing. There were ups and downs, tears and celebrations, moments where I questioned my position in the class, and moments where I was certain I had made the right choice. My time as a student at Galvanize were some of the toughest months of my life. The learning curve for me was steep and the content came hard and fast but it was one of the best things I have ever done. I entered the full-stack web development course as an elementary teacher and came out a software developer, and I couldn't be happier.
...