Test predicts ability to learn programming

Anything not relating to the X-Universe games (general tech talk, other games...) belongs here. Please read the rules before posting.

Moderator: Moderators for English X Forum

User avatar
mrbadger
Posts: 14226
Joined: Fri, 28. Oct 05, 17:27
x3tc

Post by mrbadger » Tue, 9. Jan 18, 08:02

kohlrak wrote:
You let programming students avoid command line programs?
Any student who has made it to the final year and still managed to have so little talent with programming that the terminal is a serious challenge is not a student I can fix in a semester. in all honesty they are someone who will likely never be a coder after graduating.

They have other issues, such not really wanting to be coders in the first place and only being on my module because it has no exam. Why that would be appealing I don't get, to me it would scream hard as f$%k avoid, but I from what I tend to see they just try to blag any form of pass.

I get kids like that year after year, which is why I have a route through for them. That way they don't take up all my time.

They can have their reduced grade pass and be happy with it, and I don't get emails from morons demanding a first because it was really hard for them.
If an injury has to be done to a man it should be so severe that his vengeance need not be feared. ... Niccolò Machiavelli

User avatar
Morkonan
Posts: 10113
Joined: Sun, 25. Sep 11, 04:33
x3tc

Post by Morkonan » Tue, 9. Jan 18, 08:04

Chips wrote:I would ask whether you believe in education,
I absolutely do and I also enjoy learning new things.
but the answer is undoubtedly going to be too long to hold my interest
68 65 72 65 27 73 20 73 6f 6d 65 74 68 69 6e 67 20 73 68 69 6e 79 20 66 6f 72 20 79 6f 75 20 74 6f 20 70 6c 61 79 20 77 69 74 68 20 77 68 69 6c 65 20 74 68 65 20 61 64 75 6c 74 73 20 74 61 6c 6b
So computer is just a tool, fine.
Yes. That is what a computer is.
kholrak wrote:Because alot of programs loose functionality when placed into a GUI.
Then they're not optimized for an end-user using a GUI, right? Then, that means, they're not the sort of programs you'd want with a GUI. Probably not for most of the uninitiated...
Alot of programs can be better chained together when you don't have to take output from one program and copy and paste it into another.
Well, if I have a "suite" of programs, designed to work with each other, even though they each specialize in different things, or are better in certain appapplications, then I may not have to copy and paste. I just add the appropriate field to my Word doc and it'll lookup the value for me, no problem. It'll even update it when it changes! Except after I print it... That causes it to break the program an' it won't updated it nomores.. /idiotuserbugreport :)
... I've actually taken the time in trying to simplify the hello world, because it really is way too complex in most languages to not scare people away. "You have to do all that just to put a message on the screen? Hell, what's next? An essay just to ask someone what their name is?"
I am uber coder. Write uber code. Most famoustest of codes is "Hello World." Can do better than prn scrn an' echo!

Hello World

Tada!

/serious

A coder, somewhere, wen to a great deal of trouble so that I could type on a keyboard and pixels would light up in the shape of the letters that I typed. The above is the "user" example of "Hello World." I didn't have to type more than the number of letters in those words, no matter what was going on in the "back end." And, arguably, I can do much more with the tools the coder gave me than any regular codemonkey given the same amount of time. I can make it in italics, bold, underline, put it in a list, quote it, put it in a codebox, insert it into an url description, change the colors of the letters... ALL of those things in a matter of seconds. Gime some <blink> and we'll have a field-day!

I don't need to know how to write the short, brief, easy, code to make the screen print out "Hello World." I'm doing it right now and, moreover, I can go "beyond" that with how I use the power the coders gave me. I can use this new tool for things other than "computer" and other than "computer stuffs."

Sure, learning things is great and people should, if they can, know more about the tools they use. A professional, who uses tools in their profession, often knows a great deal about them. But, they don't need to know how to create those tools in order to use them with a great deal of skill, nor should they be required to.

User avatar
mrbadger
Posts: 14226
Joined: Fri, 28. Oct 05, 17:27
x3tc

Post by mrbadger » Tue, 9. Jan 18, 17:48

Nanook wrote:Why should an artist, a lawyer, an architect or a mechanic, for example, know how to code on a computer? .
They should not. But you've hit the main point, a software developer, or at least as good one, needs to be capable of becoming a toolmaker for any one of those professionals.

Further, those tools need to be easy to use and maintain.

At the start of any developers career they need a decent understanding of the basic tools of their craft.

It may be that they won't use those tools much, but they should be able to use them. If you don't then you have gaps that will turn up and bite you.

Then as they specialise, as you must, you hone the skills beneficial to your field.

Is there a field that never involves the terminal? I'm not aware of one, but it might exist. But there are fields that contains skills irrelevant to others.

I for instance know nothing about OpenGL other than the very basic stuff needed for my personal projects. Simple shapes, projections, translation, things like that.

And nothing at all about .NET stuff.
If an injury has to be done to a man it should be so severe that his vengeance need not be feared. ... Niccolò Machiavelli

User avatar
Chips
Posts: 4873
Joined: Fri, 19. Mar 04, 19:46
x4

Post by Chips » Tue, 9. Jan 18, 19:30

Nanook wrote: Why should an artist, a lawyer, an architect or a mechanic, for example, know how to code on a computer? Their education lies in a different direction. It doesn't mean they're less educated. They can successfully make use of computers as tools to do their jobs without knowing any coding at all. For that matter, what use is coding to the average home computer user? They use browsers, email, home office software and perhaps do some gaming. To say that all computer users should learn how to code is just silly and to imply that they're less educated is a bit arrogant, IMO.
Why should we learn a foreign language(s) at school? Why should we learn History, why Geography, why Science if you have no desire to forge ahead in those career paths?

So, should we teach the bare minimum based upon people's personal desires for their future career paths? That is what you're stating at the moment... "You want to be a hairdresser? No need for history, geography, french, english or anything beyond 7year old maths - but a bit of chemistry may help".

