You make a lot of good points David. Can we agree there are three types of degrees? 1) Non technical such as English. 2) Somewhat Technical such as MIS. 3) Engineering/Computer Science/Math or highly technical degrees. At the UofA they did not offer a more technical/computer science degree until I was about to graduate. I was in Management Information Systems MIS. This was not a very technical degree. I was required to take: - FORTRAN which all business majors were required to take. It was called intro to computers. - Since I was an Accounting major at the time, I was required to take COBOL. - A class that was thought using Pascal. We had to do a project with pointers. Do not recall much else. - Analysis - Design - And some course on databases. I think this is where I learned about normalization. Not a very technical curriculum. After taking COBOL I transferred to the local JC which had a very decent curriculum. Not as good as Steve Litt's program. The JC degree required 72 units and included lots of computer classes such as assembly programming and added a 2nd COBOL class. I was told if I did not get an A in COBOL I would not be able to find work in the local community. Given my education and experience I cannot create compilers, interpreters, nor parsers. I see great value in having those types of skills. Keith On 2022-12-23 15:08, David Schwartz via PLUG-discuss wrote: > The biggest difference I find between people who have been to college > and those who have not (ie, self-taught) is their breadth of > knowledge. > > There are various required classes in a college program that are > designed to be “survey” classes that present an entire landscape > of approaches to different topics. And there are several such classes > required for the same reason. > > Technically speaking, I was a Math major, and I was required to have a > bunch of core math courses. Then there was a core of computer-related > courses. Then there were a lot of electives I could take based on my > interets. When I was applying for graduation (BS), my advisor looked > over my studies and remarked at how broad my interests were. He > counted nine (9) different computer-related fields, and said most > students only got exposure to 4 or 5. I just followed my interests, > while a lot of others followed what their advisors told them to take. > I can’t say one is better than the other, but I’ve certainly met > lots of devs who have what I considered to be extremely deep and > narrow understanding of various programming topics at just the BS > level. > > As a programmer, math has been a constant thread in most of my work, > but it has all been fairly simple math (if you want to call it that). > > One quite innocuous (and required) class that I took was MAT243 > Discrete Math Structures. It was all about counting problems. There > was only one guy who taught it and he had the personality of a wet > dish rag. Nobody really liked it. The material itself was quite > boring, to say the least. However, it turns out that this one class > probably has played the most central role of all math classes I took > in school. Most of the rest of the core math classes (like calculus > and linear algebra) have had zero impact on anything. > > One class i wish I would have taken is Set Theory, because SQL is > based on that, but back in the 70’s, SQL was barely even a thing > yet. > > Now, things could have been different, because the jobs I got were a > result of searching for work that interested me. I actively avoided > anything dealing with heavy-duty math topics that got into the realm > of calculus, numerical analysis, and hard-core linear algebra. I loved > trig for some reason, and I used some basic linear algebra once when I > did some stuff involving image analysis and manipulation, although > that involved understading and applying a lot of existing material > rather than having to write code from scratch. > > As it happens, I’ve done a lot of work in areas that leveraged my > studies in the world of Compiler Construction, building lexers and > parsers and similar stuff, although most folks may never run into > that. I’ve always enjoyed working with lingusitic and > language-related problems. > > The point is, I’ve worked with many self-taught devs who had a lot > of very detailed knowledge of the subject. But what they lacked was > breadth. > > When your knowledge foundation is built on narrow topics picked up > over time based on choices you’ve made yourself or what your > employer has made for you, it’s not common to “survey the > landscape” in the same way that you get in a typical college > curriculum. And that has often been important to me in being able to > find alternate approaches to solving a problem. > > I’m not about to say that having classes in humanities and social > sciences is helpful to programmers overall, but someone who wants to > get into Management might find them quite helpful at some point. I was > a Math major, and yet I’ve never used Calculus and things built on > that, although from time to time I’ve wished I had a little more so > i can play around in the arena of things that let you analyze and > alter sound profiles. But so much of that has been covered by others > that you can just search around and grab a library to do what you > need, so it’s not a great loss. But reading the theory behind a lot > of thee algorithms is hard for me to follow. > > One of the biggest areas where I've observed this to be relevant, and > will probably never be addressed, is in the web world involving > certain types of web design. User-facing stuff lives in the world of > Graphic Arts, while back-end support (ie, database stuff) is more > classic programming stuff. There are lots of schools that teach UX/UI > design from an “art history” perspective that’s targeted at > artists. These people often must deal with some kind of back-end DB, > and frequently need a middle-tier to apply a lot of security and > filtering as well. > > These folks are NOT “programmers” although more and more > javascript is being employed on UIs today. So we end up with people > who have virtually no classic traiing in “programming” or > “math” being asked to solve classic back-end and middle-tier > programming tasks, and companies wonder why their systems run so > poorly. But, boy, do the “look great”. :) > > In situations like this, a project really needs to have TWO people > working on the project: one of whom is more of a visual artist > (graphic design) and one of whom is more of a programmer. > Unfortunately that doesn’t seem to happen very often in my > experience. The term “full-stack” has come to imply someone > skilled in the entire gamut of skills — jack of all trades, master > of none. When people programmed in VB or FoxBase or things like that, > the whole magilla was built into that one tool. It wasn’t a > “stack”, it was just one big dev tool or another, Today it’s > like someone threw thse tools at a brick wall and they shattered into > component parts. > > Back before we had IDEs, we had all of these tools, and you used > “make” to help you build things and you just used whatever > “commands” you could find to help. Today, they’re all taught as > separate subjects in some schools. Back then, everybody was dealing > with the same pot of stew filled with most of the same ingredients. > Today, your likelihood of being hired is how many of the different > ingredients you have hands-on experience working with. > > Companies don’t want to waste time and money with people having to > learn stuff — they want people who can hit the ground running. So > even saying “full stack” isn’t meaningful unless you say what > each of the components of that stack are. Never mind that a lot of > them at each layer are fairly equivalent. The people laying out these > requirements often don’t have a very broad base of understanding > themselves, so they rely on advice from whomever they can find to > advise them. And sometimes it’s just left to someone in HR. > > Anyway, my point is that self-taught people tend to have an excellent > understanding of things they’ve encountered over time. Left to their > own devices, most people do not “survey the landscape” from time > to time to see what else is out there, in the way a typical 4-year > college degree affords students. Yes, a lot of what you’re exposed > to is ultimately going to be irrelevant, but a lot of it comes into > play in unexpected ways throughout your career. > > I’ve worked with self-taught devs who don’t know anything about > regular expressions, or what lexers and parsers are, so when we’re > facing a situation where we need something like that, they don’t > even know what to look for. If you have no exposure at all to some > topic, you don’t know any relevant terminology, or how to research > it, or anything. You’re just groping around in the dark. I’ve seen > this a lot, and it exists frequently because people don’t like to > ask for help. > > I ran into that recently myself and posted an explanation of what I > wanted in a group, and several people came back and explained > there’s a whole “body of knowledge” with its own terminology and > whatnot, stuff for me to search for on Google and dig into. > > As it happens, there are lots of little niches like this we’ll all > encounter over time. However, most college curricula are designed to > present a lot of stuff that most people in the field will enounter > repeatedly over time. > > I think it would be possible to teach an entire CS program without the > humanities and social-science aspects in half the time they take today > (2 years) and that would be quite sufficient for most developers in > their career, without much loss of value. But again, if you want to > get into any kind of Management role, you’d be at a loss relative to > others who did get this broader background in college. > > -David Schwartz > --------------------------------------------------- > PLUG-discuss mailing list: PLUG-discuss@lists.phxlinux.org > To subscribe, unsubscribe, or to change your mail settings: > https://lists.phxlinux.org/mailman/listinfo/plug-discuss --------------------------------------------------- PLUG-discuss mailing list: PLUG-discuss@lists.phxlinux.org To subscribe, unsubscribe, or to change your mail settings: https://lists.phxlinux.org/mailman/listinfo/plug-discuss