In The Midst
It has been awhile since I wrote anything on this blog. I have been “in the midst”. I have been working to learn how to code in Java, C#, and PHP. And using some SQL, Linux and Git along the way. And learning about servers and protocols and networking and… I feel very much a novice with an ocean of information to learn. Each topic has an eight hundred page book and several hours of tutorials. At every turn sub-topics arise and spawn a dozen other topics with as much information to learn. Learning computer science and programming often means chaining subjects in an ever widening pool and then swimming back to the original subject. The more I know, the more I realize I know very little. Sometimes it feels invigorating and sometimes not so much. Sometimes it is overwhelming.
In the Past
My former career was “special education teacher”. I like working with children very much. Teaching children to read is challenging and satisfying. I always cheer the underdogs because an inspired and motivated underdog will work harder and they know they have to get beyond the obstacles. When things come easy to people, they don’t learn the important lessons of working hard, failing is ok, and you always have a bit more in reserve. I went from a profession I worked in for twenty years, and was good at, to once again learning from the ground up. It is hard to let go of the past. Accepting past accomplishments mean little in the new endeavor stings. Holding a beginner’s framework of mind is a balancing act. Persevering requires strategies.
While, I have written in the past about my decision to change careers. I don’t think I have talked about what it is like to be in the midst of changing careers.
Everyone is SO Smart
I work with many incredibly intelligent people. Their problem solving abilities frequently leave me in awe. Watching how they problem solve, I try to learn from them as much as I can. I have to stay on my toes. Sometimes this is exhausting. I often feel five years old trying to keep up with my teenage brothers. Typically, I am exhausted when I get home.
I optimize my time and work on learning every day for hours. Often feeling I have a lot of ground to cover, I scrounge for and find enough time. I spend about 20-30 hours per week, outside of work, working on learning new skills. I have reached the point where the things I want to learn and to code cannot always be done in an afternoon. Sometimes this desire to learn and swallow the ocean leaves me a tad burnt out. At those times, I have to recognize this when it creeps up and take some time to do other stuff,– go outside, play music, or actually make contact with other people.
Someone In Your Corner
Having at least one person in your corner who believes in you is crucial. There are always folks who will say you cannot do something. Or who act in such a way they let you know they don’t expect you to succeed. Or they pigeonhole you and they are certain their judgment is a correct fit. Staying tough of mind and focused on your goals against this when things are already challenging is tough. That one person who believes you can do stuff? They are… amazing. Beyond value. If there is one thing you can do for another person, it is this. Thank-you Colum.
When I am working on a coding problem, it often takes my breath away at first. There is a brief moment at the onset of taking on the challenge where I have to make the decision to commit to solving it. Two years ago, it didn’t feel risky. This decision had no emotions tied to it. Then I went through enough cycles of coding/problem solving that the dimensions of this as a challenge began to form.
Coding, tracking a bug, or figuring out why some piece of networking isn’t working frequently starts out routine. Go through everything, look for obvious mistakes. Read the stack trace. Look at the error. Code in some outputs. Then systematically start changing things and see what impact these changes have. Sometimes this works, sometimes not.
And that is when things begin to get tough.
So you dig in and start googling. StackOverflow. All those people out there who have written questions about similar issues and the kind folks who responded are where you look for help. Along the way you swallow teaspoons of the ocean of computer science information. Sometimes, you swallow huge gulps that leave you gasping. You keep working through the problem and cheer when you get a different error message.
Woohoo– it doesn’t work but it did something!
You continue. Inevitably, you get to a point where throwing the laptop out the window is poking around in your mind as a viable choice. I once went for a walk at this frustrated point and yelled at the birds on my walk to keep problem solving. Over time you learn to not stop because you will get through this and there is this unbelievably awesome feeling when you solve the issue and get things to work.
What It All Feels Like
Sometimes, I am left absolutely giddy when I figure a problem out or code something and it works. I am often in a state of wonderment about just how cool some of the things I am learning are. I am also a bit blown away by how much I have learned since May 2014 when I started down this path.
So there are moments that are not feel good moments– like when I have to ask for help on something and wish I just knew how to do it. Or when a co-worker says something that hurts about my skill level and I wish I knew more. Or when I want to spend time and take on a new tutorial, but I am just too tired. And sometimes I get real self-conscious. At these times I don’t want to embarrass myself– I’d rather figure things out on my own.
Working on my own is so nobody can see that I am scrambling to figure things out.
And when I realize that I cannot do things on my own yet because I am still learning? All of these are just a different type of problem I have to solve. Sometimes the solution is remembering all the really cool folk who have taught me stuff– like Dan who taught me about MVC, David who I first worked out GIT with, Rachel and James who have both been patient with my popping up over the cubicle to ask questions, Gabby who pair programmed with me, Drew who helped me get through the first JSP training project, LeeAnn who has helped me understand how to test things, Jason who taught me Linux commands, and Colum who has taught me so much I cannot even approach listing everything.
Another choice is to remember I get to decide how I will respond to things– fold or keep learning. Sometimes the solution is to remember tomorrow is another day.
I have learnt I have to accept there is no way to know everything within computer science. It is just too large of a subject. It means there is always going to be something new to learn. I will never master the totality of it. There is no way. And that is very cool.
Aspects of Programming Beyond Code
There are so many aspects to programming– political, creative, and humanitarian. When I first started, I didn’t see all these aspects. Now they are among the things that keep me learning. There is an entire community of hackers/programmers/developers all over the world. Many want to keep the internet free. Thousands want intellectual freedom. Many write code in their spare time and post it to be used for free on places like GitHub. Linux is an open source operating system. The political ramifications of this are staggering. People like Linus Torvalds, Edward Snowden and Cory Doctorow are among my heroes.
Programs Can be Written to do Anything One Can Think of
I didn’t really consider this when I started down this path. Math is a love of mine and I began the career change because it involved analytical thinking. However, I have an arts background and have done creative writing for many years. The creative aspect of coding gives me incentive to keep learning. My skill level at this time is not where I can create some of the programs I am envisioning. Combining my design, art and communication abilities with coding skills is my ambition.
I have ideas for simulation games– games to illustrate ecological/permaculture principles, to show the impact of rising populations interacting with a food distribution system that isn’t designed to feed everyone, to reframe math concepts, etc. Ideas for programs to help people to learn, to help schools to track progress and write individual education plans, to help people with autism to expand their activities, etc are also collected in a moleskin notebook where I write ideas to possibly pursue.
A handful of years ago I learned about an academic in Newcastle, UK named Sugata Mitra. He did work putting computer kiosks in slums in India. People said the kiosks would be destroyed, but that wasn’t what happened. People taught themselves how to use the browsers and began using the computers for all sorts of things.
He also recruited 200 British grandmothers and had them teach children across the globe English via skype. The results were impressive. A few years ago I applied to two different Phd programs in information sciences with an emphasis on social change because I believed then, I as do now, that the UN Millennium Development Goals around literacy could be addressed using a combination of online education and cellular phone applications. Computers and the internet offer some unique opportunities to solve issues by making information available. This very much excites me.
Being in the midst of a career change is… humbling, exhilarating, difficult, terrifying, exhausting, and so much more. I am proud of how much I have learned to date. Not letting this go to my head, I can see I have much more to learn. I am excited about learning more– even knowing there are going to obstacles as well as accomplishments. This has continued to be a risky endeavor for many reasons, not the least of which is financial. I have learned a good deal about many things including myself, how to problem solve, how to persevere, and about programming.