Monday, December 30, 2013

19 School Days Left!

That hurts my head.   It feels like I just started, though, to be fair, in an 11-week course I suppose even the last day will feel like it is awfully close to the first.  

Quick sidebar:  this pace is starting to catch up with me and I'm taking Thera-flu like it's tasty or something, but it's what is keeping me upright at this point.  Forgiveness is requested for any typos/rambling sentences.

While the calendar proximity to the first day feels close, the knowledge proximity couldn't be further apart.  I don't step back often enough and evaluate where I am today compared to where I was on November 11th.  But, while knee-deep in Capybara testing today, my husband walked past my desk and saw 100% of my monitor real estate (and it's a 27" monitor!) taken up with Sublime and Terminal windows.  He said, in casual passing, "Do you really know what all of that means?".  I looked at my myriad of windows and replied, "Yeah.  And I wrote just about all of it".  He laughed, said 'cool' and went about his business.

But I was kind of frozen in my tracks.  I do understand it.  And I did write it.  and that, my friends, is pretty freaking cool.  

Dan Pickett, one of the founders of Launch Academy, wrote a great piece and published it on the Launch Academy website about Career Accelerators.  He discusses three phases of skill set development - dabbler, immersive and apprentice.  He pinpoints a moment, in the immersive phase, when a student can use documentation to arrive at a solution without handholding.  It is at this point where the knowledge acquisition goes from linear to exponential.  

I can confidently say I am there.  It feels like lots of things are on the upswing: confidence, ability & mental health.  My creativity is flowing, and I can finally get it out of my head, off of paper and into models, views and controllers.  Spirits are high, and each day brings a new discovery.  Dan points out, when you stop discovering, it's time to move on.  For now, there is still so much to still discover, but his point is taken.

Monday, December 9, 2013

Test Driven Development (TDD)

Test Driven Development, or TDD, is a practice used by computer programmers to approach the development of code from a very structured, linear perspective.  The goal of TDD is to write code that tests your code.  Yeah, think about that for a sec.  Said differently, it is a program (or suite of tests) that wraps around your code and validates that your code does what you expect it to do.

The first steps in TDD are so simple that they almost seem difficult, especially for a beginner programmer.  There is an interesting struggle between doing TDD and your own developing 'code-ego'.  TDD forces you to write code that you know is technically correct, but so narrow in scope that it is wrong.  Your ego screams 'I know the answer!  What are you doing? Danger, danger!  Bad code!'.

But you stick at it and you work really hard not to cheat and write fully functional code.  Baby steps, baby steps.  Red, Green, Refactor.  Rinse and repeat.

But, in the beginning, the inner code cowboy wins a lot and you find that you do cheat.  And if you are committed to the process, you delete that beautiful, apparently fully functioning code and you hardcode a method return.  And it kinda hurts the first few times.  "Why am I deleting good code?"

Because thats TDD!

When you get into a good rhythm you and you begin to watch a program take shape, when developed using TDD methodology, you start to get it.  Hmmmmm.  Maybe writing kindergarten code first will actually lead to a stronger program?  Huh.  I think so.

TDD is drafting a blueprint before buying lumber and hiring builders.  It's a map to your final code and, once you get it, you GET it.  It's a new tool in my toolbox.  Well, probably on my tool belt.  I need constant access to this one!


Monday, November 25, 2013

The struggle with Methods

As a novice Ruby programmer, I am constantly butting my head up against the process known as defining methods.  Defining a method means encapsulating a bit of code that you find yourself needing repeatedly throughout a program.  By encapsulating the code in a method, which has a name, you can call on that method throughout the program by simply invoking its name.  Methods help us adhere to the Ruby philosophy of DRY (Don't Repeat Yourself).

Looking at my first few programs, it is obvious that I am in violation of the DRY principal EVERYWHERE!  There are few, if any methods defined and code duplicated from top to bottom.

Going back 2 weeks, I would have spent more time understanding methods and I would have explained the process to myself like this:

Why methods?  Because they isolate problems in your code allowing a reviewer (and yourself!) to find a problem without combing through hundreds of lines of code.  You can have hundreds of lines of code written in methods, which you may still need to comb through, but you can isolate problems to a specific encapsulation and know where to search.  Additionally, keeping your code broken down by methods insures that you will not break another section of your code accidentally while trying to fix something unrelated.  

When methods?  You can define a method for ANY process in which you pass in a variable.  Sometimes you don't need to define a method.  But often times you do.   If you have a process in which you pass in a variable more than once, write a method.

How methods?  I still don't know if I can articulate the 'how' of methods.  I have written a few, and they work, but I still feel like I have a couple of different 'thought balloons' floating over my head.  I can sometimes merge them together to get a meaningful bit of information but, as soon as I apply it, the balloon is released and becomes a disparate bit of knowledge.  I'm still working to permanently merge the knowledge into a firm foundation for writing Ruby methods. 

Sunday, November 24, 2013

Breakable Toys

It's time to start talking about my "Breakable Toy".  I suppose I should first start by explaining what exactly a breakable toy is:

For Launch Academy, a big part of the learning process is practical application of knowledge, almost immediately upon grasping a concept.  To that end, we are encouraged to conceptualize a computer program/web application that we would enjoy constructing.  That is our breakable toy.  The breakable component relates to the fact that this toy provides us a safe place to experiment with knowledge as we gain it, knowing that, if it breaks, there is no harm - only a learning opportunity from which our skills will improve. 

I've decided to build a tool to help construct an autobiography.  Almost like a retro-active blog.  I would like to create something that provokes the user with specific questions, designed to stir up memories, and then capture them, along with time and place details, so that memoir pieces can be indexed and presented graphically in a timeline.  I hope to incorporate important information about what was happening in the world at the time that a specific memory comes from - i.e. headlines, top 40 hits, etc.  with the goal of providing context for the memory, and hopefully clarity for the user about details that might otherwise be overlooked.  I find that memories are often provoked by ancillary events that were happening at the same time as the memory - especially music.

In the last week I've worked with user stories about how a person would interact with my toy, and wire-framing, which is just drawing how I think the site should look, at a very high level.  User stories are not easy!  Try explaining how a person drives a car without overlooking the slightest detail - such and explaining to the user details such as knowing how to find the car in the parking lot!  Lots of details necessary to flesh out successful user stories.


Sunday, November 17, 2013

Week One - done and survived!

The first week of Launch Academy is now in the books and it was, for me, a tremendous success.  There is a quote that summarizes my week fairly succintly:

“Isn’t it wonderful?  That feeling of not knowing too much about something… Incomplete information… Endless possibilities… When you don’t know much about something, it’s the most exciting sensation."  -Kutsnetz in Talus, by Erol Ozan

There is so very much that I don't know about the subject at hand.  But how thrilling is that?  In 7 days my base of knowledge has grown wider, and a bit deeper.  Width is easy.  Depth is more challenging.  Similar to learning a foreign language - memorizing nouns is easy and with some effort and time one can know a lot of words.  But using them in sentences, conjugating them, pluralizing them, etc. - well that depth takes considerably more time and effort. 

Each exercise and each interaction with a peer or a mentor has given me a few more words, and taught me how to use them.  Being able to use the newly acquired language either by explaining it to someone else, or working through a new problem on a white board is deeply satisfying and confirms that, here and now, I am in the right place. 

The Launch Academy approach to education is refreshing, and so different from the traditional experiences that many of us grew up with.  The objective is not to understand something before everyone else and horde that to prove that you are the 'top of the class'.  If you understand something before your peers, it is your obligation to pay it forward and help someone else understand it.  And you know what?  Explaining a concept and working through a problem with someone else does not weaken you, it empowers you!  Your grasp of the knowledge increases when you can explain it.

Onward to week two!

Bootcamp? Yup. Bootcamp!

On November 11, I began an intensive 'boot camp', lead by Launch Academy, focused on the introduction and development of skills in computer programming and web development.  It's often easy to dismiss my enrollment in the class as 'chance', but I know that getting to this point has been the result of significant work (over the past 14 years) and self-discovery (over the past 24 months).

I probably need to lay a little groundwork to provide some clarity as to how I ended up here.  In 1999 I graduated from the University of Wyoming and moved to Western Massachusetts.  After enjoying a summer off I went to work for Massachusetts Mutual Life Insurance Company in Springfield, MA.  After 3 years at the home office, and after a brief stint as a circulation analyst for a catalog company, I joined the Commonwealth Financial Group in Boston, MA.  Initially as the Director of Finance and Operations, I quickly advanced to the roll of Chief Financial Officer, with a hefty dash of Operations Officer under my direction as well.  This is a bit simplified, and extremely linear, but it's the basics of my life from 1999 to 2011.  

In 2011, my partner and myself were married.  We decided that the paths we had been on (he had a very similar professional background) were no longer satisfying and that the continued accumulation of wealth was no longer a powerful enough motivator to keep trudging along down that road.  We decided to embark on an early retirement and agreed that we would never 'work' again.  That being said, we both have a strong desire to enjoy full lives that may or may not include jobs in the future.  But we believe that whatever we do should not be 'work'.  We've worked for too long and it's time to be enriched by a job, and not drained by it. 

You would think it would be easy, given the space away from work, to identify a passion that you could build your life around.  But, for me, it was shockingly difficult.  I'd had so much outside structure in my life that, when challenged with providing it for myself, discovered a surprising weakness.  But I've always believed in relying on experts for things that we can't do ourselves.  And that's where Bev, my executive coach,  comes into my life.   

Hiring an executive coach was one of the best things I've done in my adult life. Working with a professional, in a safe space, allowed me to open emotional doors and to escape the tunnel vision that was limiting my view of the future.  I am now able to consider possibilities!  It all seems so simple now, but there was a time when any path other than the one I was on seemed impossible and not worthy of consideration.  I was in a tunnel more than on a path. 

Coming 'above ground' may have happened eventually, but working with Bev accelerated the process.  She was able to provoke me and ask me valuable questions that helped me shift my mind set.  Focusing on an end goal can be very productive.  I had experienced that.  But such severe focus on a single goal and the blinders required to avoid distraction actually inhibited potential growth in different, and maybe truer, directions. 

Now, in all fairness, the tunnel in which I survived (and thrived, in many ways) equipped me with an arsenal of skills and experiences that have prepared me to thrive in the Boot Camp environment.  I can easily identify a number of arrows in my quiver that will come in handy as I embark on this new endeavor, including:  Time management, complex financial modeling, & people management skills.  

But the road map to Launch Academy didn't start to take shape until much of the hard work with my executive coach was completed.  

The foundation for my work with the executive coach was the Strong Interest Inventory.  The bulk of the test is to identify working styles & aptitude, then overlay that with career direction and relevant occupations.  I learned that I was both artistic and conventional - which are distinctly opposite ends of the spectrum.  With Bev's help, I've come to understand that these seeming conflicting themes make perfect sense.  I can be an artist with conventional tendencies - creating beauty and visual art using systems and procedures rather than paint and brushes.  My unique skills in organizing and working with numbers and analytics and my attention to detail, when applied to web development, are as valuable as understanding perspective and color is to a canvas artist.  

We then built upon this understanding with a litany of exercises that challenged and engaged me.  A few really stand out when looked at through the prism of computer programing and web development:

Factors in the workplace:  I was asked to identify what factors in the workplace would be necessary for happiness.  My list included:  urban center, modern technology, international, working from home, casual dress, paperless, inspirational, energetic.  

Quick Goal Setting:  all of my goals seemed to fit into one of three buckets:  creative, analytic and historic.  I made an illustration of these three circles, overlapping, and pondered it on a regular basis.  How could I incorporate my love of history with my gifts in creativity and analysis?  Using programing is not unlike painting a picture or telling a story.  People are drawn to aesthetically pleasing sites and aps which tell a story.  That is an engagement of my creative side.  The telling of the story, or 'painting' of the picture is not done with a paintbrush, but with complex code done behind the scenes, which few ever see.  The development of this code is highly analytic  and engages that side of my personality.  Lastly, and most incredible (and surprising) is the layer of historic interest.  With a skill set in programming, and the flexibility to take work when I want to take it, I could work on projects that allow me to indulge my inner historian - from entrepreneurial projects creating applications and websites that don't yet exist all the way to volunteer opportunities developing web and mobile presence for historic organizations throughout the world. 

 Bev taught me the value of experimentation for that sake of the experience.  Launch Academy is an experiment.  I am here for the experience and to test the waters of a subject that felt interesting to me.  If I come out of the end learning something, but not using it, it will still be a successful experiment.  And if I have a passion that blooms, all the better. 

My 'diagnosis' that I skewed highly artistic, followed by highly conventional gave me great anxiety.  I don't use the term 'diagnosis' lightly.  It felt like a punch in the gut.  At the time, I was scared to death.  It made no sense to me and didn't reflect who I though I was.  It intimidated me.  But today, my perspective has changed 180 degrees.  It now feels like a liberating opportunity with limitless potential.  I've come to understand how broad the artistic umbrella is.  I am beyond thrilled at what I anticipate learning at boot camp, both from the curriculum and from the experience, and I'm excited about the prospect of possibly having professional satisfaction in a field that allows me to continue to be a history buff and a numbers/systems guy with a bent towards creative expressions.