I'm intrigued by your comments that one needs a computer science
foundation to be more effective as a programmer.
In this article
[http://fortune.com/2015/09/01/computer-science-degree/], it is reported
that a start up CEO says "He prefers people who have an innate passion
and talent for coding in the first place.". I think I understand how to
determine if someone has passion... But how do we determine if someone
has " talent for coding"?
There seems to be two camps. One camp believes you need CS training.
The other says you need exposure to current technologies and exposure to
working in a team. Maybe both are correct?
Your thoughts?
On 2018-01-20 14:18, David Schwartz wrote:
> Back in the 80's there was a library I used that I really loved. The author
> was clearly dedicated to supporting it and was very active on their
> discussion forum, and was constantly helping people fix problems they had
> with the code. (It was a 'C' library.) He was constantly releasing updates at
> a pace that I'd feel challlenged to keep up with.
>
> I went to a Software Developer's Conference and this company had a booth, so
> I swung by to meet the guy. I turns out he was quite disabled. He reminded me
> of Stephen Hawking. He may have had ALS, I dunno. Nobody said, and I didn't
> ask. There was also a close buddy of his there who I guess was his
> "caregiver" of sorts. Sadly, this guy appeared quite drunk most of the time.
> I suspect he may have been an alcoholic, which must have been quite
> frustrating to the software guy. (Unless he had some disability himself, but
> at the evening parties where I saw him, he was going through beers pretty
> quickly.)
>
> Like Hawking, here was a brilliant mind trapped inside of a dysfunction body,
> and he discovered that software was a great way to keep himself occupied and
> engaged in the world. Not to mention that because this was a fairly popular
> library, it brought in a nice steady income for these two fellows.
>
> It's not uncommon to find disabled people who've accumulated lots of academic
> creds. In this case, I'd say it's more a reflection that there's a sharp mind
> trapped in a dysfunctional body doing its best to keep itself occupied in a
> positive way.
>
> The failure here is probbably on the part of the not-so-sharp minds trapped
> in fully-functional bodies who probably see their jobs in supporting these
> people (as "case workers" and "coaches") as little more than pacifiers,
> keeping folks like Trent modestly occupied and engaged enough so they're not
> much of a bother to them. That would infuriate the hell out of me if I were
> disabled.
>
> Software is a perfect domain for lots of folks with physical disabilities to
> engage in because most of the activity around software is going on in our
> heads anyway.
>
> I was quite shocked to find that the developer of that library was so
> extremely disabled that he couldn't even talk and had extremely limited
> physical abilities. (I seem to recall he had some kind of beak or stick he
> wore on his head that let him tap on keys on the keyboard. This was
> pre-Windows before mice were in common use. His typing was very slow and
> labored. Yet he managed to write all of that software and help people online
> and everything anybody else would do. He was just very slow at it, although
> in the end that didn't matter in the least.)
>
> That said, find a project you like that's in a direction you want to learn
> more about, and just take it on.
>
> If you can take classes that help you learn, all the better. Don't worry
> about your academic background. However, it would be good to have a few core
> Comp Sci courses under your belt.
>
> It bothers me that our educational system has become somewhat bifurcated, in
> that it's teaching core Comp Sci topics as part of a larger educational
> curriculum but ignoring them at the other end where they're starting by
> teaching "coding" and never go very deep with the theory.
>
> People need to be able to learn core Comp Sci subjects without being
> encumbered with all the other crap required to get a Bachelor's Degree.
> Unfortunately, AA degrees are just the first 2 years of a BS program, and
> they only include about 1/2 of the core CS material.
>
> What's preventing this from happening is a shift in the industry from hiring
> people with core competencies to hiring people who've mastered superficial
> skills -- you don't need core competencies to become highly facile with
> runtime libraries that allow you to crank out code really fast.
>
> But all of that code you end up cranking out may not be structured very well
> because you have no underlying core competencies! This is what people are
> totally missing, thanks in large part to those who've risen in the ranks
> without the core competencies and therefor are competely blind to their
> value.
>
> ("Hey, I've never had a compiler construction course, and that hasn't hurt my
> performance over the years!" Well, this person probably never had anybody
> with any background in compiler construction or finite automata theory look
> at their code where that stuff would have helped them and pointed out how
> horribly it was structured and how hard it is to maintain.)
>
> You don't recognize that some particular task requires things taught in a
> basic data structures course, or you don't see the algorithmic complexity of
> something you're building because you never had an analysis of algorithms
> class. With no formal set theory background, you don't have any grounding in
> how to write efficient SQL queries. With no formal language theory background
> taught in a compiler construction course, you have no understanding of
> tokenizing and parsing streams of input data.
>
> This lack of foundational background does not prevent you from writing code.
> It simply prevents you from recognizing various tasks as belonging to a
> larger set of already recognized and well-understood tasks that have been
> studied and their various structures and dynamics carved out for them to
> adapt as a "best practice".
>
> The one class that probably had the most relevant impact on my professional
> life was called "Discrete Math Structures". It was the most boring and
> seemingly irrelevant class I had in college. But it ended up being the basis
> of most of the work I've been involved with throughout my career. It was all
> about "counting". You'd think, "what a boring-ass topic!" Perhaps, but what I
> learned there forms the foundation of just about everything I've ever done in
> programming.
>
> The point is, when you attack programming from the coding-side -- mastering a
> language and libraries rather than fundamentals -- you never really learn the
> fundamentals, other than a little by osmosis.
>
> I used to get hired by people who said, "Oh, you've got a Computer Science
> degree. You can learn anything!" and they didn't give a rip what languages or
> libraries I knew. Today it's just the opposite. People want to know how fast
> you can hit the ground running with their particular "stack" and they tend to
> hire people who have the LEAST TO LEARN. Then they wonder why their code base
> is big and fat and slow and hard as hell to maintain, and why their
> development schedules seem to stretch out to oblivion.
>
> If you can take some core Comp Sci courses without having to be enrolled in a
> BS program, I encourage you to do that. Even just one a semester. there are
> only a handful (6-8) and they'll make a huge difference in your ability to
> learn new stuff going forward. THIS is the "core" of Comp Sci -- not the rest
> of the crap you have to take to get your degree, like Sociology, Psych, and
> English Lit.
>
> Spend some time learning these core competencies and you'll find yourself far
> better for it down the road. That approach won't get you a degree, but you
> will find it much easier to approach new langauges and platforms and come up
> to speed faster.
>
> Because in the end, everything in the software world really is based on some
> core foundational theories and disciplines. For example, every imperative
> programming language is structured the same, and if you understand compiler
> theory, they pretty much all look and work alike.
>
> They didn't teach parallel programming, multi-threading, and stuff like that
> when I was in college, but they probably do today. That would be a great
> class to take if you're trying to learn something like Haskell and how to
> leverage the use of highly distributed parallel processors, even if they're
> arrays of CPUs on GPU chips.
>
> I believe it's not so much your familiarity with the language and run-time
> libraries that get you ahead, but rather the underlying theories that the
> languages are usually based upon that inform a lot of your decisions in these
> cases.
>
> So, yes, pick an open-source project to work on and focus on something
> concrete, like R or Haskell or whatever. But spend some time learning the
> foundations upon which those technologies are built.
>
> -David Schwartz
>
>> On Jan 19, 2018, at 9:59 PM, trent shipley <[email protected]> wrote:
>>
>> At present I am working through an introduction to R and an introduction to
>> Haskell. Both are fun, but Haskell is more fun--and harder.
>>
>> I'm about a quarter of the way through each textbook.
>>
>> I'm also in DES's Vocational Rehab, because I have three disabilities, two
>> master's degrees, and work as a telephone customer service representative
>> for low wages. My vocational rehab coach wants me to start contributing to
>> an opensource project ASAP. I'd like to contribute to Frege (Haskell for the
>> JVM) but it will be weeks before I can finish the Haskell book, and then I'd
>> still be a newbie. The most advanced training I have is a community college
>> certificate of completion in computer programming, so I'm not that
>> sophisticated or experienced a programmer. I am having trouble convincing my
>> worker that making a meaningful contribution to an opensource project is
>> actually a daunting proposition in most cases. Is anybody looking for an
>> entry-level contributor to an opensource project?
>>
>> Anyway, there are opensource projects I'd like to work on. One is extending
>> and documenting Frege (https://github.com/Frege/frege [1]). They want
>> Haskell plugins translated into Frege+Java. The project, unfortunately,
>> seems moribund. No matter, maybe it would be possible to "borrow" directly
>> from the GHC after going over a compiler textbook with exercises. Of
>> course, what one would REALLY want would be a JIT Frege compiler, and I have
>> a feeling you won't get that by slavishly translating the GHC.
>>
>> The other, rather harder, project I want to work on is translating, then
>> modifying and extending Peter Sestoft's Funcalc (Spreadsheet Implementation
>> Technology: Basics and Extensions, 2014). I have some idiosyncratic ideas of
>> what I want to do with a functional language that is a spreadsheet. I want
>> to target the JVM, and write most of the compiler/interpreter in a
>> functional language. I'd use Frege + Java but Frege isn't nearly mature
>> enough. I expect that if I ever do it, I'll use Kotlin + Java.
>>
>> That implies that future projects are going to be learning to write
>> compilers and learning to code in Kotlin.
>>
>> How might someone with the equivalent of an AA in CIS (not CS) emphasizing
>> programming get competent at (human) reading and (human) writing of
>> lexers-parsers-compilers-linkers? What are prerequisites.
>>
>> Does anyone have favorite compiler textbooks? Any compiler textbooks they
>> really hate?
>>
>> Regards,
>>
>> Trent Shipley ---------------------------------------------------
>> PLUG-discuss mailing list - [email protected]
>> To subscribe, unsubscribe, or to change your mail settings:
>> http://lists.phxlinux.org/mailman/listinfo/plug-discuss [2]
>
> ---------------------------------------------------
> PLUG-discuss mailing list - [email protected]
> To subscribe, unsubscribe, or to change your mail settings:
> http://lists.phxlinux.org/mailman/listinfo/plug-discuss
Links:
------
[1]
https://u2206659.ct.sendgrid.net/wf/click?upn=3cK2FVJjyu2N-2Bxco034fZrrYKskBoDse0NQhf-2FhO68A1Z4BXmqM-2F5GtXeKjNCj2m_6lpMB7VLnN-2Fj9-2FEErg8-2F-2BMBpb5QxlByTgv2M3fbWD9ebvC-2BWrN3h7jImK8EVWYBeuezmM-2FbZmX-2FOxPb9DW3bkjYTFRf21b4-2BZSDHPXSDWg7igh4IQilbRmKSCjqEXClz6ExdyQ05r36dWmr4LxVKmj1eYWW4YRx5U-2FHP2-2F2GfJ5RNEH02eiQYN7og9MM5iWNir7-2FGbQQFzhtJZkLt8Ui7nDIb-2BcF79bScwL89-2Fqb99g-3D
[2]
https://u2206659.ct.sendgrid.net/wf/click?upn=5DvWGaZUY8Sh5aRLWfQTKYiRLVzunonVk948p8WIzMe-2FXlJ9Cta8w8U9xoku9LrUSHNMJbSd3ZEwH-2BqnW2UHlA-3D-3D_6lpMB7VLnN-2Fj9-2FEErg8-2F-2BMBpb5QxlByTgv2M3fbWD9ebvC-2BWrN3h7jImK8EVWYBeuezmM-2FbZmX-2FOxPb9DW3bklWNhPauFwW9c3vKFcMs1u3nHaPxI42vouRZUOBclcX7Rm6zva-2BDOCMx7v6R-2Be01s-2FT-2BkK6OqWynhb76FQxtUnOoKCPAgYCTACQoreTrmXr-2BA1doYVHWQX7dZUuuk324jTm2tZAmlN3Cr8AAyel0zlw-3D---------------------------------------------------
PLUG-discuss mailing list - [email protected]
To subscribe, unsubscribe, or to change your mail settings:
http://lists.phxlinux.org/mailman/listinfo/plug-discuss