Posts Tagged ‘learning’

Frameworks Make Reading New Code Hard

Sunday, January 25th, 2009

In an effort to increase my knowledge of both Ruby and Rails, I have been keeping my eyes open for interesting Ruby/Rails apps to peek at the source code of. Whilst looking at @j_stirk’s website, I noticed it was running on Radiant CMS, a Ruby CMS. So, I grabbed a copy of the source code.

Whilst I was having a peek at the source, I began to think that I was in a little over my head. I managed to muddle my way through the config/routes.rb file and figure out (with judicious use of Google) what requests were being directed to what controllers. The problems started happening when I hit the controller, and started seeing filters and symbols and statements that I didn’t know where to go next to find out about.

Confusion

At first I thought it was to do with the fact that I don’t really know Ruby. I know enough to recognise it, and muddle through basic syntax, but I don’t know any tricks, any coding conventions and the nuances of Ruby programming. However, upon reflecting on my dilemma, I realised this isn’t something that was restricted to Ruby, Rails and Radiant CMS.

I remember last year looking into Symfony, before deciding that PHP was too god-awful ugly to waste my time on. I recall that too had a fairly high learning curve, and looking through an existing Symfony app, it was very hard to figure out what exactly was going on. There was much API browsing.

A few years ago when I first learnt ASP.NET, I was in a similar situation. Server tags and user controls and page events and assemblies were all very new and very confusing to this ex-PHP & ASP 3.0 developer. I stormed through a book on ASP.NET and was thrown head first into a contracting gig before catching my stride again.

I love frameworks. Ever since I heard about this thing called “Rails” a few years back, and realised there were a few similar frameworks written in PHP, I’ve been in love with frameworks. And I’ve always learnt them from the ground up, creating my own application. Last night was the first time I’ve ever tried to learn a framework from an application.

And it’s hard.

While frameworks increase programmer productivity and make maintenance easier for programmers who already are in the know, they make things really hard for a new maintainer who is not familiar with the code to dive in and figure out what’s going on. Not only do they have to learn the individual nuances of the programmer who wrote the application, they also have to figure out how the framework works.

Learning Mathematics

Monday, December 15th, 2008

Although I’m proud of my education and work experience thus far, the most important thing I have come to realise is where the vast gaps in my education are. A little too late did I realise that the degree I really wanted was Computer Science, and instead I studied Software Engineering.

If you need someone to analyse a complex problem and break it down into it’s components, I can do that. If you need someone to manage a project and make sure your resources are optimised, I’m your man. 

However, during my degree, we only breifly touched on mathematics and algorithms. If I recall correctly, we covered some basic boolean logic and very basically touched on sets. We didn’t really get into the nitty gritty stuff that I’ve seen CompSci graduates talk about.

However, I’m not the kind of person who would shrug “Oh well” and go about my business – I’m taking it upon myself to learn in my own time.

I don’t know how other people learn. Although I’ve done a little reading into it, I’m still trying to come to terms with how I learn. While trying to study mathematics, I’ve realised I have a tendency to explore various elements of a topic in depth – I tend to dive into the intricacies of a concept, then go back to the shallow level and move on to a new concept.

However, I’ve found that this is very difficult to do with mathematics. All of the higher level concepts rely on lower level concepts, and there is much cross referencing. I might be looking into Euler’s Totient function, which will lead me to the concept of coprimes, which will lead me to rings, which are contrasted to groups, which were referenced back in the totient function! What’s worse is all of these topics, especially the more abstractable rings and groups, extend past the real number systems, which I haven’t even considered yet.

I’ve found the best way to learn mathematics is to go broad and shallow, pick up the basic concept of all related concepts, then slowly work your way down. It results in a kind of net of understanding that isn’t complete, but allows a person to easily recognise holes, and more intuitively link concepts together.

Learning methods and methods of thinking are both subjects that fascinate me, and I’ll probably have a deeper look into it when I get some time. I think these topics have a vast impact one what kind of knowledge people can learn easily, and can account for people having a “knack” for something.