Knowledge / Framework Trap

We do not teach children calculus first. First we teach them arithmetic, then algebra, then geometry, analytic geometry, then final calculus.

Why, then, we first study the basics of computer developers and IDEs. Some curricula force students to learn the basics of computer science, but the vast majority of graduates, who, as I see, could not make up their own structure to save their lives.

Where is the next generation of tool builders?

How can we promote the insights needed to create frameworks and development environments?

This, of course, is community. Not all education is missing, but it seems that this is the majority, and this reduces the quality of our profession as a whole.

+4
source share
10 answers

I think the analogy is a bit down. A better analogy would be: "We do not teach our children to use calculators to add and subtract, why teach programmers to use the IDE for programming?"

+3
source

Get rid of human resources departments that require X years of experience in Y. Universities simply adapt their course to the requirements of human resources.

I use graduates who can program something (it really doesn’t matter to me what language), and who can study.

+3
source

I see your thought, although I think that a mathematical analogy does not quite fit. You have to know basic arithmetic, to be able to do something in any other mathematical discipline.

When I started programming frameworks, they were mostly unheard of. If you need a binary tree, then God, you went and wrote one. In C or Assembler. That was basically the case, so in order to do something at all, you had to learn a lot.

Today, Frameworks and IDEs and designers allow noobs to actually create quite brilliant things, without first knowing how to create a framework or compiler or manage memory allocation.

The real problem: what about all the dingbats that find them awesome, great programmers because they used Frontpage or Access? Managers have difficulty explaining the difference between this programmer and the fact that they really know software development as a discipline.

So, in particular, why so? Because everyone wants to work, and no one hires programmers who know how to build a binary tree. They need programmers who know .Net or J2EE, etc.

+3
source

I would say that there is probably enough work there from 9 to 5 programmers who can start at the frame level and go from there. The really good ones — basically your program as a career and / or your program as a hobby — are going to gain the knowledge that they may have missed in college for a long time anyway. You cannot make everyone be a great programmer no matter what curriculum you teach. Curious students are going to learn about the basic principles: whether they taught them in the classroom or completely independently.

+3
source

There are tools and tool switches. And, of course, there are tools, but not there.

If you have a good look at the car workshop, you will see many funny little tools that you will not see on shelves in home appliance stores. As for pushing out brake caliper pistons. Or clamps to compress the valve stems so you can get the collets with one hand while talking with your comrades to nail a new secretary (instead of watching them fly around the room when spring slips out of your screwdriver).

They were developed by mechanics. They are really effective, usually small and cheap, and completely incomprehensible until you see them in action.

Most of the profound changes in automotive technology were from bottom to top, but top to bottom is also necessary. Individual mechanics cannot make fundamental technological changes, such as switching from cast iron to alloy heads. A new broom is being cleaned, an old broom knows the corners. You need both.

But I am distracted: the fact is that mechanics could not design these tools if they lacked fundamental skills and knowledge. When I was a child, my father built me ​​a whole motorcycle from scrap metal. As an adult, because I lack the skills, knowledge and ways of thinking, I can barely support the bike I bought from Honda, much less take an oxy car, like Mr. T, in creative madness.

With the code, I, like my father, was with steel. Donald Knuth is my regular companion, and when .NET needs to implement a wireless protocol for our GPS recorders, I come. The widget monkeys did not know where to start.

+1
source

I think the problem is actually a GUI paradigm in general.

Microsoft greatly simplified the use of computers, they popularized the graphical user interface. They also added this interface metaphor (desktop, file) to the programming area, and also very efficiently using the Visual Basic tool.

But just as the GUI hides what happens “under the hood,” the IDE also hides the manipulation of bits and bytes. The question is, of course, the risk of reward - as far as programmers understand in exchange for performance?

A quick look at the "Art of Computer Programming" may show why IDEs are useful; “The final packing density is achieved when we have 1-bit elements, because we can insert 64 of them into one 64-bit word. Suppose, for example, that we want the table of all odd primes to be less than 1024, so that we can easily solve the primitiveness of a small integer.No problem, only eight 64-bit numbers are required:

p0 = 011101101101001100101101001001001001100101100101001000101101101000000 p1 =.,. "

Programming is really complicated, you can see how the IDE can help.: ^)

+1
source

Learning about abstraction is easier than learning about details when it comes to programming. It’s harder to teach someone a handwritten assembler to print “Hello World” than they need to reset the form using the button on it, which displays the message “Hello World” when the button is clicked.

You didn’t know how to build a car engine before learning how to drive, right? Because it is not necessary to ride. In the same vein, you don't need to learn how a linked list or binary tree works in order to maintain a list of names and look for them.

There will always be those who want to get under the hood and find out why, but I don’t think that this is necessary for everything to be done.

0
source

I always look at applications, asking complex questions that they can answer only if they understand how something really works. I think this is a real college of shame, and universities teach people the basics of development, but do not focus on the basic principles of software. I agree that what matters most is someone who understands how programming works and has the desire to find out everything they can about it.

0
source

Most universities that I know of have an introduction to a computer programming course that teaches basic programming concepts. Unfortunately, it is impossible to teach programming without writing code.

The problem is that some people prefer to teach this course using some OO language such as JAVA or C #, and therefore students should use Visual Studio (or the Java equivalent). It's hard to explain the basic concepts when the IDE makes you work in a certain way.

I think students learning the first language should be functional languages ​​like C. So you have fewer levels of abstraction between them and basic CS concepts.

0
source

I agree with cfeduke.

I looked at the work on the same CS courses that I did from 2 years ago, and they were much more difficult. 5 years ago, the way way is more difficult.

The CS panel is getting smaller and smaller, apparently because there are more and more tasks that do not require any knowledge of any complex CS subjects. There are tons of jobs for people to simply cut code.

Because traditional people who wanted to be programmers did CS courses as coding became easier, this is still the case.

What really needs to happen is that CS will not require professional software development. Instead, there should be another curriculum that focuses more on getting people to leave home and cut out the code.

This would leave CS such a course for your next generation tool designer.

0
source

All Articles