I took discrete math too.I agree.I keep wanting to re-visit that book.Does
anyone know about the card game called "Set"?How to play Set
|
|
|
| | |
|
|
|
| |
How to play Set
|
|
|
On Friday, December 23, 2022 at 03:09:03 PM MST, David Schwartz via
PLUG-discuss <[email protected]> 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: [email protected]
To subscribe, unsubscribe, or to change your mail settings:
https://lists.phxlinux.org/mailman/listinfo/plug-discuss
---------------------------------------------------
PLUG-discuss mailing list: [email protected]
To subscribe, unsubscribe, or to change your mail settings:
https://lists.phxlinux.org/mailman/listinfo/plug-discuss