share
Stack OverflowWhat do you do to keep learning?
[+158] [36] tvanfosson
[2008-10-14 13:42:53]
[ polls ]
[ http://stackoverflow.com/questions/201189] [DELETED]

When my children tell me that they hate school, I often tell them that they need to get used to continuous learning because they live in a generation in which constant learning will be required. How do I know -- because I live in a generation and work in an occupation in which continual learning is imperative.

Do you agree with this sentiment? If so, what do you do to keep up with the continual pace of change in the field of software development?


This question exists because it has historical significance, but it is not considered a good, on-topic question for this site, so please do not use it as evidence that you can ask similar questions here.

More info: http://stackoverflow.com/faq

School isn't learning... it's not learning at all. - sparkleshy
Also at school you 'learn' about a lot of things that have zero interest/use to you which isn't fun - Kurru
[+295] [2008-10-14 13:50:15] Jared [ACCEPTED]

Read. Read blogs, white-papers (if thats your thing), books (read books by the truckloads), read anything and everything.

Write. Write down your views and opinions on whatever you are reading about. Make your point of view clear. Blogs are really excellent for this purpose.

Code. Write code every day. In your head, on paper, in a compiler. On a train in the rain on your way to Spain. Write code every day.

Talk. Talk with other programmers about programming. You will be amazed how often you A) never saw something from a particular angle, B) were flat out wrong, C) didn't know enough.


(21) +1. Everything I'd have said. - John Rudy
(1) i like your rhymes - jinsungy
(3) Totally agree. And on the "write" (and blogs reference), my argument has always been, "The best way to learn is to teach. It forces you to get out there and discover what you need to know in order to share it." - stimpy77
jared - i appreciate how you systematically broke this question down into bite size morsels of stack overflowy goodness! - community_owned
+1. Especially on your 'Talk' point. This is one of the reasons I'm moving out west. It helped tremendously while I was going through school to have a buddy (with much more experience in programming) to talk to that really enjoyed what he was doing. - David McGraw
(1) +1 for the spirit. - Galilyou
(12) I wonder if you still have any time for actual development? ;) - Adrian Grigore
+1. superb answer! - cherouvim
Also eat lots of food! - Jason Watts
+1 for doctor Seus like rhymes - Jakub
+1 for the Seus as well. I just read Green Eggs and Ham to my 2 year old and then read your post. Talk about Deja Vue! And I know this answer is old, but if I could just sum up your answer... "Be a huge nerd". Good thing there are lots of us out there! - jeerose
Well written, clear and concise... - crosenblum
excellent answer - mazhar kaunain baig
(2) and to add to the above list - Just visit SO every day! - SoftwareGeek
Thanks for your input Wahid. You mention things that never struck me. - user279521
excellent period - Adil Mehmood
1
[+54] [2008-10-14 14:32:27] Tom

Read

  • Books
  • Blogs
  • Articles
  • Forums

Evaluate

  • Opinions on things that I've just read.
  • Code from peers in code reviews (this helps see alternative ways to solving a problem)
  • Solutions to problems seen on blogs or forums

Discuss

  • Write comments on blogs
  • Discuss solutions/code/thoughts/ideas found on a blog, in the workplace, in a solution, etc.
  • Code from peers in code reviews (learn their way of thinking, give advice for improvement, or learn something yourself)

Practice

  • Write your tools, libraries, and/or solutions to problems
  • Publish your ideas on blogs and learn to take the criticism constructively
  • Keep a notebook with you and jot down fleeting architecture designs for that project you've had floating around your head for a while (then go back to Evaluate ;), ideas for future tools, or thoughts on things you've read.
  • Question the quality of your code while your write ("Can I be doing this a better way?")

I try to never assume that I am good at what I do - just that I am better than I was and I want to be better than I am now. It's basically the journey-not-a-destination thing.


If you change "Discuss" to "Articulate" you spell "REAP" which is not only appropriate but memorable. :) - Dolph
2
[+52] [2008-10-14 14:35:08] pookleblinky

Remember that adage, "it's not work if you'd do it for free."

Notice carefully. Children do not hate learning; they are the most curious creatures on the planet. What they object to, is pointless and uninteresting learning. We all hate make-work, but at the same time all of us have something we are willing to dedicate insane amounts of effort to understanding/playing with.

In programming, unlike childhood, our obsessive interests, the ones in which we can immerse ourselves 10 hours at a time, have the ability to shape the world. Every single innovation in computing has come out of someone spending far too much time alone in a little room, dead to the world, working on something certain to be viewed as boring by the vast majority of the world's population.

