It’s been two weeks since the WDI course finished and I thought I’d take the time to write a recap post.

Looking back, WDI was an amazing and life changing experience and I don’t regret a single day of it. I think it was possibly also the hardest thing that I’ve ever done. Yet I would recommend a dev bootcamp to anyone who is thinking about becoming a programmer. Ideally a bootcamp with Michael as the instructor because I can’t emphasise enough what a fantastic teacher he is.

I think my most important take-aways from WDI weren’t Ruby or Rails or JavaScript but it was learning how to think like a programmer and how to teach myself new programming languages or frameworks.

And I met some amazing people who were all willing to give up their lives for three months to go through this crazy process to come out the other end a full stack developer.

And the even more amazing people who were willing to teach some total n00bs what programming is all about. Who didn’t get annoyed when they got blank looks, were shouted at (“what’s the point?”), constantly asked about the next coffee break or hipchatted from students in despair over their homework on a Sunday evening.

I made some great friends. Only they understand what I’ve been through because they did it themselves. No one else can truly understand.

The first weeks were the hardest as the pace of the course was incredibly fast while I was used to a cushy 9 to 5 life. But there was no time to slowly adjust my brain to this flood of information or to go over the notes again in my own time because the next challenge was already waiting. No breathing time, just sink or swim.

I wasn’t sleeping very well because my brain was constantly active. I woke up during most nights with error messages and Ruby code spinning around in my head and struggling to go back to sleep.

For me personally the height of the struggle was project 1: Tic Tac Toe on Rails. I picked this project because I couldn’t even begin to imagine how to do it and I wanted to learn. Well, now I know how to do it. But it was a painful process. Not only was I not getting anywhere with my code but the instructors were putting the pressure on by setting goals that I wasn’t achieving, so I was really stressed. But looking back, I think this was a really important week for me, where I learnt an incredible amount. The wonderful Jarkyn, one of our TAs, sat with me and we figured the Ruby game logic out together. It helped me so much to see how a developer approaches a problem like that and her incredible display of tenacity and determination to get this working was a real inspiration for me.

Then it was time for Christmas holidays and I was so proud of my app that I added more features and showed it to everyone. A lot of my friends actually signed up for it and played! Bless them. And my work on the app won me an exclusive lunch date with our careers advisor. Double win!

Coming back after Christmas it was JavaScript week. Once again the speed at which we were taught was extremely high. And so was the confusion for a lot of us.

The next highlight was the week long group project where I had the opportunity to strengthen French-German relationships and build a Dog Dating website. It was fun and although I had been using Git and Github for a while, this was the first time that I truly understood the purpose of having different branches and how to collaborate on a code project.

Then came the 24 hour hackathon during which I built what is still my favourite app out of all of them: the Deutschen Ipsum Generator. OK, it has a bug but who cares. You get German Ipsum! For free! Use it!

When we learnt AngularJS in week 9 I finally felt that the pressure was easing off. The homework didn’t really seem so important anymore and the lessons weren’t as challenging as in the beginning. I don’t know if I felt less stressed because I was used to everything now, because I was understanding things better, because the course was designed like this or because the instructors had run out of steam as well. Apparently we were ahead of schedule and learnt faster than they had expected, so maybe they stretched the content out a bit.

During this time I had also started going to Codebar and other networking events and was learning a ton about the big world of code out there that I hadn’t been exposed to at WDI. It made me realise how carefully curated the first few weeks must have been so that we were able to really only focus on Ruby, the frameworks and the gems.

I started to teach myself the Meteor framework in about week 9 or so and decided to hold a lesson on it during our “students teach students” week. It was super exciting to learn a new framework by myself. I started getting bored of Rails and was craving more new information. I definitely think that this learning experience has become somewhat addictive and I get antsy when my brain is not being given new input.

So creating yet another little Rails app as my final project didn’t sound like the most appealing prospect in week 10 but I decided to stick to Rails rather than using other frameworks as I knew I would get the best support from the instructors if I had any questions. Which I did of course. Many.

Since we finished two weeks ago with that day of emotions and karaoke I still haven’t really had a break. I built my personal website during a few days from scratch using Meteor and once I had that up and running at www.rabea.co.uk, I worked on my CV and various online profiles. I started applying for a few jobs this week and I was also approached by a recruiter on LinkedIn. I even have my first ever technical interview next week, so that’s all quite exciting (and slightly frightening).

Next week we have our meet & greet event where all WDI graduates will be presenting themselves to potential employers. I’ve still got a bit of work to do with polishing my apps but at least I’ve got my CV and business cards printed.

