How I Learned to Develop

I first programmed in 2009.  I needed some elective credits and I enjoy computers so computer science 121 looked fun.  It was great.  The professor was good, but not great.  what was great was how quickly he got us into doing stuff.  We started not with java, python or any of these languages, but with Scratch.  Scratch is a MIT visual click and drag programming engine.  If you know nothing about programming, I would advise starting there.  It will allow you to focus on the important part of programming, the logic. It also allows you to in minutes get something graphically out there.  That short concept to reality timeframe helps you understand the logic you’re messing with.  It also takes away all sorts of worries like, semicolons.  

We had to create a project using Scratch, yeah I made a space ship which blasted out asteroids.  I maxing out Scratch’s capabilities quite quickly.  For one, it couldn't pragmatically generate objects, and two the graphical power wasn't there to handle all the objects I wanted to display.  This was my first taste of needing to cut back my scope.  It was in an environment where I had the time and resources, but my environment couldn't handle it. This is opposite to pretty much all my other experiences with scope.  Thankful we moved onto java.  We had projects and I started to build my library of useful tools, mostly dealing with random generation and string functions.  It took me another 18 months before I was able to recreate the asteroid game in Java. But in order recreate that Scratch game I had to learn about multithreading, and sterilization.  Multi-threading is how you can have parallel path doing logic at the "same" time (parallel processing is where they trade off using the processor, but still only use one processor). Sterilizations is needed to save and retrieve data.  JFrames and such for the UI, if you were wondering.  I've since lost the files to that game, and I recently opened my library of java classes and half of them won't compile because of deprecations in Java.  I’ve switch over to focusing on iOS for a while now.  Even as I am writing about this I am suddenly remembering more and more applets and projects I did with java.  I had completely forgot I even started a 2D turn based game.  I didn't get it to work, but I was attempting and made a good deal of progress on my own 2D node based animation game engine.  I was trying to create a program to dynamically change the positions of limbs on a 2D character.  I didn't even realize until this very moment that I was attempting to make a game engine.  I've recently been watching GDC conference videos on YouTube and thinking I could never make a game engine.  I was doing it 5 years ago, and I didn't even realize I was doing it. I just knew I needed to solve this problem for my idea. I didn't have to tools or resources to buy the tools. But I had 3-4 hours a day to have fun with this and create my own solutions.  Wow, I just realized another one of my projects was making game engine for a top down point and click game.  I look on what I know compared to other people know and what I "should" know, and feel like a total NOOB.  Also, not having had a "job" as a developer, I think I must not be able to do anything. But it turns out I've done some pretty cool stuff when I stop focusing on where I want to be and looking only at "published" products.  I was pursuing completely different career then, so I just did fun stuff. I am not denying that on a lot of topics I am a NOOB, but just maybe I’m not as much of a programming NOOB as I think I am.

     That brings me to fall 2012, well I had taken a HTML/CSS class and another java programming class. But honestly 90% of what I know in programming, I taught myself by needing to learn it to do something fun.  The classes were just a great starting point.  That fall took an iOS mobile development class.  As I did in all my other programming classes, by week 4, I was two weeks ahead and accelerating faster than the class was proceeding.  I finished the topics the class covered by midterms.   Math Quizer was essential my final project for this course.  I refined it and made an Ads version the next summer.

     Christmas break of 2012 I spent making HexagonApp.  HexagonApp was built from the circle game.  The circle game was a java app that I built to teach my 2-year-old niece her shapes.  I have 10-12 shapes and she learned to drop them into the right boxes with a mouse.  Little kids using a mouse is adorable.  They can be better than some adults.  But instead of calling it the very reasonable circle game that I came up with she called it the hexagon game.  Hexagon was one of the shapes.  When I went to make my first iOS approach publish, I iterated on that idea and made HexagonApp.  The shining feature of the app is my 4-year-old niece who will tell you "Great", Fantastic" *giggle*, or "Try Again".  Also you can listen to her struggle through "parallelogram" (I had to use an audio editor, Audacity, to get the final version).   My sister created the art work for the app and I submitted it early January.  Late January it was approved, and I had officially published an app on Apple App Store.  I should mention I didn’t have mac to do development on.   I wrote up a business plan based on what I had learned in school and submitted it to my father.  He bought the computer and wrote it off as an expense for his side business.  So, my elopement until January 2017 was been done on a 2012 MacBook air base specs.  That summer I polished Math Quizer and learned to add in iAds, even if iAds has been canceled now.

     I often look between then and now and forget all the stuff I have done, simply because I haven't published it.  I did try to submit a tap to set off virtual firework app, but this was about the time the Apple App Store was starting to get some standards, so they rejected it.  I had another app that was getting closer to being production ready, but my artist got super busy as her work, a startup, took off. And I got busy getting a degree as I was pivoting in my academic career.  This confluence of factors killed it off, and by the time I got around to revive it, it was built on out of date ideas and technologies.

      I had to transfer colleges for my last year and to get my minor in information systems; I would need these 5 classes.  But with my major BioChem that was one too many.  I reduced it to 4, as I got my mobile app development class to substitute for advanced programming only because I showed the IS professor my app.  Sure, the class only covered 10% of what that published app did, but I obviously had advanced skills if was able to develop and publish an app... class substituted.

     That was a great year, I learned to make databases.  Something is sorely needed to learn. I was trying to do data basing with java objects for a custom language editor and dictionary.  SQL is way better, I look at that and one part of me wants to cringe at how clumsy it was, but another part of me is kind of impressed with how close I was coming to a database. Oh, don't get me wrong from an efficiency standpoint it was a colossal difference, but from a functional standpoint I was actually getting there.  Besides data basing the most important lessons I took from that year was on the development process.  We had a class where all 8 of us were given a Raspberry Pi and we had to make a product.  I should mention that the reason I didn't even attempt to major in IS was it was part of the business school. I kind of needed a degree in one year and BioChem was what my 180 credits dictated.  I worked on a low cast spectrophotometer. A device that measures what frequencies of light a sample absorbs.  I did market research, learned for the second time how to increase a business time, this time focused on the tech field with very specific project.  Presenting my business plan at the school’s competition.  Of course, I determined that my prototype couldn’t reach the quality to compete with the competition.  And while I used Java to build the app to run the hardware the important part of that was the business side of the equation.

      I entered a nanoscience program, the science behind making computer chips.  First day there we learn the college is divorcing the university.  Yeah, so apparently, that can happen.  So, my PhD program collapsing around me, I updated my apps to meet apples new UI standards.   I prototyped so many ideas in those next few months.  It taught me swift.  It’s a funny thing why certain projects won’t work.  My best idea was a app to learn mandarin by breaking it down and build up from the simplest characters and building up.   But well, I don’t know mandarin.  I was trying to learn and figured out I needed a speech therapist in mandarin.  I had needed a speech therapist to speak English, my native language. 

     I am now getting serious about making app development my career.  I am learning Unity.  There are other blog posts about that, but I can tell just how much better I am at development than when I started Xcode.  In one month, I am as comfortable in Unity as four months in Xcode. 

Congratulations If you read that. I thank you for your time in letting me get it all out there.