This should tell you something. If you're not having fun playing with a new language, or protocol, or technique, you are learning for some other reason than sheer obsessive interest. And no one ever changed the world doing make-work.


(13) +1 "Children do not hate learning" that is sooo true! - Peter Gfader
(1) Vera Birkenbihl is a famous german brain researcher, check out her work about learning and learning languages birkenbihl.de Click on "International" for English content. Sorry, didn't find any good resource in English about her. - Peter Gfader
3
[+25] [2008-10-14 13:46:11] dysfunctor

This issue might be a little too broad for Stack Overflow, but:

Have you considered that the learning isn't the problem? School is many things, and learning is only a small part of it. I also hated school, but have always loved learning.


I understand, but I'm trying to use the occasion as a learning moment. - tvanfosson
(3) School != (or <> for you BASIC people) learning - Brian Knoblauch
(2) Most schools are unable to teach. They get consumed by their secondary goal of trying to instill a respect for authority in the students. I was lucky enough to move to a really good school in 5th grade and suddenly I didn't hate school anymore because the students had freedom! - rmeador
(1) Why do you think that's their secondary goal? Judging by the way schools behave, that's #1. - Jay Bazuzi
In some countries, they have even given up on the respect issue. They just try to keep them off the street and instill at least some basic concepts of the world, which usually does not even include reading. - community_owned
Schools are awful for learning, they're more designed for brain destruction. - Lance Roberts
+1 "learning isn't the problem? School is many things" What can we do to improve this? - Peter Gfader
"I've never let school interfere with my education." - Mark Twain. - Hooray Im Helping
4
[+24] [2008-10-14 21:00:03] DOK

To stay in touch with what's new and what developers are talking about, I read these regularly:

OK, a bit off-topic, but before I start my daily technical reading, I visit Woot at http://www.woot.com/. It isn't just the loot, it's the literary quality of the product description.


5
[+16] [2009-10-26 16:53:52] Dinah
  • Write something you've never done before. A compiler, a web server, an FTP client, implement an obscure sorting algo. Do stuff to keep your brain working in new ways. (Oh yeah, and when you're done, throw it away. You don't want to actually use a web server that was your first attempt at learning the stuff.)
  • Collaborate. If you're a solo developer, work on an open source project. You will grow in completely different ways when working with someone else's code, writing your code knowing it will be seen by others, learning from others, disagreeing with others, ...
  • Teach. At the very least, answer Stack Overflow questions. You learn crazy amounts by teaching.
  • Learn a language with a different style of syntax. If you only do C derivatives, try Python. If you've never worked with pointers, do that. Give Lisp a try. Try to make Excel play a simple game using VBA. The point isn't the quality of the language, the point is to stretch your brain.
  • Write quickly. Write an app a day week. Many of us are perfectionists who aren't happy until our app is solid and gold-plated. Force yourself to focus on how to make something work. Learn hacks and shortcuts. Don't do this too often or you'll build bad habits.
  • Learn 1s and 0s. Get comfortable with booleans, logical operators, and bit twiddling. Not only is this the stuff computers are made of, but there are a lot of programming problems which can be solved more efficiently with these methods that you won't even realize can be if your brain can't think in terms of boolean logic.
  • Get a different hobby. It might actually make life more interesting to have hobbies in addition to computers. More importantly though, you'll think of new types of programs you'll passionately want to write. :)

6
[+11] [2008-10-14 14:06:45] David

I try to learn at least one new thing a day.

It's so easy to get wrapped up in life to forget to learn new things. But if, say, first thing in the morning, you read a tip from "Effective Java", try learning Python by solving a problem on Project Euler, or something like that, you'll find that over time, you've learned a lot!


I've done this as well. Take a problem or an algorithm from somewhere and implement it. - tvanfosson
7
[+6] [2008-10-14 17:34:00] HLGEM

The rate of change is accelerating, people also rarely stay in one profession for their entire work career. So yes continual learning will be necessary unless the children are willing to do manual labor. I personally love learning for learning sake; I don't go a day without reading at least one book. Professionally I read books on new versions of software, I read blogs and sites like this one. My learning is more focused of course when I am looking for a specific technique, but I learn continually. Everthing comes in useful eventually.