We’re all getting support from our very helpful careers advisor (she even designed my business cards as a favour and they look super cool!) and hopefully the meet & greet will be a success.

And I think after the event it’s pretty much over. We were initially promised that we could come back once a week and get help with our projects but that doesn’t seem to materialise, just like the elusive Monday breakfasts that never happened.

Nevermind. I’m happy with what I have achieved and once I get a job offer, I’ll be even happier.

I think (hope!) that we’ll all stay in touch and I can’t wait to programme all day and actually get money for it. Wouldn’t that be amazing?! Talk about turning a hobby into a career.

It’s Saturday of week 12 and I just woke up from sleeping all day. Seems that I was quite tired after 12 weeks of an immersive web development course (and last night’s karaoke performance).

I think I still haven’t quite realised that it’s over and I won’t need to show up in hipster central on Monday at 9 a.m for our daily stand-up meeting (we were like totally AGILE and all that). No stories about how everyone struggled with the weekend homework or that they are so tired or the reasons for why they are late. I’m going to miss it!

This week was really busy with working on our final projects. I am creating a website to find partners for a double exposure photography collaboration. I really like analog photography and there isn’t a website for this specific thing yet, so I thought it would be nice to create one.

My website relies completely on the Flickr API. Users have to log in with their Flickr credentials and any photos on the website are pulled through from Flickr.

It was fun creating it. And this time I didn’t think that the technical implementation was the hardest bit but rather to decide what exactly the project should be. We didn’t have any guidance like for the previous projects and could create whatever we wanted. I found it difficult to estimate how much time it would take so I scoped the project quite narrowly and was told that it wasn’t complex enough to really show off my skills.

Hm, maybe not ideal. But I couldn’t really think of anything else that I wanted to do. And I have to say that during this last week I was just burnt out. I struggled to really motivate myself.

We presented our final projects on Thursday and got the famous WDI hoodie. General Assembly gives this to everyone who completes the course. It’s just a piece of clothing with some GA branding on it but it was a great feeling to finally be able to wear it. It meant a lot. It meant that we made it! So that was the first time that I felt a bit emotional this week…

We went out on Thursday night and most of us were suitably hungover and tired on Friday. Our careers advisor spoke to us on Friday morning about job hunting and her recommendations on what we should do to prepare for the meet & greet event. The event takes place in about two weeks time and is kind of a mini-fair where we present ourselves to lots of companies that are hiring junior developers.

So I think I’ll be keeping busy over the next two weeks with updating my CV and updating/creating various online profiles, ordering business cards, working more on my final project and potentially changing the group project a little, creating a portfolio website for myself and figuring out what kind of table decoration I want for the meet & greet event (yes, everybody brings in props for their stand… argh!). Oh yes, and then there was my personal Trello board which I created to keep track of all these things I wanted to learn… I haven’t even looked at that.

Anyway, back to what happened on Friday. Throughout the day everybody got their feedback from the instructors about the final project but also about our performance throughout the whole course. It was really nice to hear all the positive and encouraging things they said. Week 12 emotional moment number two.

In the late afternoon we had a little practise meet & greet event, where other General Assembly students had the opportunity to check out our projects. Our careers advisor snuck two people from a social media marketing company into the event and introduced me. They were very nice but I was a bit of a wreck – super tired, hungover yet tipsy from the prosecco we had before… err yes… never mind. Apparently they’re coming back for the real meet & greet event.

At the end of the day there were speeches and presents to thank the instructors. The regional director of General Assembly praised Michael highly (I think we all agree that Michael is the best teacher we’ve ever had!) and asked us to join into recreating that scene from the film Dead Poets Society where the students show their respect and support to their teacher by standing on their chairs and calling him O Captain! My Captain!

This broke many of us, including me. I was standing on that chair furiously wiping the tears from my face.

What a day!

In the evening we went to a Vietnamese restaurant where I had hired a karaoke room. Four hours of karaoke, then another 10 hours or something at Alex’s house, drinking, dancing, chatting.

This week I’m really busy with my final project and was already wondering when I would find the time to write a blog post. But as fate has it, the internet is down in hipster central! It’s 2pm in the afternoon and we can’t really do anything without internet access. So I’ve decided to use the time to write a post.

This week is what they call “computer science week”. The theory is that each of us students is preparing a lesson on a computer science topic and then teaching it to the others. Lessons in the mornings and project time in the afternoons and evenings.

