Right, I’m coming back to this blog with a new project. This time I’m going to try doing a structured project produced by a new startup called Zyring, which I saw linked on Hacker News.
The idea of the Zyring site is to walk you through producing a first ‘portfolio project’ – some kind of web application like a blogging platform or news reader. Each step of the process still involves a good deal of learning and research, but the tutorials give some structure to stop you getting too lost and confused. If you’ve seen the posts on my other two projects on this blog, you may understand why this might sound appealing!
I picked the Apartment Finder project because I quite fancied playing around with the Google Maps API. My plan is to document this project relatively comprehensively as it could be helpful to other people who are either working through a Zyring project or evaluating whether to give it a go.
I’m making brief notes on each project tutorial as I go and will post these at intervals, but first off I thought I’d make an introductory post about my first impressions and general experience of working through the first few tutorials. Obviously, my opinions may change as I get further through the project…
If you can’t be bothered to read all my waffle, here’s my basic points that I’ll expand on below:
- I’m basically a big fan of the idea behind Zyring, and it’s been something I’ve wanted for a while. First impressions are good, and the rest of my points are me being picky or sceptical about the implementation…
It could do with some clarity at the start on what the project is and who it’s aimed at (though checking back, this has already improved since I signed up). I’d be surprised if complete beginners could get much out of this.
There are a hell of a lot of tools introduced, and I worry that it’s overkill or that I won’t really understand them properly. I won’t really know until I’ve got further into the project.
Unsurprisingly for a new startup, some parts could do with polishing up. For example, there’s loads of excellent documentation, but it isn’t always brilliantly integrated with the tutorials.
For completeness I should point out that there’s a facility for asking for help or code reviews, but I can’t say anything helpful about it as I haven’t tested that yet.
1. Bridging the gap
Zyring’s aim seems to be to bridge the gap between the ‘getting started’ level of tutorials like Codeacademy, and being able to start your own projects from scratch. This is something I can see a real need for, and I’m very grateful to anyone who is thinking about the problem. For context, here’s a brief summary of my background: I did a physics PhD with a small amount of very basic coding in C and Mathematica, highly focussed on getting numbers out of whatever equation I was banging my head against that week. Afterwards I fancied learning some more immediately relevant programming skills, both as a fun project and with an eye on future employment (I’m not planning to stay in academia). I used Linux throughout and am relatively confident with the command line, and have got plenty of experience in learning new things on my own. On the other hand, I only had the vaguest idea about scripting languages like Python, had never done any web development, and had little idea where to start.
I’ve found Codeacademy excellent for learning basic syntax and commands but too constrained to allow the kind of exploratory work you need to do to really get your head around a topic. At this point, I know very well that the best way to learn something is to have a project that forces you to go out and learn for yourself… which is exactly what I tried next. See my previous blog posts here, particularly the one on map projections, for excruciating details of my cack-handed attempts to figure things out on my own, often with no real idea even of which phrases to google to get help.
After a bit of this I got kind of bored (and had other work to be getting on with) and gave it a rest for a few months. The Hacker News post on Zyring provoked a bit of moaning on the lines of ‘there’s already too much hand-holding going on with all these new tutorials, people should just jump in and get on with it’. But I don’t think the problem is really that we’re all idiots.
(For another data point on this, here’s the physicist John Baez on trying to get started with R, which I found reassuring. Anyone who’s seen his incredible This Week’s Finds in Mathematical Physics series will know that the problem is definitely not that he’s stupid…)
I think picking up a new skill is genuinely a lot harder than people remember, particularly when you’re learning it on your own. I also don’t think struggling to figure something out by yourself has any intrinsic moral value, and if you can find a more efficient way to learn something you should use it.
So now I’ve explained why I like the idea so much, I’ll move on to a few thoughts and criticisms I have about Zyring in particular.
2. Who is the site for?
One thing that I don’t think is made very clear at the moment is exactly who Zyring is aimed at and how it will teach you. I’ve just checked back to the landing page, and it is already a good deal clearer that when I signed up, so clearly this is going the right way. It now specifically says that it provides only ‘high-level instructions’ on how to build each feature, so you’re less likely to sign up thinking everything will be explained to you in step-by-step detail.
Another problem is that it is easy to be intimidated by…
3. The sheer range of stuff in the project
At the start of this project, you download a ‘project scaffolding’ – a rather bewildering number of files and folders, with references to a lot of tools and frameworks – Bower, Grunt, Angular, Bootstrap…
Zyring make it very clear that you don’t need to know what everything is from the start, which I’m fine with – I’m happy with approaches that throw you in and allow you to learn as you go.
However, there is a lot of this stuff, which worries me. Zyring say that everything will be explained in later tutorials, which is a key claim as far as I’m concerned. I’m not expecting to come out with particularly high-level knowledge of all this stuff, but if I’m poking around the filesystem at the end of the project and half of it still looks like a bunch of magic beans then I will be disappointed.
4. Good documentation, but a little rough around the edges
It’s a new startup so it would be highly unfair to whine about this one too much, but it’s probably worth pointing out that some of the material could do with some polish – I’ve spotted a few typos, and some of the explanations could do with sharpening up.
There’s an impressively large range of specially-written documentation on all the different tools and frameworks, but it’s currently not always particularly well integrated with the project tutorials themselves – they are linked to, but sometimes the linked section of the documentation has a very different name to that given in the link. For example, clicking on ‘Using $scope in AngularJS’ gives a link to a page that says ‘What is two-way binding and how is it done in angularJS?’ which is irritating when you open up a bunch of tabs at once and then have no idea how they relate to what you want to know. Also a clear link to all the documentation at the top of the screen would be helpful, as sometimes you want to go back to a part linked in an earlier tutorial.
I don’t want to make a big deal out of any of this as it is not really impacting on my ability to follow the project.
5. Code review and help
Finally, I should definitely point out that there are code review and help features to connect you to someone if you get stuck. Some of this seems to be focussed on the paid-for premium version, which is fair enough, but there also seems to be help available in the free version (don’t know how they’re planning to scale that…) I haven’t tried making use of any of this yet so I have no idea what it’s like.
I’m impressed so far, but the proof will be in how I get on with the rest of the project. In particular:
- Can I get through each tutorial using the instructions without getting too frustrated?
- Will I actually understand what I’m doing by the end, or will it be a copy-and-pasted mess of incoherent tools and frameworks?
I’m documenting my experiences with each section of the project, so if you really want to read more of my ramblings there will be plenty more up soon…