As adults we are often the ones responsible for turning children awy from learning, young children want to learn and do it without thinking about it. But when we send children to school, it becomes less about learning than about obedience and following a narrow set of rules. You now no longer have any choice in what you want to learn. Not that this is entirely bad, children don't know what they need to learn to be successful as adults and learning discipline is extremely valuable as well. But what we forget to do is supplement that by giving them the tools they need to learn about the things they are interested in. Or we tell them that there isn't time to learn about dinosaurs because math is more important. Or we get impatient with answering a continual stream of questions (on subjects we aren't interested in and may know nothing about) and so by our tone of voice and body language, we teach them not to ask questions or try to learn anything.

My strategy when dealing with children old enough to read is to provide books on the subjects they express an interest in, and when they ask a question that I don't know the answer to, well the internet is only seconds away. Take time to answer questions (or show them how to look up the answers) and you will foster a love of learning. Be excited when they learn a billion facts about some subject you aren't particularly interested in. Who knows the kid may end up as a geologist or archeologist or something you never considered.

Model that learning behavior in their presence as well, Let them know when you are learning something new for your career. Get excited about learning it in front of them. Get excited when you learn something new non-career related. Play games with them that involve knowledge not just chance. Think it is really cool when they tell you something you didn't know before.


8
[+4] [2008-10-14 19:23:54] Lance Roberts

Never allow yourself to think you know all you need to know, or that everything you know is correct. The unteachable attitude is the deathknell to learning.


9
[+4] [2008-10-14 16:41:58] Ryan A

The best thing you can teach your children so they continually learn is to ask questions. The more they ask, the more they will develop a natural curiosity. You can't really force a child (or even a person for that matter) to learn, unless you use some sort of punishment for failing to learn, which is detrimental and can cause the subconscious fear of failing to learn, and in essence, hatred of learning.

The best ways I've found to learn is by hands on approach, especially when I was younger. Kids are active learners - they like to do things on their own and figure things out for themselves when they can. Not only are they active, they are interested in things because of the fun factor. A child doesn't chase down a frog because you tell them "Hey, go learn about amphibians," they learn because they want to. When things are fun, learning is easy. I like to give props to Randy Pausch's "head fake" technique: where you make something fun and people don't realize they are learning something.

As for me, the best way I keep learning is books and tutorials (for my tech side). I learn a lot more for tutorials than I do from books, but that's just my hands on learning style. If I need to solve an immediate problem, tutorials and Google are my best quick learning tools. Keeping up with other things I tend to watch things like the Discovery & History channels, and read about things I'm interested in. If something isn't interesting to me, or isn't a necessary knowledge to have in this day and age, I usually skim it or ignore it completely.


10
[+4] [2008-10-14 13:44:00] Galwegian

Practicing mostly. And reading.

Oh, and I try to incorporate new technologies into small areas of new projects, where it's feasible.

Also see what-do-you-do-to-keep-your-coding-skills-in-shape-and-how-often [1]

[1] http://stackoverflow.com/questions/92648/what-do-you-do-to-keep-your-coding-skills-in-shape-and-how-often

11
[+4] [2008-10-14 13:49:14] Patrick Desjardins

1- Reading book

2- Read tutorial over the Internet

3- Try new stuff in programming (learning framework... other new thing like LINQ...)


12
[+4] [2008-10-14 13:47:10] tvanfosson

Here are some of the things that I do to keep learning:

  • Attend conferences (TechEd, Agile, CodeCamp)
  • Take classes at the University
  • Digg/Reddit -- technology related mostly
  • StackOverflow -- esp. read questions to which I don't know the answers
  • Books, particularly on Agile development
  • Blogs
  • Participate in user communities

I think the most important thing is to be intentional about learning. To seek out opportunities to learn. To cultivate curiosity about things that I don't necessarily need to know right now. This applies to stuff outside programming as well. I try not to limit my perspective only those things that I know are important but to find ideas and principles in many different areas of interest.


13
[+4] [2008-10-14 13:53:26] Craig Stuntz

I make a point of learning programming languages which are radically different from the languages I use in my day to day work. Learn a functional language like Haskell, a dynamic language like Ruby, a logic-based language like Prolog, etc. When you have absorbed these very different ways of approaching programming problems, you will be able to find solutions which are not obvious from a more limited worldview.


14
[+3] [2008-10-14 14:01:30] Abyss Knight

I keep current by reading everything I can from blogs to technology news sites. Really, being involved in every facet of the industry helps me to stay energized and enthusiastic about what I do. I keep a list of RSS feeds in Google Reader tuned to the various technology sites (Gizmodo, Engadget, Digg) as well as fun things such as XKCD. Keeping my job and field interesting keeps me in the loop, and in the know.

I've wanted to pick up new languages and build small projects in my free time to expand my project management and technical skill sets but I haven't found the time. I guess you could say I subscribe to the "learn more by not coding" paradigm. ;)

