Learning to program…

images-27

Learning to program…

Learning to program…

Maybe you have played video games for forever and have a really great idea for a video game. Maybe you have an idea for an app or a business proposal for an online business.

Not Your Typical Programmer

This is my story of how I began programming. I am not your typical programmer and have not been programming for very long. First off, I am woman. Secondly, I am a career-changer. Admittedly, I am kind of geeky. I write and read fantasy and science fiction, have been known to wear 14 th century garb, watch Dr. Who, and can quote from the original Star Wars movies (yes, I mean a “New Hope”, not those bug-awful prequels).

I took a programming class to learn C++ several years ago. I did well with it then and enjoyed learning about inheritance, polymorphism, and arrays. It was a challenge.  I did not think too much more of it. Teachers have to take classes to keep their teaching certificates current. Despite that I have predominantly worked with young children, the state of Michigan never accepted my coursework in art and psychology as “counting” towards the renewal of my teaching certificate. The state did deem the calculus I took for fun as being worthy of allowing me to renew my teaching certificate to work with young children and children with disabilities.

Anyway, after taking the course I took a job in Aspen, Colorado as a Child Find Coordinator (I have a masters degree in Education and I have worked as a special education teacher) and I moved on.

Life

A few years ago, I found out my mother had lung cancer that had metastasized to her bones, liver and brain. I hastily took a job with a charter school in Michigan to move back to be closer to my mother.

Perhaps, if you are reading this your experience with charter schools has been positive, for me it was not. The for-profit charter school company did not plan appropriately, did not buy curriculum supplies, did not staff the school appropriately, did not understand the at-risk population they had been given the duty to provide an education to, did not provide the full set of meals they were supposed to provide to the children, and made many more mistakes.

I found myself working 80 hour weeks. I bought all the materials and snacks to supply the 27 child Kindergarten classroom I was the teacher of on a salary that had been 2/3 of what I had made in Colorado. Watching co-workers take on what looked like PTSD symptoms while the charter school administration told everyone it was the teachers’ faults if the children did not pass the standardized tests began to take on tragicomedy overtones. We had weekly visits from the Detroit police department to break up fights, sometimes between parents. We had parents threatening staff. Staff had items stolen from classrooms as the charter company cut back on security guards for the school. Not to mention that this school needed security.

Death

My aunt called me near Halloween and told me my mother was dying. I sat with my mother for 4 days while she died. It was a profound and sad experience.

It gave me a new appreciation of life and a sense of my mortality. I soon quit working for the charter school.

After floundering around with another teaching position and not knowing what to do as a career, (because I have worked with children for so long, enjoy working with families and children, and the state of public education in Michigan is currently a travesty) I spent a couple months in bed. Devastated. I spent the time thinking.

Suggestion from a Friend

A friend suggested I take up computer science and programming because I like maths and I was good at the one class I took in programming. Registering for 19 credits in maths and computer science at the local community college, I had no idea what I was getting myself into…

Like writing and art, I don’t think you need to go to school to learn to program. Mostly, you just have to do it. Encounter road blocks and problems and then figure out how to solve them. It can be very frustrating and very rewarding when you do figure out how to make a program work.

Programming is a practical art. It is like poetry in that the simplest solutions are the most elegant. And incidentally often easiest to maintain. Taking classes can move your programming abilities forward and give structure to what can be a difficult enterprise. There are also many online resources to learn programming such as code academy, PluralSight, lynda.com, udemy, and more. Most people I know use stackoverflow on a regular basis to try to help with coding problems. (Hint, look at the second solution to any question posted on stackoverflow.)

Supportive People Are Good

Also, just in general, look for supportive people who can help you. A good friend is a C programmer. He helped me immensely. Sometimes, the “help” has been just in the form of listening to me whine. Sometimes the help is in explaining things to me when the textbooks were obtuse. Sometimes it was just because he made things cool and fun by showing me stuff you could do over networks and more. His help was the extra that made this all more doable.

When I first walked into my computer science classes one of the things that struck me was how predominantly male the classes were. In my introductory classes, we started with 25 -30 people and maybe 3-5 were female. By the end of the semester often a third to half the class had dropped and only myself and maybe one other woman remained.

Girl Develop It

I found myself going to the local Girl Develop It meetup group for moral support. They were amazing. I doubt they always appreciated me turning up and complaining about how I was the only woman in my classes, how I had instructors saying really weird stuff that showed their low expectations for a not twenty-year old woman in their class, etc. However, despite what they might have thought of me, the local Girl Develop It group was fantastic to me and I highly recommend to any woman thinking of getting into computer science they check out their local group.

I have worked most of my life in settings that employed predominantly women. I am going to say the obvious, guys operate differently. There is a good deal of chest thumping and competitiveness. Just like guys won’t often ask for directions, guys won’t say when they cannot do something or don’t know something.

I have helped male classmates with homework and take home exams, only to have them pull hierarchy stuff the next week. I have watched guys who did not know how to approach a programming problem never ask a single question and crash and burn as a result. It kind of boggles my mind. I also have more than once had a male classmate tell me that he was glad I was in the class and asked questions because he had not understood the material either.

Swallowing the Ocean

Learning about computers, computer science and programming has been like swallowing the ocean. It is hard to compartmentalize. When you start learning about one thing it is tied to other things which are tied to other things. The result is that one google search can lead to 20 open windows on 6 different topics.

Learning computer science and programming is simply not linear. It involves learning to think abstractly on multiple layers. You cannot just copy and paste code. That will bite you in the butt eventually because if you cannot understand how the code interacts with other code, errors will arise that are hard to fix. Learning to code and learning computer science takes persistence, time, practice, and being willing to take on challenges. It can be seen as a big risk.

Persisting

Often in computer science fellow students and co-workers are very bright, there is competitiveness, and taking these risks is scarier than it needs to be. No one wants their intelligence and ability to learn to have a negative light cast on it. No one wants to be found wanting. Most of this is poppy-cock that is not worth getting caught up in. I know this from experience and have seen it. Still, it is hard to stay the course and remind myself of this. Learning computer science for me has meant continually re-committing myself, brushing away doubts about my abilities and intelligence, and just putting one foot in front of the other despite set backs (a B in relational databases and watching co-workers assigned to projects while I keep working on training material most recently).

I still have about 50- 60 credit hours to complete to obtain my bachelors degree in computer engineering. I have 3 more classes to complete and I will have completed my associates degree in Java programming. It has been hard. But is anything worth doing ever easy?

And now I have a new book titled “Java EE Design Patterns” by Murat Yener and Alex Theedom to read. For fun. More on another day.