bookmarks/PRINCIPLES.md

164 lines
10 KiB
Markdown
Raw Normal View History

* Shared problems are solved faster
* Transparency forces authenticity and honesty
* Participative communities are more open to change
* Open standards provide business agility
* With more eyes, all typos are shallow
* [Jon Prall](http://jprall.typepad.com/blog/2010/10/85-operational-rules.html) - (2007) 85 Operations Rules to Live By
2017-06-05 14:47:21 +00:00
* Make decisions using the path of least regret
2017-06-12 15:36:59 +00:00
* The simplest explanation is always the most likely.
* [Christopher Diggins](http://www.artima.com/weblogs/viewpost.jsp?thread=331531) - The Principles of Good Programming
* You are the books you read, the films you watch, the music you listen to, the people you spend time with, the conversations you engage in. Choose wisely what you feed your mind.
* [Lars Kappert](https://webpro.github.io/programming-principles/) - Categorized Overview of Programming Principles
* [Lucas Medeiros Reis](https://dev.to/iamlucasmreis/the-single-most-important-driver-of-software-quality) - The Single Most Important Driver Of Software Quality
* don't change code you don't understand
* never merge a branch with known defects
* use checklists to make sure the whole problem is solved
* static analysis tools for everything
* code review for everything
* test (automated and manual)
* make small changes and iterate
* [Ozan Onay](https://blog.bradfieldcs.com/you-are-not-google-84912cf44afb) - You Are Not Google
* Dont even start considering solutions until you **Understand** the problem. Your goal should be to “solve” the problem mostly within the problem domain, not the solution domain.
* **eNumerate** multiple candidate solutions. Dont just start prodding at your favorite!
* Consider a candidate solution, then read the **Paper** if there is one.
* Determine the **Historical context** in which the candidate solution was designed or developed.
* Weigh **Advantages** against disadvantages. Determine what was de-prioritized to achieve what was prioritized.
* **Think!** Soberly and humbly ponder how well this solution fits your problem. What fact would need to be different for you to change your mind? For instance, how much smaller would the data need to be before youd elect not to use Hadoop?
* [Viktor Farcic](cd/viktor_farcic_on_continuous_delivery.md) - Jenkins World 2017: The Ten Commandments Of Continuous Delivery
2017-09-20 22:38:46 +00:00
* do pull requests
* prioritize
* finish what you're doing, focus on a small number of tasks in parallel.
2017-09-28 08:49:11 +00:00
* delegate some work to others if you already have lot of work to achieve, so you have more time to work on what matters for you
2017-09-29 17:02:24 +00:00
* [O'reilly](http://programmer.97things.oreilly.com/wiki/index.php/Contributions_Appearing_in_the_Book) - contributions appearing in book 97 Things Every Programmer Should Know
* [Daniel Miessler](https://danielmiessler.com/projects/concepts/) - Lot of concepts summarized by Daniel Miessler
2017-10-10 06:56:29 +00:00
* [Kent Beck](https://twitter.com/KentBeck/statuses/499584833929367552) - If you break a problem into sub-problems and the sub-problems aren't simpler than the original problem, git reset --hard and try again
2017-10-10 11:23:38 +00:00
* [Stuart Sierra](https://twitter.com/stuartsierra/statuses/512009723282206722) - There's always a reason, no matter how strange the bug
2017-10-10 11:25:31 +00:00
* [Johannes Seitz](https://twitter.com/Ookami86/statuses/515483645663252480) - Software Engineering best practice: Actually understand what youre doing. Unfortunately its rarely used in practice.
2017-10-10 11:26:26 +00:00
* [Stuart Sierra](https://twitter.com/stuartsierra/statuses/516967544167489536) - "Bugs are dependency-transitive"
* [Stuart Halloway](https://twitter.com/stuarthalloway/statuses/502906568569286657) - the #1 source of software defects is easy presumtion. Presume nothing.
2017-10-10 12:01:24 +00:00
* "The Principle of Least Astonishment: Make a user interface as consistent and as predictable as possible"
* "Worried that TDD will slow down your programmers? Don't. They probably need slowing down." [J. B. Rainsberger](https://twitter.com/jbrains/statuses/167297606698008576)
2017-10-10 13:56:10 +00:00
* encourage others when they need it. [relevant reference](https://imgur.com/gallery/ihRohVQ)
2017-10-10 18:34:54 +00:00
* [Tim Lister](https://twitter.com/abt_programming/statuses/538015028574945280) - If you don't get innate pleasure from writing code, it's time to move on
* [Raphaël Yharrassarry](https://twitter.com/QuentinG/status/532974296269062144/photo/1) - Il faut s'attaquer aux comportements et non aux idées
2017-10-14 12:07:01 +00:00
* [Natanael Copa](https://www.youtube.com/watch?v=5FHYdwQlAMs) - don't install / start things unless explicitly asked for or needed (to improve security)
* [Paul Graham](https://twitter.com/ValaAfshar/statuses/538015468146393088) - Don't let other people tell you the problems you're working on don't matter. People are frequently mistaken about this.
* [Meir Lehman](https://twitter.com/CodeWisdom/status/921139649661284352) - An evolving system increases its complexity unless work is done to reduce it.
2017-10-08 20:47:21 +00:00
# from my twitter
2017-10-08 20:50:17 +00:00
* [MorganGeek](https://twitter.com/MorganGeek/statuses/420907517934178304) - Problem solving / Productivity : Good programmers write code after they found the solution. Un bon programmeur ne commence à coder qu'après avoir trouvé une solution.
* [MorganGeek](https://twitter.com/MorganGeek/statuses/450614047608934400) - Productivity : To find a solution, first eliminate the impossible ones. Astuce : Trouver la solution en éliminant d'abord les non solutions.
* [MorganGeek](https://twitter.com/MorganGeek/statuses/450218285129531392) - Readability / Reusability : If you wan write a 100 lines function, you can also replace it with a dozen more legible functions
# from my Bullet Journal
## Values
* Learn the basics of a language before learning frameworks
* DRY (Don't Repeat Yourself) is not about code, but about knowledge
* Refactoring is a development technique, not a project
* Break rules, take risks.
* True leaders want everybody to be great.
* True leaders don't respect discipline.
* Build and grown trust otherwise it can't work
* Best way to convince is by giving an example / by showing it exists
* Everything we do expresses a need
* We often eat only what we already like / know
* We all criticize, we need to be aware of it
* Violence is an answer to unsatisfied needs
* Take pleasure in simple things
* Ban negative thoughts
* Take the time you need, don't go too fast
* Take risks
* Ask for help when struggling
* Don't do to others what you don't want done to you
* Write down your ideas and your Aha moments
* Share your feelings, don't hide your humanity
* Don't let other people decide your future for you
* Give your word.
* Say no rather than "I don't know" or "whatever you wish"
* Doing / saying nothing is already telling something
* Let go of control / release the need to control
* The faster you do a task the more you learn and the sooner you become satisfied
* The slower you do a task the more painful it will be
* Say thanks
* Smile
* Give, share
* Take time for you, for important things and people
2017-06-03 21:27:25 +00:00
* Keep in touch, maintain friendship
* Market yourself. You're putting on the effort, make sure you show it
* Go right to the point
* Ask why
* Keep your ability to be amazed by things and people, they won't last forever
* Act to fight perfectionism
* Take advantage of any opportunities that present themselves
* Physical and visual contact rather than emails, sms, chat
* Accept people as they are
* Select your friends
* More slow, minder stress
* Remain calm and quiet about everything which you will experience
* Reinvent yourself, evolve
* Grow and progress in love, work, leisure
* Be yourself, know yourself
* Be curious, observe and play (mentally, physically) with what surrounds you
* Be positive
* Be realistic, concrete
* Understand your goals and others' goals
* Taking notes, writing things down is a way to free your mind and not forget or lose anything. It's also a way to train your senses of observation and reflection
* Observe without judging, relate facts
2017-06-14 19:55:23 +00:00
* Choose the right tool for the job
* Don't multitask
* Achieve what you're doing before you move to something else
* Life doesn't get easier you just get stronger
* living isn't fucking easy but at least you can make your life more fun
2017-06-14 20:01:03 +00:00
* when you pause what you're doing, you find more interesting ways to do it. So pause often
2017-07-06 19:53:47 +00:00
* Be you ! the world will adjust
## Art of Questions
* Just ask
* Explain your misunderstanding
* Explain / state what you know / don't know
* Sound confident
* Have a come back
* Know first which answer type you're expecting : Opinion ? Factually correct answer ? Well reasoned judgment ?
* Avoid "yes" or "no" questions
* Dig deeper (5 Why...)
* Use the power of silence
* Don't interrupt
* Prepare the topic (know a bit what you are talking about)
* Check your assumptions (are you sure about what you think you know ?)
* Find the right person to ask
* Use correct grammar
* Keep the question simple
* Differenciate between open (Why ?) vs closed (when ? who ?) question types
* Explain why you are asking
## Art of Communication
* Never use "never", always avoid "always"
* Suggest, don't criticize
* Don't make important decisions alone
* Don't cut communication, don't go away, don't flee
* Share your needs, your wills, your tastes / opinions
* Mutually listen to each other. Know how to listen. Use your right ear for listening (right ear = left brain)
* Feedback is important : Show interest (nod, smile, ...)
* Talk about the connection you have with the other person
* When you communicate a hard decision, don't hide behind emails, talk directly to your audience
* Use the [SBI tool](https://www.mindtools.com/pages/article/situation-behavior-impact-feedback.htm) (Situation - Behavior - Impact)
* Assertiveness is ability to say yes to the person, no to the task
* Respond rather than react
* Prepare, verify carefully what you will communicate
* Check if your message has been heard and understood
* Expect / Give feedback
* Know the 7 C's : Clear Concise Concrete Correct Coherent Complete Courteous
* Set the main idea first
* Focus on your audience
* Avoid passive constructions
* Be open minded, don't think you know eveything about your audience
* Use the body language (physical and visual contact, ...)
* Stay calm : Wrap up then stop talking. Pause. Repeat. Ask clarification of a statement. Be clear.
* Look for humor.
* Look for compromise if the other cares about something not important for you
* Agree to disagree : take beak so everyone calms down
* Assert yourself : express (negative) opinions and needs positively. Ask for help. Learn from errors. Accept feedback. Say no
* Observe rather than interpret. Communicate facts not interpretations
* Understand people's needs/feelings
* Use non violent communication