One day I need to squish the unit test, build script, system architecture bugs. As a lowly developer I haven't had much hands on time with those things as of yet.


15
[+3] [2008-10-14 13:48:09] StubbornMule
  1. Practice Practice Practice
  2. Work with people more experienced and/or smarter than I am
  3. Read books/articles...Lots of them.
  4. Research. Look into things I have no experience in.

16
[+3] [2008-10-14 14:49:54] Aaron Palmer

I think there's two different styles of learning that I have. One is the "I need to know this immediately because I have a project that needs to be working by Friday." In that case I will usually consult the all-wise google, dig through some forums / blogs, or more recently, post the question to stackoverflow.

The second style is a more continual, ongoing learning that I get through the regular reading of blogs, listening to podcasts, reading books, etc. I like reading things by people much more intelligent than I am, in the hopes that some of it will actually sink in. And often I do find that I have a little tidbit of info floating around up there that helps with whatever issue is at hand.


17
[+3] [2008-10-14 16:38:55] Bill Echo

Call it trite, but I read everything I possibly can. Books, MSDN, blogs, SO.


18
[+3] [2008-10-14 17:11:21] Andrew Cox

I find that the best way to learn is to teach, it really makes you think about how and why things are the way they are. Of course to be able to do this you have had to read a little first :)


19
[+3] [2008-11-01 21:26:34] Black

I want add one single thing to all great answers given so far:

Play:

Playing is the most natural way of learning. If there is something new to learn, try to have some fun with it. If You can learn something by playing, then there is no better way to learn it.


20
[+3] [2008-12-04 15:38:39] Sam

Get a job that is interesting and seek out/invent challenging projects. Nothing makes you learn like doing.


21
[+2] [2008-10-14 20:36:21] rshimoda

I am horribly lazy.

Having said that, I must confess I do not read that many blogs and / or engage into discussion boards neither do I have a blog myself.

However, it is not all lost - I learn things based mainly on needs (both personal and professional).

As a person I have some "pet projects" of my own and I am always on the outlook for something I can aggregate to one of my projects and make it better - I love solving puzzles and this gives me the opportunity to use some very different languages / programming environments.

Professionally speaking, my client demands more and more (functionalities / quality/ non functional requirements) every time we talk / meet. Every new demand almost always cause me to learn a new thing - which is equivalent to the Pragmatic motto of "be a jack of all trades".


22
[+2] [2008-10-14 13:50:14] Jim C

Read books, read web pages, read blogs, then practice what you read.


23
[+2] [2008-10-14 13:48:20] jmein

Reading stack overflow has been a good way to learn for me aside from my own coding projects. You can also become active by coding other than just at work. Join an open source group that is using the language that you want to learn. With our industry learning is imperative as you said so the best way is to put as much time toward it.


24
[+2] [2008-10-14 14:02:28] Tetha

Do you own mistakes. Yes, others have made mistakes, but your own scars burn most. Just start pet projects and adhere to certain rules. Either, they work out, or they are going to fail and the project will crash and burn. In any case, you learnt a practice you should avoid or use further.

Furthermore, I agree that you should write about those crashes and burnings, even though I don't do so myself yet ;) Writing things down makes you think harder about them and understand them deeper -- or you learn areas you did not explore yet. However, don't let this stop you. If your current results are interesting already, publish them and just say "I have no clue what happens if you do THAT. I'll try that later". Others might help you or even try it for themselfes.


25
[+2] [2009-10-26 16:31:28] Pace

I am in total agreement its about reading / discussing as much as you can.

One thing on reading though. I find it sinks in almost 100% more if I read it outloud to myself. It doesnt have to be loud outloud, it can be a mutter. But concentrating on saying the words seem to make things just stick more for me.

just my 2 cents...


26
[+1] [2010-01-06 00:28:34] iChaib
  1. Mostly from twitter & reading blogs,
  2. Reading books
  3. Programming again & again on your free time
  4. Most effective: teach others, it's an amazing techniques to discover your flows on a subject you thought you mastered

27
[+1] [2008-10-14 19:27:20] John Nilsson