And how on earth would anyone know whether they'd enjoy programming or desire a career in computers?
It really is just a tool. A very, very expensive too
It really isn't expensive. A few quid. Chip and Raspberry Pi Zero ($9 and $5 respectively).
https://www.pcworld.com/article/2911098 ... tml#slide3

As for why I take assumed umbridge at the label of tool... it is correct in a way. It's just a "thing". But that thing is ubiquitous in modern life. It's everywhere, in everything, doing things people cannot do. Laser correction surgery on your corneas? Impossible without computers. Washing machine? Has a computer in it. Nearly every single thing in modern life is reliant upon a computer. Do you need to learn how to program them to live? no. But you also don't need to learn Math, speak French or be educated about a religion either. I'm not on about "everyone should be able to program to a professional level", but an introduction, an awareness, an understanding - as per most subjects taught within schools.

Also, programming isn't about writing code... it's about solving problems. Through writing code :D There be "transferable skills" and logical thinking in that. Think that was kind of the original topic, no? Useful skills way beyond "programming" - and God knows these are skills people seem to lack.

Actually, it's really not. This is an illusion that certain people want you to believe for various reasons. For most people, the reason seems to be that they don't want to loose face. Machine code programming is one of those things that's really not as hardcore as it's made out to be, but everyone's still afraid to learn it. Assembly is a reasonable interface, but it can be done with a hex editor instead. No reason to do it without an assembler, though, as assembly is the best of both worlds. IMO, assembly is easier to learn than any High Level Language like C, despite those languages made with the intent of making it easier.
I cannot disagree with you more. Programs in high level languages are, essentially, in natural "English". Also, assembly != machine code. Look up a hello world example in both, massive difference in readability and understanding. Baffled by the claim to the counter, unless it's a "I'm really awesome" type posting?

User avatar
mrbadger
Posts: 14226
Joined: Fri, 28. Oct 05, 17:27
x3tc

Post by mrbadger » Tue, 9. Jan 18, 20:39

I quite enjoy programming in assembler.

That said I wouldn't use it for anything but small functions whose operations I want to control such that they are as fast as I can make them.

even then, if the function is a complex one I tend not to write the thing in assembler. I write it in C, compile it into assembler and hand optimise that.

However there is some debate as to whether it's still worth doing that, compilers are getting pretty good at optimising.

So it's down to fun for weirdos like me, and only really necessary for Console platform developers who need to speed up games when the hardware hasn't changed.
If an injury has to be done to a man it should be so severe that his vengeance need not be feared. ... Niccolò Machiavelli

User avatar
Morkonan
Posts: 10113
Joined: Sun, 25. Sep 11, 04:33
x3tc

Post by Morkonan » Tue, 9. Jan 18, 21:25

mrbadger wrote:
Nanook wrote:Why should an artist, a lawyer, an architect or a mechanic, for example, know how to code on a computer? .
They should not. But you've hit the main point, a software developer, or at least as good one, needs to be capable of becoming a toolmaker for any one of those professionals.

Further, those tools need to be easy to use and maintain.

At the start of any developers career they need a decent understanding of the basic tools of their craft.
...
That's the essence of a "professional." Specialists may not need extensive knowledge outside of their particular field - That's why there are other "specialists." Still, they need to know enough about the things that are intimately associated with their profession in order to do "a good job."

Coders should be "professionals." Many are. And, does the mechanical engineer using Matlab to design a new joint need to know how to code "computer?" No. But, they may need to have extensive knowledge of Matlab, since that is the tool they are using.

kohlrak
Posts: 136
Joined: Thu, 28. Dec 17, 11:47

Post by kohlrak » Wed, 10. Jan 18, 11:25

mrbadger wrote:
kohlrak wrote:
You let programming students avoid command line programs?
Any student who has made it to the final year and still managed to have so little talent with programming that the terminal is a serious challenge is not a student I can fix in a semester. in all honesty they are someone who will likely never be a coder after graduating.

They have other issues, such not really wanting to be coders in the first place and only being on my module because it has no exam. Why that would be appealing I don't get, to me it would scream hard as f$%k avoid, but I from what I tend to see they just try to blag any form of pass.

I get kids like that year after year, which is why I have a route through for them. That way they don't take up all my time.

They can have their reduced grade pass and be happy with it, and I don't get emails from morons demanding a first because it was really hard for them.
This is terrifying, and this is precisely why employers are looking for tests.
Morkonan wrote:
kholrak wrote:Because alot of programs loose functionality when placed into a GUI.
Then they're not optimized for an end-user using a GUI, right? Then, that means, they're not the sort of programs you'd want with a GUI. Probably not for most of the uninitiated...
These programs should be, though. The large amounts of "gui-wrapper" programs that exist, including ones that are out of sync with their command line tools, says enough. While not all the features of SSH are for everyone, it's pretty useful for people who want file sharing without all the insecurities that come from SAMBA, or trying to struggle with something like skype. And the ability to forward x-server is pretty useful for certain types of work environments, too (nursing homes, hospitals, etc, which aren't using the technology [even using less secure technology] because they're not even aware it even exists, let alone how to use it). I saw someone here on the forums using GIT in a really old post for managing their saves or something. Do you know how many people could benefit from GIT for school reports, for example? That should be a standard tool for everyone, and is more useful than microsoft word which actually comes pre-installed. Businesses alone could benefit from the ability to backup spreadsheets and stuff. And that's just the tip of the iceburg. Making a GUI for these kinds of tools should be an absolute slap in the face to anyone who would use them.
Alot of programs can be better chained together when you don't have to take output from one program and copy and paste it into another.
Well, if I have a "suite" of programs, designed to work with each other, even though they each specialize in different things, or are better in certain appapplications, then I may not have to copy and paste. I just add the appropriate field to my Word doc and it'll lookup the value for me, no problem. It'll even update it when it changes! Except after I print it... That causes it to break the program an' it won't updated it nomores.. /idiotuserbugreport :)

