(This is a quick off the cuff post do not take as gospel. I could probably improve or add more research/accuracy.)
- Levels of difficulty of a task/learning
- Learning falls into different buckets
- Prioritize what you want to learn and have backup plans/objectives.
- sleep (easiest)
- tutorial with working source code
- reading a book and not falling asleep (has structure)
- watching a video (structure usually harder to grasp)
- reach out for help at work on the assignment.
- completing an assignment at work. (you might change your approach as you go to make it easier)
- creating a personal project from scratch (hardest)
^ I find if I am struggling work on a personal project it is healthy for me to switch and read a book for a few hours and go back to the personal project the next day. (to mix it up)
(you may spend a lot of time and effort, re-learning language fundamentals and never make progress. Then feel huge growth when you learn in a different area/bucket)
- language fundamentals (loop, object, array ... etc.)
- frameworks, web framework (designed for a purpose teaches conventions and often has batteries included to do a thing!)
- libraries (code others wrote we can use)
- apis (often called api integration, the ability to make and interact with public facing or internal apis)
- databases
- sql
- nosql
- command line
- tooling
- git
- eslint
- code formatter
- ide
- vim
- programming paradigms, but also types of programming languages: random article: https://cs.lmu.edu/~ray/notes/paradigms
- I commonly think: of these types of programing language types:
- declarative
- imperative
- functional
- object oriented
- procedural
- ^ but I admit this probably needs to be revisited.
- glue language vs complex languages.
- other quick links on the subject:
- I commonly think: of these types of programing language types:
aka. "how to get value out of a meetup or learning with others or a self learning session?"
think eisenhower matrix, but for work and then side projects and then show and tell.
My current order of priority when deciding what to work on first second and third, if not getting value in one I switch to the next item down the list:
- Work related learning needed to complete an assignment. (Work, for the boss)
- Work related items that bother you that you want to research and solve when you get a chance.
- Stuff outside of work that you want to work on, see Learning falls into different buckets
- Take a moment to see if you can teach sonmeone else and help them on their journey with your knowledge, this can be great for reinforcing your learnings and seeing what you mistakenly think you learned correctly.
- Bring a cool "thing" project to show.
- document Goals and their characteristics.
If you are working on self improvement. Or trying to have a conversation with others and see what areas you want to work on for growth. We default to our current highest priority. And since we are actively working on it we usually are in a state where we do not need help. A good practice is to run through this list to see if there are any other learnings you can glean aside from your current top priority.
- sleep (easiest)
- tutorial with working source code
- reading a book and not falling asleep (has structure)
- academic-assignment (easy/normal) (has structure, previously solved by others)
- completing a standard college class (has structure, has a knowledge track, finite length)
- watching a video (structure usually harder to grasp)
- completing an assignment at work. (has planning but potentially no known solution at start)
- creating a personal project from scratch (hardest, has no planning and no solution at start)
- tutorial with failing source code ... it does not work at the end and you need to fix alongside bad context/assumptions.
- academic-assignment (hard) (very few people have been known to solve and no access to solution)
- academic-assignment (impossible) (no known solution)
^ some problems are unsolvable and require a human to give up.
^ or write a proof on why it is not solvable.
update with 5 different ways to apply for a job