This makes sense.
> I do have auto-completion turned off
I also agree with this. I'm not going to start a debate over the topic, but I believe its benefits are best exploited once they are least needed.
With regards to choice of editor: I don't know your district's rationale, but I personally wouldn't want to encourage use of an editor that they would have to purchase to use at home and get the same experience---it's not necessary in our field, and there are many good alternatives.
Your choice was a good one. I can't speak for the editor (though I have co-workers that use it for light editing), but it is free/libre software---proprietary editors would send mixed signals, saying that it's great to be curious and learn, to share code with others, to modify your software to suit your needs and help your friends...except when others tell you that you can't. Don't impose limits on their ability to learn and explore. :)
I found it a pretty surreal experience working on a Chinese (Java) code base. All the names were in English (comments were in Chinese, but anything that wasn't a comment was in "English"). Everyone used autocomplete. If a name happened to be misspelled on creation, everyone happily went with it forever. They didn't care. Even if e.g. you had a bunch of related methods like "dispatchAComponent", "dispatchBComponent", "dispacthCComponent".
Is this really a thing? I just can't imagine a student going into CS unless they have at least a bit of experience playing with it in their own time. As someone who started programming at age 7-8, I just can't believe people go into CS without a pre-existing interest in the form of a hobby.
Do people really enter into CS for the money grab? No interest in programming, no idea what they are getting into, and solely interested in the salary once employed? That seems so counterintuitive based on the reason the majority of us enter the industry. Maybe this is where the 9-5ers come from? I can't say this without ego being involved: you can tell the difference between a "real developer" who spends some time most nights digging into new tech, vs. someone who is in it for the salary who adds nothing but code debt every time they touch the codebase because they never improve their skills outside of office hours. ie: The "senior" after 10+ years whose every commit looks like the work of a first-week developer.
Students have room in their schedules for several electives and mine has a reputation as a tough but rewarding course. The majority of my students just take a single class and go on to college to major in something else.
Kids have different hobbies. I have students who've been playing soccer since they were 5 years old who don't play around with a computer for fun. Or they don't have access to a computer. (Many of my students are on free or reduced price lunch.)
Limiting the profession to those who started naturally at a young age is a good way to keep out everyone but rich mostly-white kids with college-educated parents.
I would say it weeds out everyone who was not inclined to study programming or was not in a situation that prompted them to start programming.
Frankly, this is a childish presupposition. Let's imagine if surgeons where expected to have begun surgery for fun at the age of seven.
It's a cop-out excuse from teaching establishments (if used) and it's a harsh and exclusive requirement from colleagues, more fitting of a puerile fraternity than that a professional cohort.
What one does need, is a certain fluidity in language skills, logic, and most of all, most importantly, a will to learn.
Yes, it needs a lot of work, and it's not easy, but let's not invent imaginary boundaries for peoples careers and lives.
Counter-example: I started coding at 9, got my first at-home family computer 3 years later, and my parents graduated college when I was already in college. This was back when a PC cost more than my parents made in 2 months. Now laptops can be got for $300.
It's not about rich, it's about having coding after-school classes as available as soccer (or whatever) practice.
Ok... so what about the kids who want to play soccer instead of being cooped up inside?
The idea that you might have to choose between playing a sport and getting enough experience to consider going into CS/SE in college is ridiculous.
The idea that you might have to choose between coding and getting enough experience to consider being a professional soccer player is ridiculous.
;)
But my point was about having the choice and opportunity.
I don't see what your point is. The OP suggests that coding after school classes should be as available as soccer practices. Do you think that if coding classes after school are made available then somehow it is harmful?
I went through my first year at community college without even having a desktop computer. All of my home programming was with pencil and paper, and I used the lab. I can imagine that if you're 9, you may not have parents that can carve out an extra $300 so you can see if you like computers, or a lab at your school that has free computers that you have a sufficient level of access to in order to run or install the software you would need. I was in my 20s, and still limited.
These are high school students.
~$100 (or less for an old second hand laptop plus a basic internet connection (or the public libraries one) is all that's needed to start programming.
The question is, is there need for something like this?
A lot of poor people do not have free time to earn it-- they're going to school and using their minimum wage money to eat. I slept on the floor and worked 16 hour days to be able to get my education.
No it's not. You first have to know that it's a thing that you might be able to do. Who knows what other barriers are there unless they live it?
Now, think about accessing the resources to learn programming: Books, Documentation, Compilers, IDE...
I recall being on 56k internet in 2001, paying by the hour. Couldn't have learn programming, except going around and buying books and tools on CD and offline documentation.
That was the hell of a barrier to entry compared to today.
1. It's quite ok to start programming after ones teens and still make a career of it. The basics of programming aren't that hard. It's the systems design aspect which takes a lifetime.
2. Internal motivation for the subject is the key. People are pretty good learners for most of their life.
"Money grab"... Most professional careers demand quite many hours put into it. Some programmers treat their career as a profession, others as just a job. Since there are no authorative qualification bodies on the matter (like for doctors) that's just how the dynamics of personal lives and human nature run.
That said, I don't really see the point in chasing after new technolgies - I have quite a large enough learning load in trying to gain deep understanding of my domain (graphics/computational geometry).
Everyone starts with a simple "interest". Computers were the "interest" for me as a teenager that grew in CS. Others can be interested in "computers" but not know where to begin. Only after looking around did some find CS to be that "it" they were looking for.
2. My mother, with an English degree, went into programming in her early 20s through a training program at her job. That was nearly 40 years ago, and she's still going.
Programming is largely a monoculture that looks down on people who are dissimilar (for example: who didn't program as a child, or decided to enter the field in college), and actively discourages them from continuing by assuming the worst about their capabilities.
There are all kinds.
Introductory courses often serve the purpose of introducing students to a topic they've only heard of, if that.
Over time, my interests grew and I wanted to make websites so I started off with some HTML. I got a basic hang of it and I wanted everything to be pretty - so I did some basic CSS and then I got in JS. (All of this was done in Notepad - I was not even aware about auto-complete and tab indentation till I got to university and started using Visual Studio and Eclipse)
I got into Software Engineering in university because I was passionate about computers - not "programming" in general. But the course of my education, I got into everything from web and mobile dev, to creating file systems (it was extremely basic) - and now, I'm extremely passionate about programming. All that said...from personal experience, I would say that if you combine game dev, CS and SE - more than 80% of the incoming class came in with no prior experience in programming.
In my specific class, out of the graduating students (in Software Engineering)- at max 2 of the 15 are what I would consider "good/skilled" programmers. The rest got in because of various reasons (thought it was easy, thought they'd get a huge salary after leaving etc.) and don't really give a damn about programming/tech and their code/skills display that - but in the end, it does not even matter because companies like TCS/FDM hire such students, have a "intense" training program (read: basic Java/C# skills) and then pass on these "trained" students to enterprise (banks, hospitals etc.) and pay them extremely low (min. wage during training period, 30 - 40k CAD for the next 2 years - which these students will accept because they are aware of their deficiencies and this sets a bad precedence for even skilled workers)
It's not TCS/FDM's problem, managers/enterprises don't care either as long as you have that many hours/day and work gets done (quality and ownership does not really matter) and your co-workers generally have a similar skillset and play hot potato when it comes to getting actual work done. All the workload finally falls on that one skilled guy / team who basically does everything (who'll keep getting more and more frustrated and finally quit)- rinse & repeat. And worst of all - co-workers will have the audacity to make fun of the skilled worker for having an interest in programming/work (because having a passion for what you do is somehow a bad thing /s) all while offloading as much work as possible.
I have seen quite a lot of friends (skilled and mediocre) basically fall into the above cycle and in the end - the skilled are the ones who finally give up and stop giving a damn about their work/skills (which then sets a bad example - I have heard this as an example in uni - "why bother studying this framework/tech?, just find the guy who knows it and offload it to em") while mediocre workers basically get skilled at just that - not getting work done while not getting fired - which is considered a perfect 9 - 5 life.
BTW the above are my experiences and incidents I heard from friends/co-workers etc.
That said, I only make them use Notepad for a day or two. My goal is that they understand that nothing magical is happening. Java is just text, which can be written with any suitable tool.
After the first couple of days we switch to Notepad++, which has syntax highlighting and auto-indent.
(We would use Sublime Text, but the district won't approve "shareware".)
I do have auto-completion turned off in Notepad++, though. In my experience that only produces beginners that don't actually learn the names of anything.
Auto-complete is super helpful once you have a few years of coding under your belt, but IMO it is inappropriate for honest-to-god beginners.