Why do novice programmers seem to shy away from libraries?

I noticed a lot of questions from new programmers that can be solved with the help of libraries. When a library is offered, they often respond "I don't want to use the X library." Is this a learning curve? or? Just curious!

+55
language-agnostic
Aug 27 '09 at 23:41
source share
40 answers
  • one
  • 2

Many new programmers still work at a very low level of abstraction, learning trade. This is what everyone must go through. It will take some time to “move up the stack”, so to speak.

Once programmers realize that most of the time they spend solving the same problems as anyone else, and the goal is to realize the "value of the business," then they can really appreciate the value that a good library brings.

+106
Aug 27 '09 at 23:59
source share

When you are still learning more and more new languages, you also need to learn how to use a third-party library, which may look too much. In addition, libraries are generally poorly documented - or at least have documentation that seems completely opaque to the new programmer (er).

So, faced with an attempt to solve the problem X, “using the library” may sound like “solving the problem Y THEN problem x”.

(In addition, their teachers told them not to do this. I managed to go all the way, although my subclass in C ++ existed without studying STL. The boy did it, prepared my noodles.)

+34
Aug 27 '09 at 23:48
source share

Some people, faced with a problem, think: "I know, I will use libraries." Now they have two problems.

Seriously - this is a reasonable way for beginners already overloaded with a new language, software environment, paradigms, keystrokes, etc., to respond to the offer to use the library. If you have a solution, but it does not work, there are many potential sources of errors; sorting through them is a challenge. Adding to them may seem irrational.

“Use library” means to find the library, load it, install it into the project and call the desired function. It is not difficult if you are used to this (and there are no corporate policies against it, and you have reason to trust the supplier, and the library itself has minimal dependencies, etc.). But if all this is new to you, when you ask a programming question and get an answer to the system configuration, it may seem useless (even if it is not).

+22
Aug 28 '09 at 0:07
source share

This is almost always because their professor told them that they cannot.

Sometimes it’s just because they want to study it themselves, but I would say that it’s rare.

+17
Aug 27 '09 at 23:43
source share

This is a learning curve.

+13
Aug 27 '09 at 23:42
source share

Using libraries is probably one of the worst things a programmer can do. Instead of learning programming, they learn to use certain APIs that have been implemented by other people. I'm not saying that every programmer needs to understand every thing they use, but programmers who know all the inputs and outputs of a computer (digital logic, building op codes, etc.) usually have an edge over people who started with something like Java Swing and just dump libraries.

In production, this, of course, is another matter. But I think the best course is to "do everything" once, at least. Writing your own web application framework from the very beginning improved my programming skills and abstract abilities. This does not mean that I will use this structure if someone finds me to create an application, but I know the strengths and weaknesses and reasons that are used for the "giant" frameworks, and this can help me choose a specific structure for a particular situation.

+10
Apr 03 '10 at 19:04 on
source share

I remember removing from several libraries simply because I wanted to see if I could create my own algorithm. I didn’t want to just give up and let someone do this work for me, but I wanted to learn from my mistakes. As soon as I came up with a solution that I was pleased with, I looked into the libraries.

So for me, I just wanted to see if I could do it.

+9
Aug 28 '09 at 0:56
source share

I always have a desire to do it myself, but sometimes I see my limitations. Most recently I downloaded the library for creating PDF documents, but this is almost the only time I can remember.

At least for me, (trying to) myself, my way of learning.

I got the impression that many new programmers do not consider this their own work if they use the elses libraries.

+8
Aug 27 '09 at 23:45
source share

I do not think this is necessarily bad. The use of libraries is great; it saves time, effort, mistakes, etc. However, you learn very little in this process, and for new programmers, the goal of training is to learn. To answer the question, I think that they tend to shy away from libraries simply because they are not used to using them, and perhaps they don’t know that they exist.

+7
Aug 27 '09 at 23:47
source share

For many poorly documented libraries that are either freely available or in languages ​​that do not allow you to control containment and visibility very well, it can be quite difficult to guess how the library should be used.

After you have been using it for a while, you are used to quirks or read other source code that taught you the right way; but until then it can be quite annoying to use a poorly organized library. (or even a well-designed one that is not very well documented).

If you do not have the source code in the library, this is another problem - you have no control over how your program works. Nowadays, this is much less common, but still happens in the case of the acquired library.

+7
Aug 27 '09 at 23:49
source share

Most of the points are closed (for me the main one is the learning curve), but one of them, I think, plays a role:

Because learning about the library is less exciting than coding the same functionality.

+6
Aug 28 '09 at 9:57
source share

More libraries = less paid hours.

+5
Aug 28 '09 at 0:15
source share

I think that there is a lot of time that needs to be invested in understanding the purpose of the library - yes, the learning curve, but this is more that novice programmers probably do not know what they need until they have a lot more experience.

+4
Aug 27 '09 at 23:51
source share

Because it's funny.

+4
Aug 28 '09 at 0:38
source share

Because part of the maturation as a developer learns to quickly identify problems that can be solved by the library or an existing solution and which need personal attention.

+3
Aug 27 '09 at 23:48
source share

I am a programmer, not a psychologist! :)

It was a long, long time for me, but it was because I wanted to learn and experience. I did not want to use something that I did not understand, therefore, if I had not thought that I understood the library and could program it myself, I tried not to use it. Perhaps there was fear; programming gives you a sense of control, and using the library is the undoing of this control.

