views:

206

answers:

7

I'm a postgraduate student in a Chinese college currently. And I find I need to learn a lot of knowledge related with my area and interest, since the four years' undergraduate time was wasted with too much sports and other things. So I collected a pile of classic books(from this list ), and planed to read it one by one. But unfortunately, I can't have a patience to read it through and really get some fruits.

I think my problem is I'm too greedy and want to learn everything in a short time and just want to know the shortcuts of everything(I like to search in the lifehacker). But seems reading books and practice has no shortcuts at all.

Besides, I subscribed a great amount of blog feeds and download lots of videos and audios, but seems I can't even work through one!

I don't know whether anyone else had the similar experience? And how did you guys beat it over? And can sit down to learn step by step to get fruit consistently? And how did you guys handle so much knowledge in the info era?

btw, my area is software development(mainly on web based softwares).

Thanks.

+1  A: 

I do it as two separate activities. I read the classic books, but I also am constantly trying to build something, and I read whatever I need to in order to do that.

There is a book called "Seven Habits of Highly Effective People" (Covey) which highly influenced me. One of the habits is "Sharpening the Saw", which are the things we do to build production capacity in the future. A lot of the book talks about Producing vs. Increasing Production Capacity -- and I think it works best to be doing both.

Lou Franco
+8  A: 

OK, I'll stick with the "fruit" theme - how about GRAPE: "Go Release A Project Everywhere" - by that, I mean give yourself a little toy project to implement in an area you want to get more proficient in, and release it as open source.

Not only will you "learn by doing", but by releasing it you may get some feedback from others with more experience.

I've got more fruit based mnemonics on the same theme if you want to hear them?

  • PAPAYA : Practice A Programming Area You Admire
  • BLUEBERRY : Better Language Understanding/Experience By Engineering Regular Releases - Yay!
  • RAMBUTAN - Read A Manual But Understand That Ain't 'Nuff
  • OK, I'm done. But seriously, learning by doing works for many!
Paul Dixon
And yes, we're glad you didn't say BANANA!
Alec
+1  A: 

If you want to make software then just do it, reading about it without doing it isn't going to help much.

Think of something you want to build and then build it.

bpapa
+1  A: 

Learning style depends on the person. Not everyone can read a software engineering book from cover to cover.

Make sure you make the most of what you have to learn to do your job. For instance, if you're doing work with CRUD, learn about CRUD properly - read around the subject, ask questions, etc. I find that things stick better when you're actually working on something concrete with the concept, because what you're picking up relates directly to what you need to do - things you've read knit with what you're experiencing and you remember them better.

