My week of JavaScript
I have had mixed emotions with regards to week 5 of Makers Academy. On one hand, extreme frustration in how after studying one language (Ruby) for 8 weeks (4 weeks pre-course) I was suddenly expected to write a complex program in a different language (JavaScript) that I had only seen for the first time the day previously, and on the other, joy in seeing how a new language seemed to be more integrated and easy to use directly within the browser, implementing almost immediate visual results on screen. I will start with the frustrations first.
I am frustrated that after learning Ruby for 8 weeks and struggling to write a program to simulate aircraft landing and departing from an airport in that language, I was expected to write the same program in JavaScript after only seeing it for the first time the day before we started re-writing it. I can completely understand that it is important for a developer to be able to easily transition from one language to another, and to see the similarities and understand the processes to apply it, but I do think you need a foundation level understanding of say JS functions, objects, variables etc before you start working on more complex problems. I can see some benefit in ‘throwing people into the deep end’ so to speak, and getting them to work together to figure stuff out for themselves, but without a solid foundation to start, it is easy to pick up bad habits and misunderstand things, which I am now doing. In order to gain some fundamental knowledge of how JS functions and objects work, I am completing the Codecademy JS course and watching videos from the Hack Reactor series lead by Bianca Gandolfo (which by the way are excellent).
On the other side, Makers did set an excellent week 5 challenge to design a thermostat. Although from a professional level, it would have seemed very simple, it was very exciting to write some tests, followed by the code and then apply JQuery to an HTML file to actually see visual results first hand on screen, in the browser. This felt a lot more immediate than Ruby and much more ingrained within the browser itself (which I guess it is, being JS) and they joy in seeing a button actually do something on screen, based on the code that you wrote, was quite exciting.
Unfortunately the challenge set for the weekend seems to be above my level of understanding and ability to do from scratch, so I am having to rely on internet resources to understand how to do it. We have been set a challenge to write a ten pin bowling scoring system, and while it seems to be a staple ‘kata’ in the world of coding, trying to appreciate exactly how to get it to work, let alone design an interface to run it, is difficult. We have been given the entire week to work this out, however without help, I do not think I will be able to do this one. Needless to say, I will continue to try and will update this blog if I am successful!
I have mixed feelings about the approach implemented in getting us to learn JS. On one hand I can see the importance of being able to take processes and higher level practices from one language and apply them directly to another, but this probably only works when you have a high enough understanding of those processes and constructs of the first language. I do not feel as though I am even past the basic level of understanding in Ruby yet, let alone being able to apply this to another language, so there is a danger to feel demoralised and frustrated as I have not even consolidated any understanding or development of the first language. Perhaps I am wrong and only time will tell, but I feel that a balance could have been struck with a series of day lectures on JavaScript fundamentals first, before being thrown into complicated coding problems.