Sunday, December 11, 2011 #

Are Young Programmers Missing Out on the Fun of Programming?

I read two blog posts recently that got me to thinking. The first is a post entitled Programming Isn't Fun Anymore by Eric Allman. The second is a response to the first by Dean Wampler called Programming can be fun again. These brought the question to my mind as to whether or not new and young programmers are missing out on some of the fun parts of programming.

 

Eric’s post explains that some older programmers are realizing that most development work (especially in the OOP world) involves learning and stitching together tools and frameworks in order to support the smallest bits of programs. He laments that older programmers use to program algorithms in order to get their jobs done. Now, you learn libraries that implement those algorithms for you and you don’t really have to know how they work in order to just link them all up and make a program work. I think that he may have a point, and any new programmer can certainly understand.

 

Most college programs start teaching programming with languages like Java, VB, and C#. Some, like Stanford or MIT CS courses may make you take C and LISP courses, but many other colleges don’t bother with these much. I personally started with Java and then moved to .NET. I never learned C, C++, or any functional languages in school. So the question comes up: If we are starting with libraries that write algorithms for us to the point that we don’t really need to think about them, are we missing out on a fundamental part of programming? I tend to think so.

 

I feel that I understand much more now about programming than I did coming out of college. This may seem like no surprise but I have worked hard learning everything on my own. It has taken considerable effort to learn what I have. It could be all too easy for someone to continue just connecting up this framework with this library and somehow it all works. Older programmers have a different perspective on how bloated these kinds of tools ultimately become. Then what inevitably happens is we become dependent upon these tools in order to do any programming. Is this really beneficial or desirable? I tend to think not.

 

I recently took some time to really learn some basic algorithms and data structures. I am still learning but I can say that I have implemented a linked list, which then I used to build a stack, a queue, and a priority queue. I have also implemented a binary tree as well as a hash table just so I understand how they work internally. Sure, there is a stack, a queue, a dictionary, etc in the .NET libraries, but I’ve always been uncomfortable using something that I do not fully understand. That is where the disconnect occurs between older programmers having to implement these algorithms themselves and just using a library. With a library you are always running the risk of using something which you do not understand fully. This can also contribute to creating programs that grow into bloated messes even though they are following a pure OO methodology. All this because one simply does not know any other way.

 

This brings me to the second post. Dean mentions that functional languages are making programming fun again because of their concise and elegant syntax that is also very powerful due to its declarative nature. You can do more with less code without the bloat of libraries and frameworks. This is an interesting way of looking at things. I can certainly understand now that I have learned some Ruby and realize how nice it is since it borrows heavily from functional languages.

 

With this in mind, I have decided to take a good long look at functional languages starting with F# since I am already comfortable with the .NET framework. I also would like to explore scala, clojure, and maybe even scheme or some other lisp. It’s this kind of discussion and exploration that makes programming fun for me. So even if you are new to programming, there are ways to keep things interesting and fun.

 

My advice to young or new programmers: Step outside of your comfort zone. If you are primarily an OOP developer, then try functional languages. It’ll help you think differently and you will probably have some fun along the way.

Posted On Sunday, December 11, 2011 12:52 AM | Comments (2)

Copyright © jboyer

Design by Bartosz Brzezinski

Design by Phil Haack Based On A Design By Bartosz Brzezinski