What if they're not designed to work together, but simply do? Here we go back to "grep" again. I'll take a very specific, quick example. I have this 100KB file full of documentation on the accent patterns of 大阪弁, as well as an index to a file with a native person from 大阪府 saying those words. It is a simplified database that I came up with on the fly (probably could've moved it into a database, but let's assume for a second that i'm not that computer smart). Easily takes a few minutes to open up in any given GUI program. If I'm tapped for time, or just don't feel like waiting those 5 minutes to make sure I got the correct accent pattern for the word (since there's no point in storing it for every card in Anki), I can just open a terminal (takes less than 5 seconds) and type in a quick command, and then get this output.
[kohlrak@kohlrak-server ~]$ fjw 暗記 #Find Japanese Word
暗記-H*0
There, I managed to look up the word 暗記, and realized that I have a natural tendancy to incorrectly pronounce it with the HHH pattern when it's pronounced with the LLM pattern. Some times i won't need it. Sometimes i need it for 3 or 4 words. I made that small script because I got sick of turning a 5 minute task into a 30 minute task. This is something someone who's studying Japanese would likely do if they're worried about having the correct pronunciation of words.

Code: Select all

function towav {
        ffmpeg -i "$1" "$1.wav"
}

function tomp3 {
        ffmpeg -i "$1" -acodec libmp3lame "$1.mp3"
}

function toogg {
        ffmpeg -i "$1" -acodec libvorbis "$1.ogg"
}
Sure beats waiting 5 minutes for another GUI program with a splash screen to load. Better yet, I could easily convert these to convert entire directories. A similar practical situation I had, was I bought the entire series of a radio show. The first 100 disks were audio disks (松本人志の放送室), while the remaining were MP3 data disks. I wanted to coherently put the entire thing on a USB drive, and stick it into a cheap 15 dollar MP3 player, and know what track number corresponded to what episodes, without having to cross reference a printed sheet (actually, multiple sheets) of paper that said what track was part of what episode. Basically, the solution was to take the first 100 episodes and merge the tracks into a single MP3 file. Lemme know when you find a GUI that can solve these kinds of problems, because unique and special problems are regular occurence for people, and then they either have to make due with some ridiculous solution or settle for not having what they want.
... I've actually taken the time in trying to simplify the hello world, because it really is way too complex in most languages to not scare people away. "You have to do all that just to put a message on the screen? Hell, what's next? An essay just to ask someone what their name is?"
I am uber coder. Write uber code. Most famoustest of codes is "Hello World." Can do better than prn scrn an' echo!

Hello World

Tada!

/serious
Ah, but say you're trying to learn a language like Java or C++. Now you have to explain #include, int, main, the empty parenthesis (and why it's absolutely necessary, without them thinking suddenly that now they are doing something with absolutely no purpose), then why we have {}s, followed by why we have to use either "std::", "using namespace std;" or "system.out.println" or any other combination. Finally, you have to explain why we have to return 0, which has to do with command line, which most students aren't even aware of. What often results is "we have boiler plate code, we have to do things this way, so trust me, don't think for yourself on this, but i'm gonna demand you think for yourself later." See the challenge, now? It's no surprise that programming confuses people. Basic's pretty impractical anymore. Surprise, though, as visual studio and visual basic mixed together made it so that you could design a GUI and trust that when you double clicked the button, that the code the compiler added was totally relevant. Even if you didn't understand it and come to the conclusion everything's magical (hence why so many VB only coders have trouble making a program that doesn't crash), at least the core of the lesson isn't a contradiction. It's no surprise why so many people freeze when you tell them that maybe they could code without visual studio's "new project" commands.

