| As somebody who made this career change, do not underestimate how much she has to learn. It's very doable, but there is really SO MUCH. For somebody who didn't grow up tinkering with computers (I didn't, my Dad needed that desktop to write his law briefs so if we messed it up we were in big trouble) there's so much ground work to lay and jargon to conquer that is second nature to people who program but very confusing and new for beginners. For example, early on when I was just starting to program, somebody was trying to help me use a terminal (a what?) and they said "ok, type L S dash L pipe grep dot txt." HUH? ok, I typed "ls-l," but what's pipe? No no no, it's "L S Space dash. ls is the command." It's a what? It's like software that's already been written that you can call just by typing the name." Oooohhh. That's just one example. I got it eventually, I got a CS degree and I'm doing distributed systems stuff fulltime, but man those first few months were rough. I remember a friend helping me through what I later recognized as Baby's First Off-by-one error. I remember the victory of writing my first program that worked the first time. I remember the first time a classmate asked a question and suddenly I was able to answer it! My recommendation to start: write a toy program to do something trivial and run it from the terminal. Like "Hello ___" where you take in ___ from the command line. Learn how to interpret or compile your code from the terminal, learn the basics of variable assignment (== vs =), if statements, maaaybe loops, and go from there. Never, ever say "It's simple," "It's easy," or "It's trivial." I got very hung up (still do sometimes) on trying to understand what I'm doing from code down to bare metal, and that is NOT SIMPLE, and when you're swimming in unfamiliar terms and confusion it is very hard to articulate a question that clarifies your confusion. And trying to guide somebody into thinking on a handful of abstraction levels without going to far is not simple. Many times I needed to hear "you don't need to worry about that right now" or "just treat this as magic for the moment and focus on this other thing." That is way more helpful and encouraging than "it's simple." I think FizzBuzz is simple now, I sure as heck didn't back then. Like other commenters said, leave OOP or functional paradigms or whatever for much later. That stuff matters when you realize your one class has gotten super unwieldy. Don't jump too quickly to Android or web development without covering the basic basics first. Android and web development are not simple and there's some black-box magic that I don't even think some pros fully understand. It is nice to visually see the changes that you're making through editing a UI, but the abstractions can be tough. This comment got long. In short, be encouraging, help her discern what she needs to know and what she doesn't, and nothing is ever simple because ultimately it's all running on a lightning-infused rock, and these days that rock is probably connected by metal strings or electro-magnetic waves to other lightning-infused rocks, and that's pretty hard to wrap your mind around. All that said, I know for a fact that she can do it because I did! |