Trouble shooting reminders for me…

Trouble shooting

  • Did something actually break?
    • Is it perspective/perception thing instead of a solid problem?
    • Is it that you don’t have data/values or they aren’t being connected?
    • What does tail’ing the test/development log files show?
  • State changes
    • Does a reload / restart of server / using other device fix it
  • Where is the break at based on what is affected?
    • Can you output flags or sentences to help identify where firing?
  • Scope
    • How many things  affected?
    • How deeply or totally were things affected?
  • What was your last change?
    • What was your last commit to that branch?
  • Similarities / Shared in the systems / characteristics of  the affected systems / components
  • Can you comment stuff out until it works?
  • Does changing test coverage or stubbing work?
  • Does using the code in isolation work?

Tactics to achieve programming

Deliberate practice – of everything, this strategy is the most important – keep doing something regularly till it becomes routine or a pattern of living … the corny teachers talk about ABC’s, or “Always Be Programming”, trite but true.

  • In learning new languages, at first it’s memorization & rote reciting…
    • The noises your teacher demonstrates so you understand how to read the written language.
    • The nouns, verbs, prepositions you repetitively write or sound out.
    • Your teacher has you pronounce them until they are happy with how it sounds.
    • You practice in class with fellow students by speaking to each other
    • You get quizzed or graded on use

Some things you might have never thought about that schools do for you automatically:

  • Setting a schedule, like …
    • Meeting every day for 20 or 30 minutes
    • Meeting a couple times a week
    • Doing studies independently to prepare for class
    • Doing it enough that it stays in short term & longterm memory
  • Doing chunks of things in small batches, so no one thing gets lost
  • Having a goal
  • Having a defined set of steps
  • Having a defined set of check points to ensure the steps are getting you to the goal

Ways to go about that when not in school … these are effort based, not results based, as the amount achieved each day will vary with what you are doing & how far in to it you are (ie locating a rare bug versus reading the latest change log)

  • 20 minute rule – each day do something for programming even if it’s…
    • Thinking about a problem & jotting ideas down on a napkin
    • Listening to a podcast in the car
    • Planning what you will do for programming next week
    • Talking to someone on IM or phone
    • Watching a youtube video or a screencast
    • Read what changes will happen in the next patch
  • A calendar which you write how much time per session or day that you spent programming
  • A web blog which you can store snatches of what you were last working on so you can easily remember where you left off, what you intended & why you were working on it.
  • A web interface that allows you to work from anywhere with internet connections
    • wc3 java/html, fiddles, sandboxes which reset quickly online
    • cloud9 for web IDE developement or such
    • heroku, amazon aws, google servers or others for hosting files or services
  • Part of the 20 minute rule, if you’re working on something with no change in status & you’re not learning anything – change what you’re doing to learn more effectively for that specific type of thing – as not every type of problem is answered in the same type of source.
    • Always TRY to start with the quick start tutorials from the publisher of the language/framework as they often explain the process & what is intended the best
    • Independent tutorials are good walk through for overviews (check the date published of course) as the person doesn’t have an familiarity with the development of the language
    • Learn to books often provide a dense, but necessary process of learning from experts who are respected – there’s an open source trend for the same authors to publish the book electronically for free & you only pay for the book in hardcopy or donate if you want.
    • Cookbooks (like oreilly.com) are often free & good to see common solutions
    • Official or API documentation are good for the specific syntax when adding options after you understand the process
    • Change logs combined with the date of a tutorial are good for finding bugs which might explain why a tutorial isn’t working
    • If the language or tools in question are open source, github or bitbucket repositories often have well fleshed out issues lists – which hold wonderful information about things common to people just starting to use the code in question
    • Independent online schools can be very helpful – codeacademy has an excellent selection of languages for learning the syntax – just realize you need to take that knowledge & learn to program with it afterwards.
    • Daily quick code challenges like codewars etc are nice ways to keep the problem solving frame of mind along with realizing small holes in your knowledge base
    • Stackoverflow paired with the specific language / framework’s issues submissions list often have most pieces of a puzzle to help you locate at the very least – the verbs/nouns you need in order to search more, if not the solutions to many issues you are going to experience.
    • Slack has channels for chatting with people for all languages & often specialized groups you can join later – make sure to pay attention to their chat channel rules before posting