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!

Phase 3 and Final Project – Dev Academy

The last three to four weeks have been very hectic. I started Phase 3 on the 15th of June. The first week of this Phase was Rails week, the first half of the second week was doing more in Javascript and then on the Thursday we started our final project.The final project went for a week and a half, on the Friday of the last week we graduated and then this was followed up with a careers week. Now it is nearing the end of the week after careers week I am just beginning to feel normal. It has been absolutely fantastic having two weekends where I barely looked at a computer screen.

In the second week of Phase 3 we got to play more with JavaScript. The first challenge was recreating (and in the process demystifying) jQuery in the miniQuery challenge. This was a good challenge except for the fact that I got lost at the start and this through me out of sync for a bit. The second challenge was making Post It notes. Loved this! It was so much fun making this app and not necessarily for the expected functionality as this image demonstrates.

post its

http://libbyschuknight.github.io/js-post-it-notes/

The Wednesday of this week was open for us to explore JavaScript frameworks. I had already been playing around with EmberJS, so looked at that a bit more. The cohort has already had some discussions around what we wanted to learn during the final project and AngularJS looked like it was going to be on the cards, so I also had a look at this via Codecademy. Their Learn AngularJS was a good starting point for learning Angular. I have tended more recently to steer away from Codecademy as I didn’t really like their interface. I was pleasantly surprised to find out that they have updated it and it works better for me. I enjoyed working through this tutorial and learning AngularJS version 1 – I’m not sure if I will make the effort to learn much more about version 1, since version 2 is coming soon and by all accounts will be quite different.

The second to last Thursday was the first day of the final project and pitch day. All of us in the cohort needed to pitch some apps ideas. We had about ten but settled on a meal planner idea, with the basic idea being that you can choose meals for the week and then see a shopping list with all of the ingredients for the week.

We did some awesome overview planning –

-which was good and gave us a structure to follow for the next few days. However, that is kind of where the planning stopped for a bit and this meant that once we had reached minimum viable product (MVP) we had some issues. The main issue being that the database schema needed to be changed a few times and this had flow on effects with how information was being displayed and interacted with by the front end.

We reached MVP by Sunday evening after some hard work over the weekend.

Once we achieved MVP we focused on our stretch goals. I wanted to work on making it a responsive design and looking better than MVP. We hadn’t planned well for the front end, so we had to kind of work backwards by using a Bootstrap template off http://startbootstrap.com/. It now looks a lot better!

This slideshow requires JavaScript.

We used Trello to put in place the use of a kanban board as part of our agile methodologies. This was useful with some people working at home in the evenings. However, we got a bit carried away with the number of ‘tickets’ on it and the flow of these – the board got a bit crowded and hence wasn’t as useful as it could have been.

trello 2

After some guidance by the teachers at EDA we became better at using the board. Although it seemed to me that those that hadn’t used Trello before weren’t that keen to use it. I, on the other hand, had used it at school with students and could really see the benefits, plus I kind of live on the computer.

A quick think about the lessons learnt…

  • it can be difficult working in a team
  • it is even harder when abilities are quite different
  • however, if worked right, everyone is able to contribute the best they can
  • it is exciting working with others and achieving something you didn’t think you could
  • hard work pays off
  • it is worthwhile to take the time to work with others and figure out how best to work with others
  • it can be very easy to slip into a ‘negative’ mindset about people when others are thinking the same thing
  • it can be difficult in a group situation to always be thinking about being kind – or actioning being kind
  • I learnt a lot about myself working intensely with others
  • sometimes I swear too much and get too loud!
  • sometimes I just need to let it out by swearing and being loud!
  • it can be hard to step away from coding when you are really focused on something and want to get it done.

There are many more things I have learn, that is just a quick list off the top of my head.

So, after we finished coding our site, we then had a day to prepare for the final project presentation on the last Friday of bootcamp.

presentation

You would think that since I have been teaching for a few years and kind of have been in front of people for most of my working life that I would be sweet with speaking and presenting. But I still got nervous and I think it was because I was invested in what we had made and really proud of it.

The day ended with graduation of bootcamp and a party. Got this cool little gift from EDA.

kiwi

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!

Half way through Phase 2 @ EDA Bootcamp

This is a very quick post as Phase 2 of Enspiral Dev Academy is really full on, madly busy.

In week 4 (week 1 of Phase 2) covered:

Testing, Simple Web Applications, and Github: In week 4, we cover Rspec, Sinatra, ActiveRecord, HTML, CSS, and Heroku. Your primary objective is to feel confident that you can create simple web applications on a team and on your own, test them, and get them hosted on the Internet for your friends and loved ones to see.

Feeling good with Sinatra as I am working on the first personal project, which is using Sinatra, Ruby and ActiveRecord (and HTML/CSS) to make a shopping cart. I didn’t think I really knew what I was doing but after talking with a teacher and a couple of teaching assistants about how to approach it, I have really surprised myself. I have a shopping cart that can display all the orders for a particular user. Yay!

Although I haven’t done any testing yet and need to add some more functionally. But that important thing is that I have learnt more than I have realised and that I can do this!

Screen Shot 2015-06-01 at 10.06.19 pm

Looking forward to spending more time on getting deployment working. We deployed our group project – EDA Face Cards – but isn’t working on Heroku properly. We are really happy with the design of the site. I did this with another group member in a few hours on the second day of the project. They are two day projects at the moment.

The first personal project is due on Wednesday and then we get given the next two! Which I think are due the following Wednesday – madly busy! But on what fun!

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 – 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!