How to extract meaning from code in the blink of an eye

So I just discovered Stephen Young by reading how to become a better programmer.

Here’s my commentary after reading his article:

To understand code you have to build a mental model

I’d like to rephrase that: To understand code you have to build a collection of mental models. Use the best model for the task at hand.

A key strategy I use when conceptualizing and validating a collection of mental models is through the understanding and visualization of code paths. You could also call this control flow analysis, generalize it as code flow and test it using code coverage tools.

One way to bootstrap your understanding of code flow is to use your favorite IDE’s step debugging feature. Once you get the general idea you’ll start to visualize how code gets executed throughout your application from end-to-end.

Your mental model is built up of matches between general and specific knowledge.

Stephen gets it. To drive the point deeper, your mental models are built upon logical conclusions between:

  • General software intelligence
  • Language, frameworks and third party library features and expressions
  • Problem domain expertise derived from the industry

As you can imagine, this is requires a substantial time commitment. There’s no breezing over it, kinda following what’s going on, you either understand what’s going on or you’ll produce logical errors in your code. Learning PHP in 30 days will only get you so far. You need to reach mastery level in order to extract meaning from code in the blink of an eye.

Learn the rules of discourse, which are the conventions and coding styles used within a framework or language. Just like the dialogue rules in a conversation, they set expectations in the mind of the programmer.

Another analogy to this is simply learning how to communicate computationally.

Naturally this comes after reading and writing enough code. In other words: practice. Practice, practice practice. Once you feel comfortable writing and understanding code including code from others, you can start to step away from the keyboard and make use of fuzzy logic to jump to higher order computational thinking and communication.

By mastering all three points, you’ll reach sentient-like powers and extract meaning from code in the blink of an eye.

Next level: apply principles to machine learning.

This post is part of the thread: Stephen Young – an ongoing story on this site. View the thread timeline for more context on this post.

Writing beautiful code is not what makes your company or product successful.

Check it out: https://medium.com/@taylorhughes/how-i-learned-to-stop-panicking-and-love-the-hack-e29b45f8ea2f

Here’s a few of my takeaways after reading it:

“Writing beautiful code is not what makes your company or product successful.”

This is a very harsh reality for the code purist. Let that hit home.

The amazing engineers making all this possible were building things as fast as they possibly could with a small team. They didn’t have time to figure out a master plan and design all the perfect front-end architecture.

But they shipped, fast.

Take a look at your software delivery pipeline and ask yourself: “How fast can we ship a new feature or bug fix?”.

Sometimes you need to use a bit of straight-up dirty code to get the job done when something needs to get out the door.

Keyword: Sometimes

“…if cooking up a small hack is the best way to ship the feature faster — so be it. We’ll clean it up eventually.”

Combine this attitude with having a plan and process for cleaning up technical debt.

At the end of the day, what it comes down to is:

  • Shipping and delivering value to your customer as fast as possible.

How do you do that?

  1. Track how fast you can push to production.
  2. Don’t spend too much time getting an initial version up and running.
  3. Have a plan and process for managing and reducing technical debt.
  4. Go back to Step 1

This post is part of the thread: Taylor Hughes – an ongoing story on this site. View the thread timeline for more context on this post.

Hello World

From ’06 through ’08, I used to actively blog. Then life happened. A series of events took place, imposter syndrome crept in and due to negligence, I lost all of my data.

This was a tough ordeal to cope with. How do you start over after having lost everything? The time investment, so much passion and energy committed… and I have to do it all over again?

So many fears and worries paralyzed me from taking the first step. However looking back and reminiscing over the past 5 or so years of not blogging did leave a feeling of hope. I learned so much as a person, in my career, through my social network and the people I’ve met along the way that the challenge I’m facing now is more so the issue of organizing all my notes to publish versus not having anything to say.

It’s one thing to write down your ideas privately where you can refine your thoughts and opinions to perfection versus actually blogging about them and publishing it for the world to see.

Defying conventionsTM

Some time ago I was freelancing in Miami Beach along side Aris Olay of FASHIFY fame and Michael Chacon of SIC Digital where at one point, I did whatever I usually do and Aris shouted: “Defying conventions!”.

If there’s a will, there’s a way. Whatever your goal is, if you want it as bad as you want to breathe, then you’ll find a way #nodaysoff. Throughout my travels I’ve met countless individuals who  overcame their own personal challenges to reach their goals in life, business or otherwise that conventionally was out of reach. Defying conventions to me embodies that constant push forward and I live by that motto.

The first step is always the hardest. And now when I visit my site, instead of seeing a white screen of death, I’ll see an unfinished story that’ll require incremental updates over time. Cheers to all my friends and family for giving me the energy to push forward.

If you’re feeling adventurous, Subscribe to The Pirate List.

This post is part of the thread: Pirate Life – an ongoing story on this site. View the thread timeline for more context on this post.