From teacher to developer – my journey this year

About a year ago I dropped a bombshell on the senior management at school. I had decided I wanted to take a year out of teaching to learn how to program, develop websites and overall have a better understanding of what it is all about.

Reasons why I wanted to do this:

  • I couldn’t see myself teaching PE for much longer (injuries, loss of interest)
  • I wanted to understand programming, HTML/CSS, web development so I could move over into Digital Technology
  • an increased interest and passion for creating websites/programmes
  • and I got really tired last year with being in a school – needed to get refreshed.

EDA-square-hiresDuring 2014 I had found out about Enspiral Dev Academy and decided this was where I was going to go to learn the craft of web development. Earlier in the year I had halfheartedly considered the idea of going back to university and doing a year or few but decided against even a year due to it being a year and not being able to work for that time.

What appealed about EDA was that it was short (19 weeks in total), the first nine weeks was done remotely (so I could still work), the bootcamp part – learning with others, learning in an environment that was similar to what it would be like in industry, instructors who have worked in industry, the help that was offered with getting a job. All of these things aren’t available in a traditional tertiary training institution.

It has been quite a journey at EDA and I have documented it with previous blog posts – the last one being “Phase 3 and Final Project – Dev Academy“. I have had an amazing time this year and have learnt a huge amount.

There a lot of take aways form this year:

  • my learning
  • the experiences I have had – individually and with others
  • the people I have meet, learnt with, grown with, cried and laughed with
  • the rollercoaster ride of emotions
  • and that you are never too old or too stuck to change.

The best take away for this year is the people I have meet and the connections I have made. Life is about people and I have meet some amazing ones this year. Many who are embarking on or are on the same journey as me. It is exciting to be part of an ever growing community that is Enspiral Dev Academy. It will be intriguing to see where we all are in the years to come and how much of a positive impact we have made on the tech industry as well as within other areas of society, particularly education.

I have to give a HUGE shout out to my lovely wife. This year would not have happened if it wasn’t for her all encompassing love and support.

During my journey I started to think about whether I wanted to head back to school in 2015. As it turns out I don’t. This was for a few reasons but overall it came down to wanting to focus on my own and my families well being. So I resigned awhile ago and started to seriously look for a junior developer job. This was stressful and required thoughtful consideration (I am planning a future blog post about what I think is useful to do when looking for a job in the tech industry).

flick-logo-rev-newI have now kind of come full circle, in that I have accepted a job as a junior developer at Flick Electric Co.

I am excited and scared at the same time. I am looking forward to a lot more learning and working closely with others to help develop a product and create a positive culture that will have a positive impact.

I am also hoping to keep my hand in the education sphere by helping out Gather Workshops with some Ruby stuff, getting involved with RailsGirls, maybe Code Club Aotearoa and helping out alumni and current students at EDA.

So, that is the year that was! Phew!

Hello Rails! Week 1, Phase 3 – Dev Academy

This past week at Enspiral Dev Academy I have had a fantastic time!

In the guide for this phase it has this:

Phase 3 is the most exciting phase here at EDA. In this phase we no longer view you as students or developers-in-training, rather we look at you to be valuable, albeit junior, collaborators in the craft of software development.

I would agree, Week 1 has me very excited. It is lifting to be seen as “collaborators in the craft of software development”. And it really is about crafting software, websites, apps. I haven’t yet made anything really cool and exciting, however, I am getting excited by what I am doing, how I am doing it and the potential for me to create and craft in the near future. This is the first reason it has been a great week.

Ruby_on_Rails_logo

Secondly, the way the course has been structured works well  for me. In this first week of Phase 3 the Rubyists learn Ruby on Rails (the C Sharpies do a group project together as they had a big learning curve in Phase 2 and are kind of waiting for the Rubyists to catch up). There is less guidance and structure to this week of Rails then the previous first two phases. However, there still is a good structure there and this was useful for me as I like have a good solid structure when I am learning new things. The first two days of the week I re-created my shopping cart with Rails. For one of the Phase 2 personal projects we made a shopping cart using Ruby and Sinatra. This was referred to as “Diet Rails” but we learnt all about routing. Then with Rails, what happens is that it does a lot more for you. Which is cool and some may think what was the point of doing what we did with Sinatra but it made Rails seem not as scary to me. I was able to understand a lot of what Rails was doing and creating for me having had spent a lot if time creating all those same things when using Sinatra.

I worked on the shopping cart for a couple of days and covered the ins and outs of it with lectures plus learnt about Devise and Omniauth. Day 3 was set down as Test Driven Development and this is an area that I hadn’t focused on during Phase 1 or 2 and knew I had to knuckle down and get my head around it.

A slight break in this track of writing to mention another reason that I have loved this past week. I have ended up being the only Rubyist in Phase 3! So, our cohort starting with 5 C Sharpies and 4 Rubyists. Part way through Phase 2, one rubyist decided she wasn’t going to do Phase 3 as it wasn’t going to be useful for where she was at and where she wanted to go. Then the two others both decided, for various reasons, to roll back a cohort and repeat Phase 2. I felt at the end of Phase 2 that I had strong forward momentum and wanted to jump into Phase 3 whole heartedly. So, I have been working by myself mostly over the past week and I have loved it! It has meant that I have been able to focus on my learning and use tools and methods that work for me.