Learn radically different things. Only focusing on one topic, like programming and technology, will not do. By finding new kind of things to learn you keep the brain in good form. I read somwhere that while alzhimers will phisicaly destroy the brain it's possible to avoid psychological symptoms entierly by doing this.

I guess it's just a matter of keeping it flexible to have usable neurons at your disposal when needed.


28
[0] [2008-11-16 16:35:56] hendrixski

Yeah, the definition of learning keeps changing. If "learning" means rote memorization, this generation will refuse to do that because Wikipedia and Google can do it for them. So yeah, they'll hate that. But fun stuff like problem-solving they'll probably like.

What I do to keep learning is actually having real-life problems to work on. :-) It's much better than some academic thing that you don't see the value of.


29
[0] [2008-11-24 03:38:41] Jon DellOro

This is probably common to everyone that posts here, but I try to solve programming problems in the best way possible, rather than the quickest way.


30
[0] [2008-11-24 03:41:44] Uri

I've been in academia for a long time so a lot of new technologies passed me by. I try to read a general developer's resources (e.g., Dr. Dobbs print version) to at least get a feel for what is going on, see the technologies, and in some cases get a feel for them from source code excerpts.


31
[0] [2010-01-07 15:05:11] crosenblum

Learning is like a drug, for me, i love computers, programming, been that way for me since my 1st computer, Apple 2+.

Because then your fingers become the doorways for what your mind can imagine, conceive and visualize...

And learning stimulates our brain, and pushes to grow, and learn from our mistakes, and other people's mistakes, and enables us to be more efficient with our time...

I just don't get why some people, just don't care to learn more....


32
[0] [2010-01-07 15:19:57] JB King

I can agree with part of the sentiment. I wonder if you understand what are the elements that are part of school that are outside of continuous learning though. For example, what are the social dynamics that your kids experience on a daily basis? If they are being picked on and bullied at school repeatedly, then telling them to "suck it up" isn't a great answer in my opinion. How openly do your children discuss the problems they have at school? That may also be useful to know.

I keep up with some things by reading, discussing and trying out things. At the same time, there is something to be said for knowing what I want including which kinds of duties, what skills do I want to develop, what technologies would I like to explore, etc. Part of my job involves learning what I need as I need it,e.g. I don't know how all the different Sitecore search connectors work because I don't work for Sitecore but I do have to know how a specific search connector for Sitecore works as that is part of the environment where I work.

Just to give an example of being picked on, back in Grade 11 Biology there were these 2 students, one who sat infront of me and one who sat one row over and behind me liked to play this game involving making a little "o" symbol and trading blows in class where I'd get the odd blow as one would miss the other. The one almost behind me also liked to take a pen and write on my Bugle Boy shirts that I'd wear to school and the ink didn't always come out. One time there was a student teacher and apparently I turned red enough that there was concern about me that led to me being asked a few things and so I was crying with tears and a runny nose and hyperventilating that day that just wasn't a good day.


I can't relate. The biggest problem my kids have at school is boredom and getting enough advanced placement/honors classes. - tvanfosson
33
[0] [2008-10-14 20:56:28] thvo

While reading, writing, coding, and talking: strive to understand how things work under the hood - preferably all the way down the rabbit hole. For example, understand how everything below web services works all the way down to HTTP (I would prefer all the way down to machine code or even transistors, but that may not be feasible). This will help greatly in understanding new things, since they most often build on existing things.

Also, to answer your second question: learning should be valued in its own right. The mind finds unlikely connections between seemingly unrelated things you already know, which will also help you understand new things more easily.

"School" and "learning" are often only mildly related, unfortunately.


34
[0] [2009-02-10 01:08:40] Ray Vega

I read Hacker News [1] "to keep up with the continual pace of change in the field of software development".

[1] http://news.ycombinator.com/

35
[0] [2008-10-14 14:36:08] Cheery

I don't see learning as an activity. Learning is something that happens when you dispatch complex activities. Some people love those, others doesn't.

When your children tell you that they hate school, they mean what they say. They do not probably mean that they hate learning. Why would they? Learning is not an activity, it's a result from certain kind of activity.

How do you put your children to learn things then though? Let them face challenges and give them activities. Give them a reason to pick a book, other than a simple reward or punishment! Of course this is hard and requires you to learn couple of things as well. Perhaps biggest one is that you need to learn know your children and understand their traits. You need to find out their dreams and put them walk a path towards achieving them.

Anyway, learning is all about achieving something better and maximizing enjoyment with your life. You learn to roundhouse kick that apple down high over your head.


36