It's good for the project manager and the company
The programmer's library, especially the advanced version of it, is something good for the programmer and especially good for projects and the company. What is the programmer's library?
It's a collection of tasks (or functions), which describes the speed of developing that task ((slow, normal and fast) and the number of lines of code. The advanced version of the programmer's library contains code snippets. The library is furthermore organized per programming language.
For example, a simple function to create a window, and displays it at the center of the screen is in C much more lines of code than for example in C#, which is rather simple. And how less code, how faster the task is completed.
For who is the programmer's library meant?
That's not hard to figure this out. It's a fantastic tool for the manager, who needs to determine how long one or more tasks will take (the duration). A manager, like a project manager, who needs to create a schedule, based on a certain guideline. This method is so much better than the guess work previously used.
The contents of the programmer's library
As mentioned before, it's a huge collection of tasks, which describes different types of programming tasks.
|Title||Description||Language||Overhead||Duration (fast)||Duration (normal)||Duration (slow)||Lines of code|
|Login dialog||Refer to spec: 123||C#||1h||1h||3h||4h||26|
|Logout dialog||Refer to spec: 123||C||n/a||4h||8h||16h||48|
Programming example of a login in C#
In practice, the programmer also must spend loads of time on the GUI, which is not programming (code), but with the lack of any graphical designer, he or she needs to do that work too. You know, the window with the two button (cancel and login), the two labels and the two textboxes, and the optional 'register' and/or 'remember login'.
That's called also overhead in the programmer's library.
The Programmer and his or hers code
Breakdown the tasks
Of course it's very good possible to breakdown the tasks. That doesn't do anything about the programmer's library, it makes it only better.
For example, the login task can (it has) have several parts:
- The overhead (the GUI part of the task), which might be done by a graphical designer (but mostly it's done by the programmer)
- The validation of the two input controls (the textboxes)
- The error correction of the outcome of the validations
- The database parts of connecting to the database, the query string towards the database and the returning values
- The business rules, which must describe what to do if the username and password will not match and of course when it matches, what must happen then?
And let me tell you, this is basic functionality of the login. In my own programmer's library, I drilled down all the tasks of the login dialog and I've 14 different versions of the login process in my library each in 12 different programming languages, all collected from the years I programmed.
And to be honest, the original tasks in the programming library I got from the Minister of Defense in Holland and the Department of Defence in the United States, who use the programmer's library to determine the duration of their software projects.
Who is using the programmer's library?
Large corporations in the US, West Europe are using the programmer's library for the purpose to determine the size and speed of IT projects.
The QC use of the library
QC managers are using this too, because they can calculate the predictability of the expected defects in the future projects. For this they need more data.
- They know the accuracy of a programmer in the form of defects per 500 lines of code (or 1,000 or 10,000).
- With the program design, it's known what needs to be programmed, and how many lines of code can be expected.
- For example, one programmer with a quality of 3/100 (three defects per 100 lines of code) in average, and the number of lines of code is 1,000, the QC (and project manager) can expect 30 defects.
In case their software testers find only ten defects, than they know there is something wrong. Or the software tester is not doing his or her job well, or the programmer 'suddenly' improved. That's not good. In those situations, the QC manager needs to proof (to the (project) manager) that his people were doing the best job possible. Telling the (project) manager that they only found 10 defects and not about 30 is not enough. He has several options:
- Get another software tester perform the same tests (independently)
- Test the software tester
Probably both options must be applied. testing a software tester is presenting him or her with a special prepared computer program, which contains known defects. The software tester is testing that program and reports the bugs. The QC manager can determine if the software tester is indeed doing his or her job accurately.
If another software tester tests the program from the task and he or she comes up with about 10 defects too, the problem might point to the source, the programmer in question. The Project Manager will get involved to see what the problem is.
In this case it's a positive problem. This problem means theoretically less time and resources for the QC. But that's not true. According the scheduling, this programmer suppose to produce the 30 defects and the QC suppose to spend time on that and the fixing of those 30 defects, which were including in the scheduling. And disruption of the scheduling is bad, especially when the task is slower or faster finished, it's not good. It'll disrupt the task dependencies.
In practice, the manager has no idea and nobody seems to care, with as result that the problem only gets worse and more problems occur, which threatens the existence of the future of the project. The project manager needs to interfere immediately.
The Programmer's Library
When I started to work as a programmer (my boss that time was a senior programmer), he said that the correct way of coding a software program was copying and pasting. That was more than 30 years ago and currently, it still applies.
But ... in those times, he referred to the copying and pasting your own code and change the details. Today, with the Internet and the huge collection of available code snippets, it's a feast of copying and pasting code.
For example, I was testing this by programming a small and simple financial administration program in Windows some years ago (using C++). I selected the code snippets from the Internet at the various code snippets sites and copied and pasted everything and compiled the the whole program. I would than start customizing the code, change here and there some things and the program was finished within a hour.
The customer was amazed and declared me a genius. Ha, ha. He didn't say that anymore after a day, when the program started to slow down and crashed several times.
If you use code snippets, do it right. Prefer to use your own code to build a programmer's library if you work alone. It would be a good idea that the project manager supplied the code snippets, and don't allow the programmer 'shop' in the Internet for snippets.
Open source for the programmer means borrowing the code from someone else, so the hell with the quality and the optional copyrights.