(Other people would phrase this as 'go write stuff and learn things doing it' but I find that if I invent a project as a learning experience, it doesn't hold as much interest as externally motivated projects. As I say, depends on the person.)

You should also consider formal training courses - if you pay good money for a course you might have a bit more incentive to learn than when you were at college - or conferences - where listening to speakers might give you motivation.

ijw
A: 

You need to have a real problem to solve and a real deadline ... something that lights a fire under your butt and then you'll learn. If you can't challenge yourself, find someone who will, and who will hold you to it. Like a boss.

Richard Hein
$#!+ on Debra's desk. Like a boss.
bpapa
+2  A: 

I strongly second the project idea -- I know very few programmers who can actually sit down and read a book and get something out of it. Most are like yourself - they don't find that can actually read through the stack of books. Probably because simply reading doesn't give the insight that trying to do things does.

I'd recommend the following:

  1. Pick a project you can get excited about. Something complex enough to be interesting, but simple enough to have an obvious starting place. And something that uses technology that you are interested in learning.
  2. If you read a book, read the first, second or third Chapters. In just about any technology book, the first chapter is a fluffy introduction for the casual reader, but the second and third chapters often cover some general insights, best practices, and thoughts for covering the technology.
  3. Then, only refer to the books when you need to know how to do something. If the book doesn't have easy to understand chapter titles and a good index, throw it out.

The only time I'd recommend a cover to cover read of a book is when the book covers best practices or people-centered skills. In those cases, the author may be building a hypothesis, detailing insights and giving a conclusion in such a way that reading the material in the order that it has been packaged is useful.

But for me, the perfect tech book is one that can be read in any order... rather like Wikipedia.

bethlakshmi
I guess your front-3-chapters approach should work. And I like wikipedia too. Really thanks.
Tower Joo
+1  A: 

As someone who has been there, I know exactly what you are talking about when you say that you have trouble getting through some of these resources.

Some of those books in the list won't be very helpful to you until you've maybe had 2 or 3 years full time programming experience. It's sometimes hard to appreciate the advice they are giving you if you haven't experienced what they are talking about. For example, they might talk about the importance of unit testing, and point out problems you will encounter if you don't do unit testing. If you have never stumbled upon those problems on your own, you won't really be able to visualize what they are talking about as concretely.

Some videos, articles, etc. will be very specific to a particular task or specialized topic. Unless you have a project you're working on which deals with that topic specifically, don't bother learning the topic in detail. Skim over it so you can come back to it later if you find a need for it. The reason you don't want to try to learn something that you aren't going to immedietely use is that you will forget it if you don't use it! So you will waste a lot of time reading articles and listening to videos if you aren't going to apply the concepts right away. Take it one topic at a time!

It took me two years studying Computer Science in college, and probably two more years of programming on my own, before I was really capable of accomplishing anything very substantial with my skills.

When you were a child learning math, multiplying numbers was probably slow and difficult at first, but as you did it more it became easy and almost required no thought at all. This is why they don't try to teach you algebra first, because you'd be trying to learn how to add, substract, multiple, factor, etc. all at once, and it'd be impossible to figure it all out.

Sometimes I would download an open source project, or read an article, and I couldn't wrap my head around the code and understand what was going on. Later, maybe months or a year down the road, I would look at the same thing again, and it would make perfect sense. This is because a complex project might have alot of concepts unfamiliar to you, and it is like a puzzle with so many variables that it is nearly impossible to learn all the concepts at once. So you have to begin trying to do very simple things, so that you are only learning one thing at a time. When you learn something, practice with it, experiment with it, so that you become very familiar with it. If you have a particular programming language you are interested in, then we can probably give you more specific suggestions on where to start.

When I am learning a new language, I generally just read up on the basics of the language. After I am familiar with how a language works, it's syntax at least, then I figure out what I want to create, then I start writing code, and I learn things "as needed". For example, the project I'm working on right now needed to use socket connections. So I look up socket connections specifically and learned that from simple examples. I don't bother trying to learn everything that I could possibly do with a language, because I would only end up using maybe 10% of it, and forget the rest from lack of use. I like to skim over things sometimes and see what is possible, that way if I can come back to it later and use that capability if I find a need for it.

Come up with an idea for something very simple. Maybe a simple little game where you click buttons, and the button changes to a random color everytime you click it. It sounds simple, but if you are learning the language for the first time then you will probably learn alot just from doing this.

Once you become a more mature programmer, you can revisit some of these articles, videos, books, and you will have the "oh yeh, I know what they are referring to" moments. It won't sound as foreign, and you can develop your professional skills then. Think again of the algebra analogy. If I try to teach you something about algebra, I might tell you, "now multiply both sides by the variable A to move it to the other side of the equation", but if you don't know what it means to "multiply" something, then you can't even begin to understand what I'm talking about. If you pick up a book on algebra, they are not going to teach you about multiplication, division, or subtraction. The same is true of programming books. Some books are intended for those who are just starting programming, and some books are intended for those who already have experience. The books for experienced programmers will not cover the basics, and you will be completely lost if you try to read one of these. Often the preface section of the book will tell you what kind of knowledge you should already have. For example, the book I have here is "PHP Cookbook" and it has a "Who This Book Is For" in the Preface section at the beginning which states "If you don't know any PHP, make this your second PHP book. The first should be Learning PHP 5". This particular book is actually not intended to be read front to back, but you actually just read the sections relevant to what you are working on.

Good luck.

AaronLS