Wireframes, routes, ideas about apps made in Rails.

This has also meant that I have had many one on ones with the teachers at EDA, which leads me back on track to TDD. On the Wednesday the first ‘lecture’ Joshua Vial was set down to take. It is a bit odd doing one on one lectures, so Josh come over to where I was working and we started talking about TDD. He came up with a great idea to create a blog app in Rails with the proviso that I didn’t open the server (so didn’t look at the website I was making) until I had written the tests and the code for all of the functionality I wanted. We also did “ping pong” pair coding – this is where one person writes a test, you swap, second person writes the code to pass the test and then writes another test, you swap, etc etc.

Screen Shot 2015-06-20 at 8.59.03 pm I have learnt to enjoy test driven development. I am even thinking it would be fun to go back and revisit a lot of my projects and write tests for them. It was good to finally get my head around testing and I got to do some Capybara testing as well.

Screen Shot 2015-06-20 at 9.00.04 pm

On Thursday and Friday I learnt about Mocks Stubs and Doubles and using AJAX and JSON with Rails.

And to cut a post short that is getting long, last few important things from this week, at the start Samson Ootoovak gave a great intro to the week that set it up well for me. Within this was the clear intent that there was freedom to deviant from the structure and that this was strongly encouraged if you didn’t feel the content was useful or if you found any of it boring. It was cool to have this acknowledged.

Being the only Rubyist this week has given me the time and space to learn and to solve problems by myself, which has been a valuable experience. It has also meant that I have had many one on ones where I have asked questions and learn heaps, which has been fantastic.

Also on Thursday evening I attended a small meet up at EDA, for anyone who is interested in learning Ember JS. I think it will be extremely useful to know at least one JS framework before I finish at EDA, so decided that this would be a great opportunity. Ember has been created by a lot of people who come from a Ruby and Rails background so the way it is structured in its implementation is similar.

One of the most important learnings from this week is that I am no longer scared of learning new languages! Now that is really cool! I’m actually excited about learning more so I can do more cool things!

Phase 2 done – Dev Academy Bootcamp

Wow, so another phase completed and the final phase to go. I have enjoyed Phase 2 a lot. It has been great getting out of the console and onto the web. I like making sites look good and felt pretty confident with HTML and CSS before Phase 2. It has been heaps of fun to dive into the web and the learning has been exciting.

A quick overview of what Phase 2 has covered:

Week 4: Testing, Simple Web Applications, and Github: cover Rspec, Sinatra, ActiveRecord, HTML, CSS, and Heroku.

Week 5: Enhancing Web Applications With JavaScript: add JavaScript, as a way to enhance your web applications, have a solid introduction to JavaScript the language.

Week 6: Complex Web Applications: Week 6 ties it all together, discover how to use background jobs, OAuth, and other APIs.

It has also included three personal projects – a server side app (shopping cart), a client side app (customer management relationship app) and an api app challenge (this was wide open, I had a play with the Twitter api).

Screen Shot 2015-06-14 at 9.38.23 am

The personal projects were a great way to review and embed all the learning that happened during Phase 2. I particularly found this for the first project, the shopping cart, as we had 6 days for it, and I was able to spend more time on implementing the core the functionality. The client side and api apps were given to us at the same time and we had 6 days to do both.

For the sever side project, I spent a lot of time planning out how I was going to create the database, web pages and routes:

By taking the time with the planning meant that I only had to make my database once. This meant that I wasn’t rushed with any of the other components of the site.

The Week 5 group project I am really happy about. This was Javascript week and the suggested options were Connect 4 or Survey Gorilla. Neither of these really excited me, so I pitched the idea of a memory card game. Through the development of this game I enjoyed getting to learn more JS and diving into JQuery and AJAX.

Screen Shot 2015-06-14 at 12.05.52 pm

We are a team of three and had a focus on our learning rather then worrying about making a really cool product. This meant we weren’t rushed in our planning and took the time to step back and look at the bigger picture. Hence, our planning was thorough and thus meant our development was efficient and effective.

photo 2Another factor that helped was having a small minimum viable product. We decided on a 2 by 2 grid, which meant only 2 faces, however, not knowing how difficult this was going to be it was great having a small MVP. We achieved this quite early on, which meant we could dive into our stretch goals.

Other learnings / experiences from Phase 2 have been embracing unexpected learning opportunities.  In our cohort project in week 6, I was suppose to be in the front end / JS team but due to illnesses was in the back end with Ruby. It took me a little while to be happy with this, however, learnt lots.

I think I am tending towards the front end as I like creating stuff on the web and interacting with the web.

I had an ‘aha!’ moment during week 6 where I was reading this job description:

Screen Shot 2015-06-14 at 12.16.58 pm

and realised that I could understand everything that it is talking about and that I could tick off most of them to some sort of degree. That was exciting!

Here comes Phase 3, three weeks – learning Rails, more JS, JQuery etc and then the final cohort project! Bring it on!

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 – https://github.com/libbyschuknight/cocktail_suggester 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.