Learning to code, startup style
A startup provides a great atmosphere to break into the world of development. Professional freelancers to annoy, great existing code to break and pushy buisness guys. A recipe for a high pressure scrappy environment that forces you to get to grips with it.
I joined Mixtable with a weeks’ worth of prior coding knowledge, some HTML/CSS, and a little C64 BASIC (the latter being entirely useless, albeit fun). I joined as an intern to work on the frontend of the Mixtable site, where I promised the team I’d pick up the necessary skills as I go; a bold move. Come the first week on the job, I felt I’d made a dire mistake. I had a freelance backend developer and two Mixtable co-founders relying on my supposed learning ability to produce the front end of the site. Scary, sudden, but eventually satisfying once I’d got to grips with the code.
My first challenge was getting the Rails software installed on my laptop, as my previous experiences with the command line had been to run copy and pasted commands. I installed a multitude of GUI tools for managing ruby gems and rails versions, and struggled for the two to play nice with OSX. Therefore, I headed to a Ubuntu virtual machine and followed this guide. For any newbie (and especially after I had spent two days battling with Rails), the guide was heaven sent, because of the simplicity of displayed commands. At this point, I felt I was starting to make some progress. Next challenge, GIT. My work flow was estranged from productivity but somehow worked successfully, that is until I bore the brunt of a freelancer’s rage for messing up a commit. I would download the repo from Github, use Github Mac to push, pull and commit; not having a clue what the terms actually meant. The development was done in a Ubuntu virtual machine, stored to dropbox then the commiting and pushing took place on OSX. Safe to say, I learnt my lesson fast, this was a mess of a setup.
On reflection, it was a messy first setup, but with my limited knowledge and the pressure of needing to get on with styling the front end of the site, I had to make do. But truthfully, my life would have been much easier if I’d had an expert, or mentor, to guide me through the process of running Rails in OSX, and if I’d taken some time to learn basic GIT commands, because it's not rocket science..
Getting your system setup right is vital. I advocate figuring stuff out for yourself but not for setting up your system. It's a chore so ask someone for help to get it out of the way quickly so you can actually get on with making stuff, i've found that as I have learnt to code, my setup has been moulded along side it.
CSS and HTML are very easy languages in terms of learning syntax. It's more a case of getting to grips with best practises. Initially I used to Code School, then discovered Chrome Developer Tools which were so so useful because you could litrally see the changes you were making right there and then infront of your face live!
So building the front end of Mixtable version 1 was a haphazard affair. The css was incredibly messy, as was the html and my understanding of bootstrap was cryptic. Looking back at the code I wrote, it is hard to see what I was attempting to do. But the site worked, it had a front end and I had learnt the fundamentals of html and css while building it.
The point i'm trying to get at here is the scrappy nature of learning. Working this way let me learn in my own way, at a pressured pace, mistakes were not penalised and you were the professional despite having very little knowledge about what you were doing.
Since writing version 1 I have learnt alot more over my time with Mixtable and can call my self a full stack Rails developer. Most of my learning of Rails and Ruby were based on code writen by a freelancer for the second version of our site.
Kuba Kuźma wrote very clean code and refused to use gems such as Devise for signing in etc. and I learnt alot about the capabilities of Ruby from his code. Having a professional code base from which to learn is the most valuable asset. Because of the expressive nature of Ruby, it was easy to decifer what the code was doing and I slowly managed to do more and more with the code.
One vital part of reading that I did too late I feel was Agile Development With Rails as working with the code Kuba wrote and using breif snippets found from Google searches, my knowledge lacked understanding of the basic principles of CRUD and an MVC framework. The tutorials in this book cleared that up.
So to take away from this, Mixtable was very much a learn on the job experience for me, and as far as learning to code goes, it was a brilliant environment to have an instant practical application for the code being written, even if at time you wind people up or break shit.