Week 10 of Polycademy (T1, 2013)
The students have almost finished their 11 week journey in building their web application and potential startup. It has been an amazing experience seeing people with no prior programming experience get used to using third party libraries, gluing them together to solve a domain problem, thinking about the RESTful architecture of their web application, and debating the merits and performance of different algorithms or methods in solving the same problem.
The course has evolved since Polycademy first started up, my philosophy in teaching has always went with hands on deployment, and instant practicality of the theories and practices to their own web application. However at first the focus was on basic CRUD (create read update and delete) applications, I've discovered every student's web application requires a customised nurturing, as they face different problems and have different design/development requirements. The perspective of the developer was also important, as that affected what they thought was important to the completion of their web application. This course therefore focused on the commonality between software development theory/practice, but also provided exploration in specialised APIs or libraries (application programming interfaces) that solved a particular domain problem. The architectures of each student's web application hence followed a RESTful style server sink that provided CRUD interfaces and data processing, but on the client side, we used AngularJS and jQuery in order to create single page application user experience. A single page application (SPA) is a client side javascript heavy application, that has two main properties. The first is that it interfaces with a server API to provide data dynamically through AJAX or WebSockets, and secondly all templating, page state transitions or animations take place on the client side. What this means for the end consumer is instant page transition or loading, real time updates, collaboration and synchronisation between the multiple clients through a Pub/Sub pattern. Overall it's a better user experience, it grants more power and flexibility to the developer to craft experiences closer to a desktop application while retaining all the advantages of distribution in a web application. But I am digressing on the technical details. Just check out this demo of AngularJS with animation combined with AJAX loaded data. In user experience, people use motion as way to detect life. When you look at a dog, if the dog isn't moving, it's either dead, or a statue. Extrapolating to web applications, animations make an application come to life (real life things don't just appear and disappear), and that's why we marry the front end with the back end. (BTW I'm currently working on Polycademy V2 which will incorporate a number of new features and user experience aspects of SPAs.)
In order to achieve these results, students had to master two programming languages, build tools, solution stacks, libraries, external APIs, markup languages such as HTML/CSS, preprocessors such as LESS, frameworks such as Codeigniter and AngularJS and of course computer science and software engineering theory. One of the students mentioned that he wanted to get to the stage, where he could look at any new library or programming language or third party API and know where to start to apply it. With regards to this, two problems always exist when a developer finds something new, firstly that there is often assumed knowledge even in the documentation, and secondly where to find the assumed knowledge. To overcome these two problems, the students had to learn a couple lessons not so much in technical programming, but an outlook on life. Firstly to not be afraid to dive into the rabbit hole of the documentation or wikified knowledge base. It is a learning experience in itself and a rewarding one, which leads us to life long learning. Often the answers are hidden under several layers of links, however along the way you'll discover nuggets of knowledge. There is of course a large amount of noise on the internet, so I've had to help them locate the signal, but it takes time to be able to quickly filter out the noise from the signal. Secondly was not to be afraid of errors. That is to understand that the computer uses errors to tell you what is wrong, and it is also how they lead you the right solution (a philosophy subscribed by TDD practitioners!). A silent error is the worse error.
It's been a hard-won journey for the students. Some were grappling high level abstraction, functional programming, object orientation, event driven programming, state management, communication architecture, design patterns and spherical trigonometry all while studying full time at university or having full time jobs. There is a quality to the satisfaction, when you start to see connections form between different software stacks and have it all work in front of you. Yet their journey has not finished. Their applications will require polish after the course, and of course there is always more to learn, more technologies to discover, and more lives to change.
We had a meetup last week with all the mentors and advisors, current students and potential future students. It was good to catchup and discuss the future of Polycademy. One thing that came up was an end of course demo day event for the students.
We decided to organise two events, a practice pitching session for the Polycademy students on Saturday 13th April, which is open for anyone to participate. Anyone who's interested in attending Polycademy should also come and check out the work.
Secondly is the big demo day event, and this is basically for all entrepreneurs who are working on their technology startups to pitch and showcase to an audience of other entrepreneurs and people who are interested in tech startups (I'll also be inviting potential employers). This is of course open to all people, it will be an unconference where the audience can act as lightning speakers or have full presentations on the web application or other projects they have been working on. This big event is scheduled for Friday 19th April last day of the course for cohort 1. And food will be provided.
- Entrepreneurial Practice Pitching Session: http://www.eventbrite.com.au/event/6190527033
- Canberra Tech Startup Demo Day: http://techstartupdemodayautumn2013-eorg.eventbrite.com.au/
Oh and lastly, Polycademy is setting up a meetup group dedicated to web, mobile and desktop application development. So join up to the meetups to discuss interesting developments in technology!
Don't forget about the blogs of the students! They'll be up on an alumni page.