Phase 1 Completed! Dev Academy Bootcamp

I have completed Phase 1 of Enspiral Dev Academy bootcamp! Yay! I am really excited to get into Phase 2 as we graduate to Sinatra – a domain-specific language, which we will be using to create web applications! It is like graduating to secondary school!

During Phase 0 I really enjoyed working with HTML5, CSS3, Javascript and JQuery, so I am looking forward to getting back into using those as well as it feels more real now that we are moving to web applications.

Recap of the last week:

  • databases
  • object-relational mapping
  • schema design
  • SQLite
  • gems, gemfiles (want to use Nyan Cat RSpec Formatter at some point in the future!
  • ActiveRecord
  • rakefiles
  • migrations
  • associations
  • lots of ORM!

I also “blinged” up my Sublime text editor with Cobalt2 after reading this article “Top 11 Programming Fonts for your Text Editor and Terminal“, and I have started to use iTerm2. I feel that it helps me be more efficient in my work with this cool looking styles.

Stand out learnings from this week:

Technical – the building blocks are really started to fit together, with learning about ORM, databases, ActiveRecord and how everything works together, it seems to be making sense!

Engineering empathy – listen learnt (again) this week was that I can have a ‘tunnel’ focus when I think I am on the right track, and sometimes this does not serve me well. It is beneficial to check in with others in your team more often then not. It is important to be open and transparent with people you are pairing with and in groups with on projects.

Learning – that I have learnt more than I think I have! There was a self assessment task to do over the weekend and the first two releases I found pretty easy. However, the last one which was using ORM, database and ActiveRecord I felt very uneasy about. But as it turns out I managed to completed it to my utter surprise, as I don’t know how I got it working! I will be doing a code review with a teacher during the week to make sure I do know how I got it working. Maybe I will think differently in the morning, as that seems to be when my mind is at its best.


Dev Academy Bootcamp: Wk 2 — OOP

Dev Academy Bootcamp: Phase 1 – Week 2 — Object Oriented Programming

The focus of this week has been Object Oriented Programming.

During this week I have learnt:

  • a lot about classes and fruit trees! (The first activity was creating an Orange Tree Grove and then converting it into a Tree Grove with different types of fruit trees – enough said.)
  • introduction to test driven development
  • inheritance
  • encapsulation
  • coupling
  • law of Demeter
  • private / public
  • user stories
  • MVP – minimum viable product
  • made cookies and ovens (no, not in the real sense)
  • parsing data
  • MVC – model view controller
  • working with others

Wednesday evening our homework was to watch a video on Models, Views and Controllers, to set us up for Thursdays challenges on MVC. We had built a Flashcards console app the day before and on Thursday we had to change it so that it was suing MVC design pattern. I enjoyed this and using classes really started to make sense to me.

It has been good to get to a point where we are making things that do stuff – actually making a flashcard app (even if extremely basic and only in the console) compared with making orange trees, cookies and hospitals.

This image really helped me understand MVC the flow of how it all works. mvc-sequence

After completing our Flashcard challenge and making it follow the MVC pattern I was feeling pretty good leading into our first group project on Friday.

I wasn’t too sure what to expect except that we would be working as a team of four Rubyists and building something to do with what we had been learning over the first two weeks. The project was pretty open, we could decide what we wanted to build, obviously though, a console run program was used, as thats all we know so far.

Our group of four has probably focused more on our group processes over the last two weeks then the technical aspects of coding. I have enjoyed this as I have learnt a lot already about working with others in the environment. I feel that this meant that we had a strong base as a group to work from with our project. We took our time with planning out what, when and how we were going to do things. Although we may  possibly have gotten bogged down in choosing a product/idea to make if one of the teacher aides hadn’t come over and given some thoughts and suggestions.

A side note – I am really appreciating the way that the teachers and teacher aides at Dev Academy interact with us. When needed we are given the time we need to solve a problem, rather then being given a possible solution to soon and we are also gently nudged in a certain direction when we might be going off on a tangent.

Our planning board started of with a user story and then we had a think about what we needed and then put the parts into the MVC design pattern.

planning board

We used a Kanban board when we got into the creating. I really liked the physical nature of using a whiteboard as I enjoyed being able to move the post it notes once tasks were complete.

kanban board

We unfortunately hadn’t gone over agile roles before we started. Even though as a group we worked really well, I feel that if our roles had been more defined rather then blended we may have been even more efficient. I guess a good learning opportunity!

So, what we made – Cocktail Suggester! Github link – and a demo.

I really enjoyed working on a group project, right from deciding on the idea to presenting our minimum viable product to everyone at EDA. There are couple of features we nearly got to – printing out the recipe of a cocktail, adding a cocktail to the list.

Cool things from this week:

  • learning about the ascii artii gem for the console art / fonts
  • on the macbook being able to swipe across when in full screen to go from presentation to code to terminal! (Got rather excited about this one – must be all the presentations I’ve done in the past where I couldn’t do that!)
  • oh and MVC has been good, it has tied in a lot of components that now make more sense!

Also this weekend, Rails Girls Wellington has been on at Enspiral Dev Academy and from all the tweets it sounds like it has been a great time. At the RailsGirlsWgtn weekend last year is where I was first introduced to Ruby and where I found out about EDA. A lot has happened since then and I never would have thought I would be actually a student at EDA. It has been one interesting year. I hope to in the future join the cool people that make RailsGirlsWgtn happen. For those that stepped into Ruby and Rails land this year, anything is possible!

Week 1: Phase 1 – DevAcademy a.k.a “BOOTCAMP”

Algorithms accountability Pair Programming driver navigator Git GitHub Ruby yoga coaching Debugging Two Truths and a Lie Encoding and Decoding Smartphone Roman Numerals Numbers in Words Revision challenge for Roman Numerals Review: Review others and refactor your own Stretch: Try the following challenges Dictionary Sort Advanced Calculator Engineering Empathy (EE) – Introduction to mindfullness Enumerable’s, nested data, recursion part 1 Nested arrays Enumerable methods Dictionary sort Linear search Binary search Enacting enumerables  Engineering Empathy: Deep dive – Sexism Stretch: Try the following challenges Pig latin pseudo code Binary vs. linear search Sort yourself Rubyists Destructive methods Samuel Beckett Recursion challenge  EE meditation Intro to classes, stacks and queues Stack and queue Linked list Intro to objects OO basics – orange tree Watch the 20 minute video on Regular Expressions regular expressions challenge Review abstract data structures Stretch: Calculating subsets with recursion Ruby Drill: Prime Factors: Sieve of Eratosthenes EE meditation Intro to Games! Private vs public interfaces Racer Debugging techniques Boggle 1 Boggle 2 Battleship EE meditation Sudoku planning Sudoku part 1 Sudoku breakout Sudoku part 2 Review and Solidify Learning Stretch Forward Reflect Breathe

If, when reading through the above you go “What the …???”, well, that is kind of how the start of this week felt.

It has been a while coming but Week 1 of Enspiral Dev Academy bootcamp has happened. I should rephrase – I have had the pleasure of experiencing, and what an experience it has been!

Screen Shot 2015-05-10 at 5.34.53 pm

Time is distorted once you start bootcamp. After only five days it feels like I have been there for at least a month. In the orientation, accelerated learning is talked about. I feel like the pedal has been through the floor this week with what I have learnt both technically and on a personal level. I am experiencing being a student who fully has to take ownership of their own learning.

There have been ongoing conversations around code when pairing with others, which we have done all week. As well as scheduled lectures and focused practices there have been informal conversations around Engineering Empathy:

Engineering Empathy (EE) is our emotional intelligence curriculum partially based off of Google’s program and book titled Search Inside Yourself. EE helps us create an optimal learning mindset and environment for our students by addressing the human side of software development. Through a series of lectures, exercises and routine practice we help students tackle difficult intra-personal and interpersonal issues that keep teams from operating to their full potential.

This has been fundamental in changing my focus on seeing what success is or means for me when working by myself and with others. It is not all about necessarily coming up with a working solution but the process of pairing and working with another human being in an effective and efficient way. And also to optimise the learning for both people.

I think one thing I would like is more time to be able to reflect. Sometimes useful reflection takes time and that is something we definitely do not have a lot of at EDA. With that in mind I am going to try very hard to continue doing these blog posts during bootcamp.

The reflection for us at the end of Week 1 is around guarding our ignorance –

It’s really hard for smart, hard working, passionate people to admit when they don’t get something. Our natural tendency is to guard our ignorance so that everyone thinks we’re competent. Effective developers expose their ignorance. Period. Read the Apprenticeship Pattern on exposing your ignorance and answer the following questions in your own journal.

1. When have you chosen not to expose your ignorance, and what impact did it have on your effectiveness?

I remember the feeling I had when I didn’t expose my ignorance, internal anxiety and stress but at the same time trying to hide it from everyone. I can’t think of a specific example right now but I definitely remember the feeling as it was so strong and overwhelming. It made me become ineffective as I wasn’t focused on what I was doing, rather on how I was feeling and what I was going to do to stop feeling that way

2. What are the 5 things you feel like you understand the least about computer programming? 

Finding it hard getting my head properly around nested arrays and hashes. Algorithms. OOP. Recursion. There is heaps I don’t know and don’t understand! But I am just starting out.

3. What is the way you feel most comfortable exposing your ignorance?

Most of the time I am pretty happy just saying what I don’t know. I have learnt over the years that I feel better when I am open about my experience and what I know and don’t know. I hate getting stressed and if I am in a situation where someone thought I knew more than I did, I would be getting pretty stressed. I try very hard to avoid getting stressed, hence I am happy within myself to just say it has it is. Although, it can be quite difficult to do this in a place where there are people that come across as really confident. People who spurt off how good they are make it harder for those that think they don’t know it all or aren’t as confident or just aren’t as outgoing.

How do you deal with your ignorance?

Oh and I am feeling much better at the end of the week then I did at the start. It is going to be a mad, crazy, nuts eight weeks but I think it will be well worth the journey.

DevAcademy: final two weeks of Phase 0!

Week 8: Databases + Review

We did this stuff:

  1. Treehouse: Database Foundations
  2. Review JavaScript Objects with Codecademy: JavaScript – Data Structures, Objects I, and Objects II.
  3. JavaScript Gradebook
  4. JavaScript Tally Votes
  5. Fizz Buzz Super Edition
  6. Nums to Words
  7. Javascript Olympics

I quite liked learning more about SQL as I had learnt a little bit while teaching, so wasn’t anything that was new to me.

I have enjoyed learning JS but find it a very steep learning curve going into objects and OOP after not doing any JS for a few weeks. My head was well in Ruby-land.

Ruby seems so much easier – but is that only because I have been working with it intently for the last 3-4 weeks??

The challenges I enjoyed the most in Week 8 where doing the Fizz Buzz Super Edition and Nums to Words – these were Ruby challenges

Felt I learnt a lot during Week 8. I am still looking forward to seeing how all of these things work together in making a website or app.

Week 9: Review

Intro for this weeks challenges:

These challenges are difficult. If you feel like you need extra understanding to complete them, check out the optional but suggested activity below:

  1. OO-Basics
  2. Triangle-Debugger
  3. Reverse Words
  4. Rectangle Class
  5. Translate Ruby to Javascript
  6. Revisit Your Website

Most of these challenges were in Ruby, except for the translating. It seemed like they were in reverse order though, as the first one was a lot harder then the last ones.

I surprised myself quite a lot during these challenges as firstly we were told they were difficult and secondly at first glance they looked difficult. At least the OO-Basics did. But got them all done within two days, except for revisiting my website.

Every so often they throw in a challenge which has all or most of the code but needs debugging. I quite like these as I don’t need to worry about getting my code to work, I just need to try and found the errors in code given to me. I also really enjoyed making code look really neat and tidy as I think this makes a big difference to its readability.

It was fun translating some Ruby code to JavaScript. I ended up doing this with another guy in my cohort as we hadn’t done any pair coding and I was keen to have a go at this before starting Phase 1.

I chose a Ruby exercise on reversing words…

Screen Shot 2015-05-02 at 5.54.50 pm

…and did it in JS with Kyle and then refactored twice by myself…

Screen Shot 2015-05-02 at 5.55.13 pm

Screen Shot 2015-05-02 at 5.55.25 pm

Screen Shot 2015-05-02 at 5.55.36 pm

… quite happy with myself in finding the .map function in the JS documentation and getting it done to fewer lines.

The last challenge of the week was revisiting our website that we built and worked on in Week 2 and Week 3. After those weeks my site was looking like this:

After this week it is looking like this:

I’m pretty happy with how it looks at the moment. There are a few things I do want to do are to :

  1. add a drop down menu for smaller screens. I came across this post – Drop-Down Navigation: Responsive and Touch-Friendly, and it seems like it would be pretty easy to implement. They also have a demo site. When I have some spare time I will try to add this in.
  2. redo the photo, as think it takes too long to load
  3. tidy up the code as it is messy, as started with old site.

The change in design happened for a few reasons:

  1. initial one was too simpler and boring
  2. had used initial one for trying things out – e.g. JQuery drop down menu
  3. initial one didn’t have a clear purpose / context

A couple of sites that I took inspiration from where and I was also thinking about how to present or “brand” me, as I was working on this.

During this process I discovered Font Awesome! I was looking for an icon to add an angle-up to use to get back to the top of the page and came across it. How cool! What other great sites are there out there for using when working on building a website?

So, that is Phase 0. Bootcamp / Phase 1 starts on Monday.

Phase 1 consists of:

  • Programming Fundamentals: Learn How to Think Like a Programmer
  • Introduction to the Dev Academy experience
  • Ruby, SQL, Active Record
  • Solving problems on the command line
  • Engineering Empathy: Explore your inner world

Phase 2:

  • Programming for the Web: Bring Your Applications to Life
  • Javascript, HTML, CSS and Sinatra
  • Learn to rebuild Twitter or create your own Hacker News
  • Engineering Empathy: Maximizing effectiveness with others

Phase 3:

  • Making Beautiful and Meaningful Things
  • Agile software development, user stories, scrum, and sprint planning
  • Introduction to the Rails framework
  • Final project pitches, lightning talks and demo day

The phases are three weeks long. I am hoping to do at least a post a phase. If not, there will be one very big one at the end of bootcamp! See you all on the other side!

More JQuery – mobile drop down menu

Note: 2 May – whoops, this one has been sitting in my drafts for about 5 weeks!

Last week I learnt a lot about JavaScript and JQuery. One of the challenges for Week 3 of Phase 0 (for Dev Academy) was adding interactivity to our own site/s. I added a simple Lightbox effect to my photo portfolio site.

Screen Shot 2015-03-22 at 5.39.20 pm

Another of the projects I did during the JQuery course on Treehouse was ‘Creating a Mobile Drop Down Menu’. I really like the look of drop down menus for smaller screen dimensions and was keen to add this to one of my sites. I decided to add it to my personal site (which is still a work in progress).

Here is two screenshots from the course project site:

And two from my site:

I am pleased that I have managed to add a drop down menu, although I am going to explore using straight HTML5/CSS3 for this in the future. I think it will look better. I am also going to be redoing the pages as well.

I would like to make a drop down menu that looks a bit like this:

And have the menu on a large screen like this:

It maybe awhile before I get it this good though!

Here are shots of portfolio site, moving from the large screen design of my photo portfolio site to the small screen design. The aim will be to add a drop down menu for the smaller screens:

Anyone know of any good tutorials or site going through how to make a good mobile drop down menu?

An aside: Imposter Syndrome

The other week, Samson Ootoovak, a coach at DevAcademy, posted in EDA’s slack channel a link to a video of  Joshua Paling speaking about the Imposter Syndrome. Screen Shot 2015-05-02 at 4.44.22 pm

Good talk, worthwhile watching whole 20 minutes.

The following week I as in touch with Rachel Collingridge, who works at Powershop, I was asking her if she has suffered from imposter syndrome and ideas on how to deal with it. She also sent me the link to the above video of Joshua as well as to his slides and some extra stuff that he didn’t get to talk about in the video.

On Joshua’s site, he links to Alicia Liu’s blog. She has written a number of posts about impostor syndrome which a well worth a read.

It is refreshing to read about what others in the tech industry think and feel about imposter syndrome. Makes me feel better about where I am at and the feelings of doubt that I have.

I read all of this stuff a couple of weeks ago and since then have been working hard on the last two weeks of EDA. Sitting here now, I know that I haven’t had as many moments of feeling like an imposter or sheer panic as in previous weeks. I think this is partly due to realising that the majority of people learning to code and who code for a living, do also suffer from feeling like an imposter. And that it doesn’t stop once you are no longer a beginner. So rather than worry too much about it I’m just going to get on with learning.