I learned the bases of programming at the age of 9 with a private (particular?) teacher who taught me with QBASIC. A few years later at the age of 14 I started learning ActionScript on my own after discovering that you could code in Flash, I didn't even know what an array was and I was really happy when I understood it just by reading code examples, I later bought a book by Colin Mock and understood OOP. At 16 I met a Software Engineer and he told I should learn Java so I went to a library, got a Java book, photocopied it (don't tell anyone!) and returned it. I began studying with a friend and over time we got really good. He got a job as a Java programmer and soon I was working there too both at the age of 19. I did mostly C work but still it was cool.
Two years ago I was at a point where I thought I was such good programmer and specially a Java programmer in particular. The thing was, after 5 years of learning Java, starting in 1.4 and seeing it through the Java 5 leap and 6 afterwards I pretty much knew whole standard library, some frameworks and the tools Netbeans and Eclipse. Having read a lot of Java books, knowing low level stuff, threads, watching the occasional advanced videos of talks online. Life was good. I knew there were a lot of people better than myself but I still thought I was doing good for my age at that time (21).
Until one day I bumped into a Scala presentation by Martin Odersky... (I can't seem to find it again)
It showed some neat stuff and the massive code reduction for some tasks, it also was totally inter operable with Java so it was a win-win situation. From then onwards I started learning Scala and as soon as the "official" book came out I bought it and I read it from cover to back in 4 afternoons after work, no kidding.
From then onwards my reality changed. I discovered I knew nothing at all, seriously. My whole world expanded enormously, I have been in a learning rampage ever since. Functional Programming, Actors, Monads, Continuations, Higher Kinds, etc. I even recently started learning Haskell and I'm planning on eventually going to Lisp.
I'm now willing to tackle more complex problems and really trying understanding all those concepts, my programming has changed a lot and not only because of using Scala, I ended up doing some trait like pattern with Templates in C++ code at work to solve multiple inheritance issues and making a really cool API.
As of today at the age of 23 I have not even finished the first year at University because working 40 hours a week doesn't leave much time to study so I'm not a Software Engineer (yet). Even still I love Scala and the complexity it forces me to face everyday that keeps pushing me to learn. I have matured so much in the last couple of years and I plan on doing so for a long time.
What's your excuse for not learning and dealing with new complex stuff?
Learning complex stuff is cool and I definitely agree with you here, but... the fact of life (at least my life hehe) is that most of us in IT will never be able to use it. Even selling Scala with all its Java-interop to higher management will be difficult. But seeing that most people I tend to work with have trouble enough with Java I don't even want to imagine what a more to Scala would cause. At the very least they would need some schooling (and what employer here in Spain would do such a thing? Very few I fear)
ResponderEliminar