Turns out that the computer science aspect isn’t taken too seriously and we were able to choose our own topics if we wanted too, even if they weren’t purely computer science related. Awesome! It was nice to hear people talk about topics that they were passionate about. For example CSS animations, parallex scrolling, a JavaScript charting library and Docker, a platform for something like virtual machines but better. I chose Meteor.js as my topic as I had wanted to have a play around with it for a while.

Meteor.js is awesome. It’s a JavaScript frontend and backend framework which makes it super easy and quick to create an app. Log in with omni-auth? One line in the command line, one line of code. Methods are written in JavaScript and understood by the client and by the server. It’s built on node.js and comes with websockets included. Just like that! Data updates so quickly. When you make a change in development, it gets pushed to the website straight away without reloading the page. So cool! I think I’m a Meteor.js groupie. I even created a little app on Meteor for my lesson which allowed the others to log in and submit questions.

Others who didn’t choose their own topics talked about ways of sorting data, strategies regarding which tasks to execute in which order, how to handle fluctuating volumes of data and quantum computing. I found some of these theories and strategies quite interesting and would like to learn more about it – ideally in a popular science type of format. Is there like a Freakonomics podcast for computer science? Freakomputer science? I need to research this.

Tomorrow will be our very last lesson! It’s only our penultimate week but next week we’ll be focussing on our final project the whole time, so no more lessons.

Right, internet is still down*. Back to our hangman game.

* If you’re wondering how I published this post without internet… I didn’t. I wrote it during the painful two hours of no internet and then published it later when I got home.

The first half of this week at GA was mainly about exposing us to as many new things as possible. We plugged Angular.js into Rails, learnt about the famous node.js that everybody talks about (upon our special request – thanks to the instructional team for making the extra effort and preparing lessons outside the original curriculum!). We learnt about how to run slow tasks in the background in our Rails apps so as not to disturb the user experience, we used websockets for the first time and we got introduced to Jekyll, a framework for websites with mainly static content. Alex says using Jekyll for our personal website makes us look like a real developer. Noted!

I’ve also started going to a few different networking events. I am a regular attendee of Codebar, an event for minorities in tech and this week I also went to a meetup called ‘Ladies who Code’, which was really interesting.

During the event some people had a lively discussion about which programming language was best for beginners and I can tell you that there are some strongly opinionated people in this industry. Some said they would recommend starting with an easier language like PHP (I have no idea if PHP really is easy to learn) and others said you should start with C to really get to know the inner workings of a computer. During this discussion my friend Nina said: “Wow, this is like listening to people talking about religion!” She was spot on.

Yesterday at Codebar I had another lively discussion about how important test driven development (TDD) is. The more I talk to other developers outside our cosy GA environment, the more this topic seems to come up.

As exciting as it is to go out and meet all these interesting people and learn about new languages and ways of coding – it’s also quite unsettling. The more I learn, the more I understand how little I know and the more my personal to-do list increases in length. Also, as I said – there are lots of opinions out there and it seems like there often isn’t necessarily a right or wrong and I don’t have enough knowledge at the moment to form my own opinion.

So here I am asking myself – do I need to bin the work I’ve done for my personal website and start all over again with Jekyll to look like a hacker? Do I need to learn Java as it seems to be the most used language? Or C to understand the machine better? Create my project 3 on node.js? Do I need to change all my projects on Github to include tests?

The more I speak to other developers, the more I get the impression that TDD is actually not like a religion but something that every company uses these days. And the more I worry that I don’t know enough about it.

So I’ve decide to prioritize the tests over the million other things on my to-do list. At GA we learnt some basics of how to use rspec with Ruby code a few weeks ago and yesterday we had a confusing lesson about plugging rspec into Rails. But I haven’t really internalised the TDD mindset yet. It feels unnatural to me and I want to change that.

On the subject of getting even more exposure:

Yesterday GA took us on a little field trip to Gamesys, a company in the online gambling industry. While this is probably not a field that would be my first choice to work in (after years of working in an investment bank, I endeavour to work in an industry that will actually make me feel good about it), it was still very interesting to speak to them.

We were shown around the offices in Piccadilly and were able to ask them questions about their way of working and their recruitment process. They gave us some tips about applying for jobs and about how to raise your profile as a developer (apparently it’s good to have a blog (check!), a Twitter account (check!) and go to a lot of networking events (check!)… ).

This week I also worked a bit more on my first little Meteor.js app (well, the first that is not the tutorial on their website). I’m very excited about publishing it online at the weekend and get our course to use it during my lesson on Meteor next week.

And now it’s time to start the planning for project 3, our last hurrah!