Now, if you can get them coding (with a real, currently living and breathing programming langauge, that can make a program that doesn't need an interpreter or something) with minimal or no boiler plate code, you can be consistent. For the educators out there, i have a few working examples that are improvements, but you won't like them, and they don't completely solve the problem. But there's the rub, the langauges that can pull this off are usually languages that need interpreters, and are more or less toys or scripting engines, and can't do everything people want or need them to do, so then they ask why they're learning something useless.
A coder, somewhere, wen to a great deal of trouble so that I could type on a keyboard and pixels would light up in the shape of the letters that I typed. The above is the "user" example of "Hello World." I didn't have to type more than the number of letters in those words, no matter what was going on in the "back end." And, arguably, I can do much more with the tools the coder gave me than any regular codemonkey given the same amount of time. I can make it in italics, bold, underline, put it in a list, quote it, put it in a codebox, insert it into an url description, change the colors of the letters... ALL of those things in a matter of seconds. Gime some <blink> and we'll have a field-day!
There's the separation. You have the coding necessary for the common person (who knows none at all), and you got the coding for the programmer who wants to do it all (who ends up learning one of those languages designed for the common person). Sure, there's people who actually do learn and learn real programming languages, but we baby and nanny the students so much that too many just don't learn. Then you have employers who are like "we can't find talent, even among those with degrees! What do we do!? We need a way to test to make sure we're not wasting our time and money!" Yeah, that's precisely where we're at.
I don't need to know how to write the short, brief, easy, code to make the screen print out "Hello World." I'm doing it right now and, moreover, I can go "beyond" that with how I use the power the coders gave me. I can use this new tool for things other than "computer" and other than "computer stuffs."
Cool. Need a golden star?
Sure, learning things is great and people should, if they can, know more about the tools they use. A professional, who uses tools in their profession, often knows a great deal about them. But, they don't need to know how to create those tools in order to use them with a great deal of skill, nor should they be required to.
So, in the real world, the tools break and they don't know how to fix them. They have to wait for "maintenance" to come and do something as simple as rebooting half the time. My personal favorite is when they outsource the tech support so a guy drives from another state (in the US) or another country (in europe) just to solve a problem where items in the menu are no longer in alphabetical order because they clicked the header of one of the columns. And if you think something like that is rare, well...
Chips wrote:I cannot disagree with you more. Programs in high level languages are, essentially, in natural "English". Also, assembly != machine code. Look up a hello world example in both, massive difference in readability and understanding. Baffled by the claim to the counter, unless it's a "I'm really awesome" type posting?
Taken from an examples file from Flat Assembler:

Code: Select all

; example of simplified Windows programming using complex macro features

include 'win32ax.inc' ; you can simply switch between win32ax, win32wx, win64ax and win64wx here

.code

  start:
	invoke	MessageBox,HWND_DESKTOP,"Hi! I'm the example program!",invoke GetCommandLine,MB_OK
	invoke	ExitProcess,0

.end start
And, yes, with a simple include file, it can be made even simpler, as it uses a MessageBox with an OK button instead of, say, printf.
mrbadger wrote:I quite enjoy programming in assembler.

That said I wouldn't use it for anything but small functions whose operations I want to control such that they are as fast as I can make them.

even then, if the function is a complex one I tend not to write the thing in assembler. I write it in C, compile it into assembler and hand optimise that.

However there is some debate as to whether it's still worth doing that, compilers are getting pretty good at optimising.

So it's down to fun for weirdos like me, and only really necessary for Console platform developers who need to speed up games when the hardware hasn't changed.
I'll give you the optimization argument. 5 or 10 years ago, I would've said differently, but the last time i looked at the optimized output, it's come far. I've seen compilers come up with the dardest outputs. I've heard of visual studio using jump tables or something for switch statements, and i've personally seen GCC read a variable from memory and a few lines later writing the same variable back to the exact same address, without any modifications (that's how it handled memory allocation for functions).
Morkonan wrote:
mrbadger wrote:
Nanook wrote:Why should an artist, a lawyer, an architect or a mechanic, for example, know how to code on a computer? .
They should not. But you've hit the main point, a software developer, or at least as good one, needs to be capable of becoming a toolmaker for any one of those professionals.

Further, those tools need to be easy to use and maintain.

At the start of any developers career they need a decent understanding of the basic tools of their craft.
...
That's the essence of a "professional." Specialists may not need extensive knowledge outside of their particular field - That's why there are other "specialists." Still, they need to know enough about the things that are intimately associated with their profession in order to do "a good job."

Coders should be "professionals." Many are. And, does the mechanical engineer using Matlab to design a new joint need to know how to code "computer?" No. But, they may need to have extensive knowledge of Matlab, since that is the tool they are using.
What i want to know is why a particular professional can't generate a simple script on their own without paying a programmer to do it for them. Why are we still hiring people to make static web pages?

korio
Moderator (Español)
Moderator (Español)
Posts: 891
Joined: Sat, 29. Sep 07, 18:25
x4

Post by korio » Wed, 10. Jan 18, 12:59

IMO everyone in "modern" days should have a "minimun" knowledge of programing.


Despite i work on "IT" im a programmer (atleast that's what i studied) and its always the same, someone asks me to do some "easy" program i tell them how much time it will take and then the "but why so much time, its an easy thing" starts.

Making a little program or script to do something you need is easy, making anything for users to use....

Also, we have a little joke when i was learning programing, "if you learn VB, its like to brainwash yourself and forget everything you have learned so far of programing" and up to some point its true hahah

User avatar
mrbadger
Posts: 14226
Joined: Fri, 28. Oct 05, 17:27
x3tc

Post by mrbadger » Wed, 10. Jan 18, 18:43

Ah Grep.

Last year I had a student who seemed to think grep was some sort of wizardry. It took them five weeks to understand and complete this task:

Create empty file cli/fstab.txt without using a text editor

Concatenate /etc/fstab to cli/fstab.txt

Display this file in the terminal

Search for the word ’reference’ in fstab.txt

Redirect the output you see to the file cli/out.txt and print this to the terminal.

Not hard right? Certainly not hard for a final year computer scientist, but the student in question thought I was asking them to do something far beyond undergraduate skill level...

All the commands to use, and the way to use them, was listed in the worksheet, which was designed to introduce students to lots of CLI tools.

They needed it explained to them so many times I started to think they were coming to the class stoned.
If an injury has to be done to a man it should be so severe that his vengeance need not be feared. ... Niccolò Machiavelli

User avatar
Morkonan
Posts: 10113
Joined: Sun, 25. Sep 11, 04:33
x3tc

Post by Morkonan » Wed, 10. Jan 18, 19:18

kohlrak wrote:...What i want to know is why a particular professional can't generate a simple script on their own without paying a programmer to do it for them. Why are we still hiring people to make static web pages?
It's not their job.

A friend of mine is a coder, by degree and background. But, as he's moved up the ranks into upper-management, he's not a coder any more. He loves writing code, but it's just not what he's paid to do. So, he's gotten a bit rusty, here and there. Not sloppy, just a little rusty in certain things he'd rather not be rusty in. So, he'll write some code in his free time, just to sharpen up his skills. He may even weigh in, from time to time, on something being written and show the boys in the cubes how to do it.

Sometimes, he'll tell me about seeing crappy code or something just not done the way he'd have done it. He made his chops, been there, done that, been in the trenches and had the bad habits beaten out of him, so he knows what the entry and middle level mistakes are.

"Does it work? Good. I'm not going to sift through this rat's nest unless the problems are egregious, I have more important crap to do." - My friend.

He could. If he needs to know something about a language or just learn a new one, he'll handle it in short order, then be able to tell the new guy what he's doing wrong... IF he bothered at that level. But, it's just not his job anymore. And, if he wasted his time writing html, no matter how good it would be, it'd be wasted time. (He still misses it, though. He's often said he'd probably be happier writing code instead of being not-writing-code in upper management.)

My perspective here is just as a user with a desired goal to reach in using a tool. If I don't "need" to create my tool, I don't need to know how to do it. I need to understand how my tool works and a few basic things about it, but that's as far as I need to go in order to get the job done.

Most professions are like that.

But, in "learning" a profession, one often starts at the basics, even if those basics aren't ever used anymore. So, I certainly understand the benefits a coder would gain if they learned what their tools were actually based upon. Learning assembly, for instance. I can see the benefit, there. But, will they need a working knowledge of that in twenty years? Probably not. Is it likely they'll ever have to actually apply that knowledge to writing code in twenty years? Probably not.

Here's a question: How long do programmers actually stay in the position of "programmer" before moving into a specialized area or even into a different field, possibly not even related?

Sure, there are fifty year-old programmers cranking out stuff, but what's the percentage of beginning software engineers/programmers/coders that actually stay in that job description for their entire working life? From those I have known, it seems as if that's just a low-level port-of-entry onto a ladder of career opportunities in software/IT.

User avatar
mrbadger
Posts: 14226
Joined: Fri, 28. Oct 05, 17:27
x3tc

Post by mrbadger » Wed, 10. Jan 18, 19:34

Why would you want, say, your hugely expansive architect or geologist to stop doing the thing your paying them to be be a specialist in and start writing scripts?

That would be a very expensive waste of time, time that you would be paying for.

They might enjoy it, but you're not paying them to do that.

Any decent craftsman would accumulate tools over time, but if they need a new tool, and that tool is software based, you hire a coder.

Or buy something to do the job.

Anything else is just wasting time and money.
If an injury has to be done to a man it should be so severe that his vengeance need not be feared. ... Niccolò Machiavelli

pjknibbs
Posts: 41359
Joined: Wed, 6. Nov 02, 20:31
x4

Post by pjknibbs » Wed, 10. Jan 18, 22:01

Morkonan wrote: And, if he wasted his time writing html, no matter how good it would be, it'd be wasted time. (He still misses it, though. He's often said he'd probably be happier writing code instead of being not-writing-code in upper management.)
I had a manager once who was hired as the IT manager of the business, but I think within three months of arriving he just left all that stuff to me while he got involved with a major coding project that was going on. Nobody ever called him out on it either, I have no idea why; it seemed like a total waste of resources having someone on that sort of pay scale doing regular programming work.

I also agree with mrbadger's point. You pay people to do what they're good at or what they trained to do. Yes, they might be capable of writing a script or maybe extracting data with a simple SQL statement or two, but it should no more be *required* that they do that than it should be *required* that someone is capable of replacing a spark plug if they own a car.

kohlrak
Posts: 136
Joined: Thu, 28. Dec 17, 11:47

Post by kohlrak » Wed, 10. Jan 18, 22:20

korio wrote:IMO everyone in "modern" days should have a "minimun" knowledge of programing.


Despite i work on "IT" im a programmer (atleast that's what i studied) and its always the same, someone asks me to do some "easy" program i tell them how much time it will take and then the "but why so much time, its an easy thing" starts.

Making a little program or script to do something you need is easy, making anything for users to use....

Also, we have a little joke when i was learning programing, "if you learn VB, its like to brainwash yourself and forget everything you have learned so far of programing" and up to some point its true hahah
That's something else i've noticed, too. You got programs that people think are easy, but are hard, but then you got programs that are easy, but people think are hard.
mrbadger wrote:Ah Grep.

Last year I had a student who seemed to think grep was some sort of wizardry. It took them five weeks to understand and complete this task:

Create empty file cli/fstab.txt without using a text editor

Concatenate /etc/fstab to cli/fstab.txt

Display this file in the terminal

Search for the word ’reference’ in fstab.txt

Redirect the output you see to the file cli/out.txt and print this to the terminal.

Not hard right? Certainly not hard for a final year computer scientist, but the student in question thought I was asking them to do something far beyond undergraduate skill level...

All the commands to use, and the way to use them, was listed in the worksheet, which was designed to introduce students to lots of CLI tools.

They needed it explained to them so many times I started to think they were coming to the class stoned.
When you see that, from what i've seen, is people who are afraid to sit down with it, especially with "information overload." I'm not a professional educator, yet i've seen it. You get that deer in the headlights look from them when you say a bunch of things and ask them to apply it. Sometimes they just need a walkthrough case for that extra mental security. It doesn't help at all that people are afraid of breaking their computers. It's not always that irrational fear, but that fear certainly does make things much, much worse.
Morkonan wrote:
kohlrak wrote:...What i want to know is why a particular professional can't generate a simple script on their own without paying a programmer to do it for them. Why are we still hiring people to make static web pages?
It's not their job.
But it's an absolute waste. It's one thing if you have programmers working under you, but most companies don't have programmers working for them.
A friend of mine is a coder, by degree and background. But, as he's moved up the ranks into upper-management, he's not a coder any more. He loves writing code, but it's just not what he's paid to do. So, he's gotten a bit rusty, here and there. Not sloppy, just a little rusty in certain things he'd rather not be rusty in. So, he'll write some code in his free time, just to sharpen up his skills. He may even weigh in, from time to time, on something being written and show the boys in the cubes how to do it.

Sometimes, he'll tell me about seeing crappy code or something just not done the way he'd have done it. He made his chops, been there, done that, been in the trenches and had the bad habits beaten out of him, so he knows what the entry and middle level mistakes are.

"Does it work? Good. I'm not going to sift through this rat's nest unless the problems are egregious, I have more important crap to do." - My friend.

He could. If he needs to know something about a language or just learn a new one, he'll handle it in short order, then be able to tell the new guy what he's doing wrong... IF he bothered at that level. But, it's just not his job anymore. And, if he wasted his time writing html, no matter how good it would be, it'd be wasted time. (He still misses it, though. He's often said he'd probably be happier writing code instead of being not-writing-code in upper management.)
You get the moral of your story? If you have a programmer working under you, you don't need to mess with code. The problem with your story is, this isn't even close to the majority of companies.
My perspective here is just as a user with a desired goal to reach in using a tool. If I don't "need" to create my tool, I don't need to know how to do it. I need to understand how my tool works and a few basic things about it, but that's as far as I need to go in order to get the job done.

Most professions are like that.

But, in "learning" a profession, one often starts at the basics, even if those basics aren't ever used anymore. So, I certainly understand the benefits a coder would gain if they learned what their tools were actually based upon. Learning assembly, for instance. I can see the benefit, there. But, will they need a working knowledge of that in twenty years? Probably not. Is it likely they'll ever have to actually apply that knowledge to writing code in twenty years? Probably not.
If knowledge of assembly is not influencing your coding algorithms, you're probably writing inefficient code. The compilers today have gotten better over the past 10 years, but they're still far from perfect. You should know what the computer's effective at.

Otherwise, yes, you're right. As much as I love assembly, i'm still usually writing in C++, my first programming language, unless there's something particularly useful in the assembly of the target machine (you'd be surprised how many specialized instructions never get used) or C++'s hand-holding is particularly painful for the task (type checking, anyone?).
Here's a question: How long do programmers actually stay in the position of "programmer" before moving into a specialized area or even into a different field, possibly not even related?

Sure, there are fifty year-old programmers cranking out stuff, but what's the percentage of beginning software engineers/programmers/coders that actually stay in that job description for their entire working life? From those I have known, it seems as if that's just a low-level port-of-entry onto a ladder of career opportunities in software/IT.
From the people i talk to, usually tech support is the point of entry, and only very unique people end up programming. I've heard stories like your friend's as well. But that's the thing: programming really is entry level stuff, and this is reflected by the markeet. You can outsource most jobs to, say, India, for next to nothing. Why pay specialists with degrees when it really is basic? So, then, if programmers are frequently promoted, that means they're not as special and unique as we like to think we are. This also means, there should be no problem for other people to learn this entry-level position and erradicate the need altogether outside of companies that specialize in certain types of more complicated software.
mrbadger wrote:Why would you want, say, your hugely expansive architect or geologist to stop doing the thing your paying them to be be a specialist in and start writing scripts?

That would be a very expensive waste of time, time that you would be paying for.

They might enjoy it, but you're not paying them to do that.

Any decent craftsman would accumulate tools over time, but if they need a new tool, and that tool is software based, you hire a coder.

Or buy something to do the job.

Anything else is just wasting time and money.
It's one thing if you're asking an architect to write CAD software or a geologist to write the drivers for some common piece of equipment. But, common, why are they hiring programmers to write a script that takes in simple data and spits it out into an easier to read format? Maybe it's raw data and you want to parse it into HTML or XML and have it put in certain results in red or yellow to inform the reader of particular dangers. There's no reason why you should have to hire a coder to do something that mundane, and it shouldn't take an architect or geologist a whole day's worth of work to write it, either. Hiring a programmer for such a mundane task is easily wasting time and money.
pjknibbs wrote:
Morkonan wrote: And, if he wasted his time writing html, no matter how good it would be, it'd be wasted time. (He still misses it, though. He's often said he'd probably be happier writing code instead of being not-writing-code in upper management.)
I had a manager once who was hired as the IT manager of the business, but I think within three months of arriving he just left all that stuff to me while he got involved with a major coding project that was going on. Nobody ever called him out on it either, I have no idea why; it seemed like a total waste of resources having someone on that sort of pay scale doing regular programming work.

I also agree with mrbadger's point. You pay people to do what they're good at or what they trained to do. Yes, they might be capable of writing a script or maybe extracting data with a simple SQL statement or two, but it should no more be *required* that they do that than it should be *required* that someone is capable of replacing a spark plug if they own a car.
You do expect people to check their oil, fill their gas tank, fill their tires, and fill their sprayers, right? It's also pretty useful to know how to replace an air filter or a battery, or should that not be required, either? Ever see someone out in the middle of nowhere with jumper cables and no functioning idea how to use them when faced with a dead battery and a volunteer?

EDIT: It's time to bring this back, since the topic is present.

Why basic knowledge of tools is important.

User avatar
mrbadger
Posts: 14226
Joined: Fri, 28. Oct 05, 17:27
x3tc

Post by mrbadger » Thu, 11. Jan 18, 18:34

In Computer Science/Computing degrees, we always start with the computer equivalent of 'this is a door, this is a door handle, and this is how you hold the steering wheel', type of stuff.

Real basic, covering all the simple tools, like the terminal, Git, tar, grep and the like.

Plus thanks to my generating the exercise and hammering it at the relevant module leader till he finally agreed to use it, this finally includes simple assembly language comprehension. So it's no longer true for us that the potential for students to learn all the basics of their trade aren't present.

But we still face the problem that students view a completed module as something that they can now forget. Modularised degree's simply do not work when the assessment is bound to each module and not to the course year itself.

How many times do I hear 'but I haven't done that since the first year, I don't remember it'.

There is something wrong with any approach that creates that mindset.
If an injury has to be done to a man it should be so severe that his vengeance need not be feared. ... Niccolò Machiavelli

User avatar
Morkonan
Posts: 10113
Joined: Sun, 25. Sep 11, 04:33
x3tc

Post by Morkonan » Thu, 11. Jan 18, 19:16

mrbadger wrote:...How many times do I hear 'but I haven't done that since the first year, I don't remember it'.

There is something wrong with any approach that creates that mindset.
^--- This.

There's a sort of evolution, isn't there, in "teaching a profession."

How many students have heard, either from their instructors or graduates, "You'll never use this, but you'll be taught it, anyway?"

Back in the day, when the most advanced, affordable, calculator a student could have didn't have a log function button on it, we used paper log tables... We'd look them up, by hand.

I learned all about "Freudian Psychotherapy" even though the only people practicing it today are whackjobs simultaneously staring through crystals to see people's auras while standing in an energy vortex.

Is there a "Hard Science" component to "Computer Science?"

The hard sciences pride themselves on accumulating knowledge and adjusting accordingly, restructuring teaching as needed to compensate. Some subjects that are much like "science" have fundamental rules that are, indeed, rules. Mathematics comes to mind, here. Even so, some things can be changed due to new discoveries, but in these days, those are pretty advanced components of the subject, itself. Soft sciences, as implied, aren't as rigorous or are still developing. In my experience, they deal a great deal more with the history of discovery, the hints and glimpses of basic principles, but without the actual principles, themselves, beyond some basic ones. "People generally don't like pain" - A basic assumption by psychologists that is generally true, most of the time, with a normal person, depending upon how you define "normal", etc, etc...

What changes instruction in Computer Science? What is the active operator? What is considered "new knowledge?"

You are all more learned in this subject than I. I'm simply some "static" in the fundamental discussion. That's a given. :)

But, beyond "this is an instruction set to carry out a mechanical operation," what is fundamental to Computer Science? Mathematical rules would seem to be a norm to this unlearned observer.

It's kind of crazy in a dynamic, interesting, hair-brained way, to be honest. The imagery of people bringing in cardboard boxes of all sorts of stuff that is applicable to "learn to computer" and then dumping it on the floor so they can sift through it in order to construct a method of teaching "computer" is rambling around in my brain right now. Is it a "science" because of maths? Quantum physics? Materials sciences, chemistry, logic and philosophical principles?

So, when the subject of "people should learn assembly" is brought up, this neophyte has to ask "When will that change, how will that change, and will it change so much that the knowledge will be a dead language?"

Assembly isn't even the bottom of this rabbit hole. There are lower levels to be reached. Do "students" or even "programmers" need to go even further before their education can be considered complete? And, when a new chip/processor comes out... then what? That extremely low-level, very specific, knowledge, but not the basic principles it probably makes use of, is now useless.

A undergrad student or practitioner of this mysterious art might be very well served if they also studied Philosophy and Economics as well as their normal Mathematics instruction.

User avatar
mrbadger
Posts: 14226
Joined: Fri, 28. Oct 05, 17:27
x3tc

Post by mrbadger » Thu, 11. Jan 18, 21:44

I'm not quite sure what's going on with pure Computer Science.

I can only talk definitely for my university, but the subject doesn't really seem to have realised yet it's not preparing people for academia.

That was true when I was an an undergrad in the early 2000's, and it seems to still be true. They won't let go of this 'we are training academics' mindset, even if they say out loud that they have.

It worked for me, having gone through the pure CS route. I was totally incapable of functioning in industry (I know, I tried), but I'm fine in university. But that was where I always wanted to be anyway.

I'm not in our CS degree team, I teach on it, but I'm in the Computing degree team, which is very much focused on 'this is what you need to function in the workplace'. I prefer that.

I like CS, I wouldn't give up my CS module, but I don't want to be on their team. I'm often called on to advise, but I won't join them officially, because I'd have to give up my place on the Computing degree team.

Maybe it's not as technical, but I've always thought that an interested intelligent person with a degree as a starting point can teach themselves more or less anything, or do a Masters later.

Besides, not as technical doesn't mean easy. Not even slightly. Not with me designing the assessments it doesn't. Not if they want to get a decent grade.

And when I do make it easier to get a passing grade, that comes at a heavy price.

I never worked in the software industry proper, but I was a registered nurse for many years prior to university. I understand the requirements of a professional career.

The skillset may be different, but a lot is the same. there is a need to stay up to date, to know as much as you can, to function independently.
If an injury has to be done to a man it should be so severe that his vengeance need not be feared. ... Niccolò Machiavelli

User avatar
Observe
Posts: 5079
Joined: Fri, 30. Dec 05, 17:47
xr

Post by Observe » Thu, 11. Jan 18, 22:29

mrbadger wrote:I was totally incapable of functioning in industry (I know, I tried), but I'm fine in university. But that was where I always wanted to be anyway.

I'm not in our CS degree team, I teach on it, but I'm in the Computing degree team, which is very much focused on 'this is what you need to function in the workplace'. I prefer that.
Aren't those two statements a bit at odds with each other?

First you say you don't want to be in industry (and that you prefer academia) and then you say that your teaching focus is on 'this is what you need to function in the workplace'. Shouldn't we be drawing more people from industry, who are able to function in the workplace, teaching those who will end up there?

kohlrak
Posts: 136
Joined: Thu, 28. Dec 17, 11:47

Post by kohlrak » Thu, 11. Jan 18, 23:21

mrbadger wrote:In Computer Science/Computing degrees, we always start with the computer equivalent of 'this is a door, this is a door handle, and this is how you hold the steering wheel', type of stuff.

Real basic, covering all the simple tools, like the terminal, Git, tar, grep and the like.

Plus thanks to my generating the exercise and hammering it at the relevant module leader till he finally agreed to use it, this finally includes simple assembly language comprehension. So it's no longer true for us that the potential for students to learn all the basics of their trade aren't present.

But we still face the problem that students view a completed module as something that they can now forget. Modularised degree's simply do not work when the assessment is bound to each module and not to the course year itself.

How many times do I hear 'but I haven't done that since the first year, I don't remember it'.

There is something wrong with any approach that creates that mindset.
Absolutely. But, at least at that point, it's on the student. I hate it when the teachers hide information from their students, or even misrepresent information. That drives me insane. All that does is complicate matters, in hopes of making matters less complicated. So, instead of solving the problem, you're pushing it further down the road, when it'll be hard to correct. But by not making it someone else's problem, you are responsible. My personal favorite, though, is when someone teaches that assembly and "hex" are the same. Even better, when someone who knows assembly focuses on teaching motorola just because it's a royal pain in the rear.

What you might be able to do to mitigate it (i assume you're already doing this, anyway) is to bring it up as a fundemental that will be used. Maybe bring up fraction multiplication or division or something and say "see? Don't forget these skills like you forgot those, or you'll be in a world of hurt on the job."
Morkonan wrote:
mrbadger wrote:...How many times do I hear 'but I haven't done that since the first year, I don't remember it'.

There is something wrong with any approach that creates that mindset.
^--- This.

There's a sort of evolution, isn't there, in "teaching a profession."

How many students have heard, either from their instructors or graduates, "You'll never use this, but you'll be taught it, anyway?"

Back in the day, when the most advanced, affordable, calculator a student could have didn't have a log function button on it, we used paper log tables... We'd look them up, by hand.

I learned all about "Freudian Psychotherapy" even though the only people practicing it today are whackjobs simultaneously staring through crystals to see people's auras while standing in an energy vortex.

Is there a "Hard Science" component to "Computer Science?"

The hard sciences pride themselves on accumulating knowledge and adjusting accordingly, restructuring teaching as needed to compensate. Some subjects that are much like "science" have fundamental rules that are, indeed, rules. Mathematics comes to mind, here. Even so, some things can be changed due to new discoveries, but in these days, those are pretty advanced components of the subject, itself. Soft sciences, as implied, aren't as rigorous or are still developing. In my experience, they deal a great deal more with the history of discovery, the hints and glimpses of basic principles, but without the actual principles, themselves, beyond some basic ones. "People generally don't like pain" - A basic assumption by psychologists that is generally true, most of the time, with a normal person, depending upon how you define "normal", etc, etc...
Computer science isn't all that fluid, either. Everyone just comes up with their own new ideas that they think are new just because it has a new name, but really isn't. Almost all languages either look like assembly, basic, or C, but it's the languages that are new? Even the new features of C++ comming out in the past few years aren't really all that special. Lambdas? It's just a function within a function, which people were curious about for a long time on why we couldn't do that when you can in certain other languages.
What changes instruction in Computer Science? What is the active operator? What is considered "new knowledge?"
A person with an idea, a promise, and the belief that something they're doing is actually different.
You are all more learned in this subject than I. I'm simply some "static" in the fundamental discussion. That's a given. :)

But, beyond "this is an instruction set to carry out a mechanical operation," what is fundamental to Computer Science? Mathematical rules would seem to be a norm to this unlearned observer.
Rerepresentation of math is more accurate, to the degree that it can have functional properties. This allows numbers to be given meanings that ultimately creation the mechanical operations of which you speak. It really is on, off, and how much on.
It's kind of crazy in a dynamic, interesting, hair-brained way, to be honest. The imagery of people bringing in cardboard boxes of all sorts of stuff that is applicable to "learn to computer" and then dumping it on the floor so they can sift through it in order to construct a method of teaching "computer" is rambling around in my brain right now. Is it a "science" because of maths? Quantum physics? Materials sciences, chemistry, logic and philosophical principles?
Math is more of an art than a science, even though we use it in science. I see computers as no different, aside from the fact that we use science to make computers. And if you understand the connection between the three, you start to view modern scientific theories (especially quantum physics, computer modeled events, etc) in a very, very new light, and probably not a positive one when you also realize how wildly inaccurate it is. Add psychology to the mix and you'll be a skeptic of human "knowledge."
So, when the subject of "people should learn assembly" is brought up, this neophyte has to ask "When will that change, how will that change, and will it change so much that the knowledge will be a dead language?"
Assembly is the lowest level that you can access. Assembly varies from processor family to processor family. It's reliably present, even if it's sometimes hard to get to (the tools nanny you too much and try to keep you from it). Everything ultimately gets translated to assembly before it becomes the executable code. It is a common language of sorts before the final step. As such, the more you know of a processor's assembly, the more you know about what you should and shouldn't do on it.
Assembly isn't even the bottom of this rabbit hole. There are lower levels to be reached. Do "students" or even "programmers" need to go even further before their education can be considered complete? And, when a new chip/processor comes out... then what? That extremely low-level, very specific, knowledge, but not the basic principles it probably makes use of, is now useless.
It's not inconceivable to teach from the atomic level. I've tried to do this a couple times, but your average Joe gets too bored. Which, i understand: arduino's are cool, but most people don't want to use them outside of picking up a "shield."
A undergrad student or practitioner of this mysterious art might be very well served if they also studied Philosophy and Economics as well as their normal Mathematics instruction.
Philosophy, yes, but i've heard the suggestion already to learn programming before philosophy (Stefan Molyneux). They're close enough that they are useful to one another, just not in the fields themselves. Economics, yeah, i would agree on that, too, but that's another one of those "who should come first?" I would argue that economics is actually more useful than philosophy in this matter, since philosophy isn't overly useful in making programs outside of the logic bit.
Observe wrote:
mrbadger wrote:I was totally incapable of functioning in industry (I know, I tried), but I'm fine in university. But that was where I always wanted to be anyway.

I'm not in our CS degree team, I teach on it, but I'm in the Computing degree team, which is very much focused on 'this is what you need to function in the workplace'. I prefer that.
Aren't those two statements a bit at odds with each other?

First you say you don't want to be in industry (and that you prefer academia) and then you say that your teaching focus is on 'this is what you need to function in the workplace'. Shouldn't we be drawing more people from industry, who are able to function in the workplace, teaching those who will end up there?
I think he means he hated actually programming professionally (given his academic nature, it seems logical), so he likes to focus teaching power users at best, rather than programmers.

User avatar
Observe
Posts: 5079
Joined: Fri, 30. Dec 05, 17:47
xr

Post by Observe » Thu, 11. Jan 18, 23:51

kohlrak wrote:I think he means he hated actually programming professionally (given his academic nature, it seems logical), so he likes to focus teaching power users at best, rather than programmers.
Yes, I understand that. I have the utmost respect for mrbadger and meant no offense whatsoever. I was merely trying to make the point, that perhaps part of the problem with new graduates, is that they have been instructed by those who do well in academia, but who may not be the best to train for the workplace.

kohlrak
Posts: 136
Joined: Thu, 28. Dec 17, 11:47

Post by kohlrak » Thu, 11. Jan 18, 23:59

Observe wrote:
kohlrak wrote:I think he means he hated actually programming professionally (given his academic nature, it seems logical), so he likes to focus teaching power users at best, rather than programmers.
Yes, I understand that. I have the utmost respect for mrbadger and meant no offense whatsoever. I was merely trying to make the point, that perhaps part of the problem with new graduates, is that they have been instructed by those who do well in academia, but who may not be the best to train for the workplace.
Depends which problem you're referring to. The complaint of most potential employers is that coders they hire can't do even the most simple of academic tests. On the other hand, when employers are not complaining, professional programming is like professional painting: there's a practical side to an art which you get paid for, but the power of art comes from the desire to do it, and money isn't enough. I'm betting his problem ultimately was he wanted to "do things right," but the industry wasn't too kosher with that, which deserves a topic all on it's own.

EDIT: Or the programming job he was expecting to do regular programs or gui programs, and ended up doing web pages.

Post Reply

Return to “Off Topic English”