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