Outcome-Focused Coding

I read a great post from Poornima entitled: Should I learn to code if I want to be a tech entrepreneur? I certainly agree that tech entrepreneurs should learn to code — or learn as much as possible so they can understand the difference between constraints and limits. Poornima and I exchanged a couple tweets and she asked me if I wanted to add anything.

People learn in many different ways. Some folks learn best in the classroom while others prefer to be self-taught. I recently saw Hidden Figures. I decided to become an engineer because of NASA. I was so damn proud to see a black woman that became a manager at NASA way-back-when after stealing a book from the “Whites-Only” section of the library to teach herself Fortran.

When I had an idea for an app — I wondered whether I should learn to code. I decided to teach myself to learn while I searched near and far for developers. I was fortunate enough to have attended an engineering magnet school for high school and I studied engineering in undergrad and grad school. I also had the good fortune of a mother who was computer-loving librarian. I’d get excited about weekend trips to mom and pop computer shops. I learned how to break a PC down and put it put back together. I was exposed to mathematics and principles of computer science at my public magnet school. I took HTML and C++ in college — a requirement for engineering.

I also did a bit of mathematical modeling while working closely with a software development team on my first job after grad school. Yet, when I had my first idea for a budgeting app for my first company — Spendology (now SpendCast ®) — I literally didn’t know where to start. So I started using a tools from logic and operations research — induction, deduction, and backwards recursion (useful for solving dynamic optimization problems).

I used websites like w3schools.com to sequentially learn the basics of HTML, CSS, and JavaScript. In my search for developers, I received quote after quote from software firms that outsourced development to Ukraine or India while asking clients to also be project managers (Cue Office Space Meme).

Office Space…one of my faves.

Ultimately, I figured that I wanted an app that could do X (quickly create a personal monthly budget estimate). I had learned the basics. The most important parts of programming are actually developing the algorithms and psuedo-code. Basic understanding of technology helps, and also the first few steps of the software development life-cycle. I’d decompose X — or create a work breakdown structure. X = A + B + C + D. Let’s say D requires server side scripting. What is server side scripting? Google search, Stackoverflow, php.net….okay. So I need to know PHP and MySQL to make “D” happen.

Know thyself. Understand how you create the best environment for you to learn. Learn to code or seek to foster as deep of an understanding of technology as needed. Learning can cost money but it mostly costs you time and effort. However, the benefits of knowing and being able to do are invaluable.