+3
Aug 27 '09 at 23:53
source share

When you try to learn to do something, at any time something happens “magically” by calling AwesomeClass.doAwesomeStuff (), you end up losing some control. When you are “new” and don’t know what you are giving away, or why it can be unpleasant. This was my main action against Rails when I first learned it. So many things just “worked”, and I didn’t know why without digging a lot of Rails sources (which I usually didn’t manage to do).

At least that I undertake.

+3
Aug 27 '09 at 23:56
source share

The same thing that more experienced developers do -

Because it is often so difficult to learn how to use the library to write the part of it that you need. And at least then you can understand how it works when it does not do what you expect.

An experienced developer only has experience in understanding how to use libraries to be more likely to consider it. An inexperienced developer is another thing to find out ...

+3
Aug 28 '09 at 10:05
source share

The answer from noob is “I'm not sure how to use libraries or even how to access them or how it works”

+3
Jul 08 '10 at 23:52
source share

Libraries often come with the overhead of learning some API and its paradigm. It can get complicated pretty quickly, and I could easily understand that beginners would prefer something a little in their comfort zone. In my experience, I have found that most libraries and frameworks seem to do some tedious routines very well, but when I need to either expand this functionality or use it in a way that is not intended, it can be several.

I think this is one of those things where "practice makes perfect."

+2
02 Sep '09 at 16:22
source share

Well, a beginner’s goal may be more of a solution to a problem than an implementation of a solution. Perhaps what they really want to do is figure out how to solve the problem. I mean, if they still study hard in the learning phase, it is possible that they don’t want to be given easy answers.

+2
Mar 03 '10 at 20:43
source share

I think professors want them to stick to the basics. When I graduated from high school, I knew C ++, Java and some other languages, but had no idea about the libraries and frameworks used in companies. It was like you know java ... yes, can you write a servlet.

+1
Aug 27 '09 at 23:48
source share

For speed demons, they rarely use third-party libraries, and new programmers usually tend to compress each time the speed of their code. I think that if they do not control their code, they will not be able to get the performance they are looking for. At least that's why I avoided libraries when I started programming.

I remember programming my first DAL and avoiding all the other free libraries on the Internet because I wanted my code to run at maximum speed. Later I discovered that this is usually not code that bttleneck is actually a database.

+1
Aug 27 '09 at 23:52
source share

Some open source libraries are erroneous or inefficient, like others.

+1
Aug 27 '09 at 23:58
source share

In my eyes, another factor is the addition of additional libraries. Programs, as a rule, are becoming increasingly difficult to understand, more difficult to maintain, and more complex with complexity. I think that new programmers are especially far behind developers because adding library code increases complexity more than adding native code - simply because understanding how the library works is still out of order. So this is a problem of both skill and psychology.

+1
02 Sep '09 at 12:33
source share
  • novice programmers not only mean that guys who just started to learn programming, there are times when people just started to learn new languages.

    • the learning curve is acceptably the most preferable, in addition, people learning a new language often do not have the luxury to go within the proposed framework.

It is not always easy to compromise your managers so that they advance in the new structure. It requires a lot of testing and needs to learn how it should fit your needs.

See my case, I am mainly a C # programmer and started learning javascript for my work. Some time ago, here on the stack, I asked a question about the puplisher / javascript subscriber pattern. Most of the guys answered that they are already implemented in frameworks such as jQuery and prototype, and you can easily reuse them.

Greetings

Ramesh Vel

+1
Sep 02 '09 at 13:08
source share

I think that more fundamental problems can be recognized as a deterrent to using existing libraries.

  • Part of this as “novice programmers” is the lack of access to libraries. If you do not know that they exist, how do you know to use them?
  • Available number of options available. Let's say I'm really interested in learning more about MVC, but if I need to choose between cakephp and smarty and zend and ... well, you can quickly see how the mechanism works to find a way to achieve the goal without investing time in the experiment. Take a look at Freshmeat or SourceForge to better understand the complex selection of libraries available.
  • Doubtful support coupled with fragmentary / outdated library documentation. I want to use this tool that can no longer work or may be left in the future? It is likely that the project will develop, and so it will be for the library project. Will its usefulness last the whole life of my project, or will I need repeated re-work?
+1
02 Sept. '09 at 13:50
source share

Using the library requires you to understand the relatively complex design of the library, which new programmers could not master because everything they have ever written is simple / procedural / single-purpose code. For example, for experienced programmers, standard design patterns such as the template method, observer, and command seem pretty obvious, but for beginners, it just looks like magic and / or unnecessary complexity. For me, the turning point was that I got a pretty good way to create design patterns and write some basic reusable codes.

+1
Feb 18 '10 at 5:07
source share

It was a long time ago, but when I left college I did not know anything about libraries. This was during the time of mainframes and mini-computers. Our college had a VAX, and the managers were paranoid about students who hacked into the system, so they didn’t even allow us to get acquainted with the library manuals. So, when I first left college, I didn’t even think that libraries were available.

+1
Mar 03 '10 at 20:22
source share

I am sure that there are many reasons why a beginner does not want to use the new library. But wouldn't it be a good opportunity if you have enough time to show them what the advantage of using a library is? With the people I work with, I will usually give an example of why something is better than their approach. This helps them learn and develop as a programmer.

+1
Mar 03 '10 at 20:48
source share
  • one
  • 2



All Articles