October 4, 2020 Opinion, RandomThoughts No comments
October 4, 2020 Opinion, RandomThoughts No comments
This is not a “how to” on running a book club. In fact I know next to nothing about book clubs and to run my first meet I googled what it takes to run such a thing. All of my previous stereotypes of book clubs were of bunch of super-boring people sitting in a circle and silently sipping tea (not coffee). After reading few articles I realized that I still know nothing about book clubs as apparently they could be run in myriad of different ways.
If you follow my blog you would notice that book reviews are one of very common blog posts here (55 of them), probably as common as technical blog posts and posts on success for software engineers. So no wonder I’m interested in reading and discussing books. One other aspect I’ve always been keen on is knowledge sharing. I used to share my knowledge via tech talks based on books and discussions called “design sessions”. It is not that I didn’t want to discuss books directly, but issue was that my audience in majority of cases didn’t read the book and still was interested in a given topic.
Last week I found myself in a situation when probably half of my team has already read or is reading one particular book. With a hint from my colleague, I kicked-off a book club. First meeting turned out to be a really great, fast paced discussion with a lots of engagement. I wasn’t the most active participant and this is awesome. Took notes and spoke only few times.
We went through highlights people remembered from the first chapter and then tried to analyze those, thought of practical applications, shared our related past experiences, and just had a good discussion. I would even call this to be some kind of a team building event – all virtual (in case you are reading this in future and COVID-19 is a thing of the past).
Once in 2012 I tried to organize “Code & Beer” and miserably failed with two people showing up. Arguably I just didn’t make it very clear I bought the beer for everyone :) This time people joined with no snacks but with tons of interest. So, how to run a book club? Who knows… Maybe make sure you have a “critical mass” of people interested in same book.
September 20, 2020 Book Reviews No comments
Although the book “Clean Architecture” is written by famous voice in software engineering, Robert C. Martin, and indeed has a lot of great advice it certainly did not meet my expectations. In my opinion the book is very outdated, is very focused on old ways of building software, namely monolithic and 3-layer applications for commercial enterprises. Yes there are touches on embedded software as well as on SOA and micro-services, but they seem to have been added as an afterthought. At the very least I didn’t get the feeling author had any first-hand experience with resent trends.
There were few instances were I had to stop and think for myself that I completely disagree with the author. For instance, in “The Decoupling Fallacy” chapter the author argues that services are anyway coupled because they use same data passed around and modifying interface of data requires changes in many places. Well it depends on how you design your services and example given in book looked very artificial – not something that you would see in real world implementations. Luckily it is also the point that we can redesign services to reduce this kind of coupling.
For another instance, there was an advice on introducing dedicated testing API that can bypass security and other complications to streamline testing. This seemed very odd and potentially dangerous. It might help in some places, but I would imagine this is just making things worse in the long run. Anyway my opinion.
Don’t get me wrong the book is good as a food for thought and some chapters are really great, but I don’t think it will help you design clean architecture.
The book starts with programming paradigms, such as structured programming, object-oriented, and functional. Not sure if this fits the overall topic of the book, but the overview of these paradigms is nice and gradually takes the reader to further topics.
After these there are chapters on SOLID design principles, which I think are great. This is probably the best part of the book. I even think SOLID could have been super-short standalone book. I really appreciate the way author consolidated these principles and described in details. In many ways people can attribute these principles to him, but don’t make this mistake – they existed before and different people described them in different ways, though it is still author’s public speaking and consolidation that made them stick in heads of so many software engineers. In fact I’ve probably given tech talk on them twice in my career. In case you don’t remember SOLID stands for 5 principles: Single responsibility, Open–closed, Liskov substitution, Interface segregation, Dependency inversion.
Later author introduces the concept of components, which he defines as smallest deployable pieces of software. We can apply the same SOLID principles from code level to component level. This is where the author introduces many new definitions, which I do not think got stuck in software engineer heads. At least they didn’t get stuck in my head and I don’t remember others ever talking about them. These are things like: reuse/release equivalence principle, common closure principle, common reuse principle, etc.
After this we go one level higher where we look at boundaries between components and how we build good architecture. This is where I started taking more detailed notes. Below are some raw notes almost “as-is” when I was taking them.
Boundaries: Drawing Lines
Boundary Anatomy
Policy and Level
Business Rules
Screaming Architecture
The clean architecture
Presenters and humble objects
Partial Boundaries
Layers and boundaries
The Main Component
Services: Great and Small
The Test Boundary
Clean Embedded Architecture
The Database is a detail
The Web is a detail
Frameworks are details
Case-study: video Sales
It is an ok book but somehow I don’t think I can recommend it. It won’t be waste of time, of course, but you might feel like you didn’t get much out of it – the way I feel. The nuggets that do exist in the book, like chapters on SOLID is something you can read online or even watch numerous videos with Robert C. Martin online where he talks about them.
September 13, 2020 GoLang, Languages No comments
I’m a Software Engineer with some years of experience in C#, Java, JavaScript and tiny bit of other languages. For fun (I don’t yet need this at work) I spent one day going through GoLang tutorials, this video, and skimming through “The Go Programming Language” book. This blog post is a collection of things in Go that I found to be interesting and worth mentioning. In NO way this can be considered a tutorial or reliable source of information on the language. The best and most comprehensive place to learn about the language is here.
So there you go, golang in 20+ bullet-points:
complex
type is a first class citizen type in golang much like int
and string
.b := a
, if you want to reference same array you can do b := &a
...
like in some other languages and/or frameworkssomeMap := map[int]string{1: "one", 2: "two"}
and then you get retrieve from it with indication if key exists getOne, ok := someMap[1]
break
out of a parent loop from within nested loop by applying labels to loops.struct
and composition via process called embeddingpanic
. Panic can be controlled by recover()
function. Probably easiest way to think about this are throw
and catch
with a caveat that error thrown is not exactly same idiomatically as in other languages.unsafe
. go getMeADrink()
I hope this was useful to some of you. For me personally this day gave me some idea what the language is about and the syntax no longer looks alien. Next thing to do would probably be to spend one more day playing with goroutines/channels specifically and actually reading the book for more fun.
Till next time!
August 24, 2020 Career, Personal, Success 4 comments
Disclaimer: opinions in this post are my own and do not represent opinions of my current employer or any of my past employers or any of my or their clients.
Time for some big news: as of 24th of August I’m a Googler or rather a Noogler, as newly joined employees are being called.
It has been almost a month since I left Amazon. Here is a “mandatory” badge photo. Amazon was a place of rapid learning on multiple fronts, not just from engineering perspective but from many other. I learned Java or at least enough so that I can write code in it (not that is is much different from C#, which I knew before) and I learned how scalable and resilient solutions are built. But other than that and most of what I learned wasn’t programming related but more of understanding on how truly data-driven, customer-oriented (or let’s say “customer obsessed”) company is run. Seeing this machinery crunching from inside was absolutely astonishing. Probably what’s the most prominent about working for Amazon is its strong prevalent culture embodied in 14 Leadership Principles. Each and every aspect of work is guided by those principles. It starts with your interview to be an Amazonian. It takes you through working days, your promotion, decision making and anything you could think of. People live by these principles.
During 2.5 years I worked on retail project to launch and scale a fulfillment channel in one of the rapidly growing markets. The time allowed me to meet and work with amazing and smart people. The team I was on was awesome and my manager was a boss you can only dream about. I liked the vibe of Vancouver’s office, maybe because it was much more multi-cultural and diverse compared to Seattle (though I might be mistaken). I was promoted at Amazon to SDE3. The project I was on was and probably is gaining more and more of momentum.
Some of you would be curious why I left Amazon if things were going so well. (Just look at AMZN stock price for one data-point). As every job there are negative aspects. Amazon is somewhat notorious for those, but I didn’t leave Amazon to leave Amazon. I am not excluding joining Amazon again some years from now. Current decision is more to learn about another big company, its culture and processes, especially when we are talking about Google.
I don’t know what exactly to expect from this change. Many software engineers see Google as the most desirable employer to join. The company is famous for its high engineering standards, googley culture and so many other things. I’m excited to the core to embrace what is coming at me.
Among 24 checkboxes in my 2020 plan working for Google will tick few of them. This includes double-tick on meaningful work-related change, learning a new programming language (will be coding in Go and Python), and unexpectedly might change my coffee and sleeping habits (if I succeed in regularly getting up before 6AM and not having coffee :) ).
April 19, 2020 Blog No comments
Recently a person on LinkedIn asked me this: “What made you get into blogging?“
This is not the first time I get this question. In most situations this would come from a coworker who saw my blog for the first time or it would come from someone on internet seeking advice.
I wrote my first blog post in October 2009. In the post I am talking about career aspirations, being pragmatic (though I probably meant ambitions) and about the intent of the blog to post technical findings in order to help people online. English is unbearable, but the post is ending with “I hope this will help you and me!” And it helped.
So far I have 317 posts and some 717 comments. I’ve got many “Thank you” comments for the things people were able to find on the blog helping them solve their problems. Some people know me because of this blog. Some have greater trust in me because of this blog, some are inspired by this little work of mine. Most of all, it always helped me get more contacts, including those by recruiters. I won’t have numbers, because people don’t always say “hey, I contacted you because I saw your blog and thought you can be a good fit for our team”, though this happens at times as well. Long story short, the blog was and is extremely beneficial to me.
So what made me write here in the first place? I think there were few factors. Blogging was very popular back in 2009 and many others were also writing. If you remember those times, everyone had Google Reader and was starting their day with going through recent posts. Though, the main factor that made me write was probably inspiration by Derik Whittaker with whom I had a chance to work. He was Microsoft MVP at that time (probably now as well) and was having huge influence over development teams he was dealing with.
I think inspiration and mentorship are things that help people who are just starting in their careers. Therefore I would encourage anyone who is reading this to start writing. It doesn’t have to be a public blog (though I would recommend). It can be internal company blog, it can be answers on SO, it can be great documentation at work, it can be a book you always wanted to start writing, it can be scientific publication. Really anything that you feel you are close to and where you feel comfortable starting. There are numerous benefits of writing, like building your brand, improving communication skills, organizing thoughts, learning through teaching. Let me bring one quote from a book I read not too long ago:
The act of writing is a good example of metacognition because when we think about composing sentences and paragraphs, we’re often asking ourselves crucial metacognitive questions: Who will be reading this? Will they understand me? What things do I need to explain? This is why writing is often such an effective way to organize one’s thoughts. It forces us to evaluate our arguments and think about ideas.
Learn better by Ulrich Boser
So that was the answer to the question on why I started blogging and what are some of the benefits of doing so. Here is a more important follow-up question to ask: “What made me stick to blogging?” And answer is – you! All the people who read this blog or who have read it in the past, those who comment, those who ask questions, those with whom I work or worked in the past. If not for these little inspirations from each one of you this blog would not exist for all these 11 years. Thank you!
April 4, 2020 Career, Success 14 comments
Disclaimer: opinions in this post are my own and do not represent opinions of my current employer or any of my past employers or any of my or their clients.
Señor Engineer
I just had to put this picture for few friends of mine ;)
Recently I got promoted to Senior Software Engineer position at Amazon. This post starts with my career story leading to the place where I am now and finishing with thoughts on titles, their meaning, and further thoughts on professional growth for software engineers. Bear with me, this is a long post with no conclusion.
My first job was with a Ukrainian outsourcing company, Softserve Inc. I started there in April 2008 and left the company in December 2011 to pursue new experiences in Western Europe. During those 3.5 years I got promoted twice. When exiting the company I was titled “Senior Software Developer” leading a team of 8 developers. Most of us were young software engineers just some years out of college, we were in a different kind of business than all of my next jobs (outsourcing vs. product).
My first job is still an inspiration on how I should be approaching my career. Being career driven, ambitious, and overly eager to learn non-stop were the main characteristics of me back then. I was brave enough to speak at user group events, and teach others. I’ve just read old post on leaving my first job and it inspires me. My English is horrible, but the meaning is everything:
I joined my second company in Austria as a Software Engineer (intermediate level) and was extremely happy with the quality of software we were producing and everyone’s skills. This was the first time I started learning about distributed systems and just loved working there. I hammered the keyboard non-stop and was happy. As it always is, every story has its end. I left my second company banally to earn more money. Sad but true. They tried to keep me by offering some XX% salary increase, and… drumbeat… a “Senior Software Engineer” title. I rejected. I don’t know if that was the right move, but that clearly was time when I chose money over title or even over happiness at work. Below is a blog post about leaving second job and reasons why I chose money, if you are interested:
I spent only 1.5 years with second company after which I had long 4.5 years with United Nations (well, the IAEA, which is international organization associated to UN). I started as a contractor Software Engineer – my title didn’t really matter as at first I was self-employed, I could probably have called myself “God Of Software Engineering” at “Greatest Software Company In The World” and it would not matter as for the IAEA I was just a contractor and they made me go through airport-like security each and every day for few years. In the end they hired me as a Staff Member with a cryptic title “Systems Analyst / Programmer” putting me in charge of a team of contractors :). This was another bump in my income as suddenly I didn’t have to pay taxes (yes, let me repeat it – I legally did not have to pay any taxes at all).
The place is definitely unlike any other workplace. There were over 100 different nationals working in the same building with me. I worked directly with people from Iraq, Zimbabwe, Azerbaijan, UK, Australia, Canada, China, India, and so many other countries it was virtually impossible to know who is from where. There was so much learning about different cultures. This alone was awesome. There were tons of other benefits related to working at that place. Not everything was great. For instance, I had to come to work in a suite – yes, software engineer in a suite. More seriously I was looking for more growth. Even if I managed to get promoted that would not make any major difference. Maybe, I would just start wearing a tie in addition to suite. Unfortunately, I don’t have a blog post about leaving that place, even though I have so much to share. All I have is this picture of me getting out of a nuclear reactor and tweet:
There was a t-shirt swap. Thank you, IAEA friends, for the great years. I am officially Amazonian now. pic.twitter.com/KADEUuk6iW
— Andriy Buday (@andriybuday) January 26, 2018
Up until 2018 I was mostly .NET engineer with desktop, distributed, mobile and web skills. Starting to work for Amazon meant dropping good portion of that knowledge and learning Java and many things from the “dark side” (oh, sorry, that’s the other way around). I’ve joined Amazon as SDE2 and I didn’t mind joining on an intermediate title as I knew that working for one of FAANG sets me on a totally different growth path that brings challenges of a different magnitude. I cannot talk too much about work at Amazon other than what’s public. But it is not a secret that one line of code change could mean MM$ of loss or MM$ of revenue here just because of enormous scale. This is why Amazon always tries to raise the engineering bar. Amazon is a place of insane growth. Love it.
So where am I going with all of this? If you followed me so far, you would notice I always skipped titles either for new experience, more money, or growth opportunities.
So do titles matter? I think it depends on how you look at them. You can be “CTO” at company of 10 people making 100K a year, or be a fresh grad Junior Engineer at top company in bay area and make twice as much. But “CTO” might have a chance to grow her company to giant and make millions because she is in a different growth position. It is not only about titles but what they really mean, what level of responsibility they bring, what is the pay band, what impact, knowledge, and skills are expected. Most often companies define levels boiling down to some kind of seniority and scope of responsibilities and then would define different titles having technical track, management track and maybe few more.
Long story short, I think titles do matter but they matter in a context.
When I look at titles of people whom I knew from my first job I get humbled – some of them got promoted 6 times to the likes of “Vice President of Something” or “Senior Solutions Architect” or even something more pompous. Not all of them, though, some of them who were less ambitious or had different goals took different paths. This makes me wondering where I would have ended up had I stayed. I will never know, but should I even care? Should you care about your past decisions and think too much? We should not! Regret is a painful emotional state to avoid. We need to always try to minimize potential regret.
Everyone of us has a different path in life and in our careers and that is just the way it is. We care about ourselves, our families and people we know and relate to. So for the most part you don’t care about me or my title the same way as I don’t care about your title or other engineers’ titles. That having said, you might be interested in this post as you might be wondering how you can get to your next level or what you can learn. Human nature is not to be happy with what they have and I am ok with this. This is normal.
Here are original bullet points from me:
This is a difficult question. If I take philosophical approach I would say that a lot is due to luck – we just pop up like little candles in different parts of the world and then we fade away, you might have been unlucky to be born in poorest country in the world or your parents might have started preparing you for Stanford in elementary school. You might have worked on a project that suddenly started making millions of dollars growing and riding everyone’s careers with it or you might have worked on failed project and got laid off.
Another cold-blooded view is absolutely deterministic. You are worth exactly what you are worth, meaning that if you somehow think you deserve higher level this is simply wrong as you were not able to determine what it takes to get that what you want and therefore you don’t deserve it. Big companies have data-driven approach to promotions. If you have the data for the next level you will undeniably get it.
My overnight promotion was years in making.
This was just a story. You can make your own conclusions. I’m just encouraging you not to give up. Feel free to leave me a congratulatory or any other kind of comment.
Among other things, this promotion completes one of the important parts of my 2020 new year resolution. I’m now 12.5% done and more is to come.
February 17, 2020 Opinion 2 comments
If you want people to like you, ask them for advice instead of giving one.
Recently I was approached to give advice on learning and improving tech skills by someone not on my team. I agreed, though this was somewhat unexpected that someone would ask me this, like if I were any authority on the topic. “I know shit, why would you ask me anything?” where my initial thoughts. Whatever was the reason we spoke about different approaches to self-improving and especially techniques to deepen one’s technical knowledge.
The things that came from the top of my mind were these, and in this post I will give few thoughts on them:
Learning Pyramid is one one the learning models which stacks learning activities based on the retention rate of knowledge. Here is a table from wikipedia:
Retention rate | Learning activity before test of knowledge |
---|---|
90% | Teach someone else/use immediately. |
75% | Practice what one learned. |
50% | Engaged in a group discussion. |
30% | Watch a demonstration. |
20% | Watch audiovisual. |
10% | Reading. |
5% | Listening to a lecture. |
Source wiki: Learning pyramid
Effectively what it says is that using knowledge, practicing and teaching others is magnitude more effective than reading. When I think about this it seems somewhat paradoxical as often to teach someone or to practice you would actually need to read. The difference I could derive here is probably the timing of when the application of knowledge happens, i.e. if you read a short chapter on something and immediately try to use the knowledge vs. reading 20 chapters and then trying to do something about it.
The below is a technique of learning by Richard Feynman on the same lines. If you don’t know, Feynman was one of bright figures in science world. If you haven’t read “Surely You’re Joking, Mr. Feynman!” I would strongly recommend it.
The FEYNMAN technique of learning:
— Richard Feynman (@ProfFeynman) January 9, 2020
STEP 1 – Pick and study a topic
STEP 2 – Explain the topic to someone, like a child, who is unfamiliar with the topic
STEP 3 – Identify any gaps in your understanding
STEP 4 – Review and Simplify!
When I spoke with my colleague, I mentioned that brain processes of information retrieval are different from the processes of information storage. You make it one way road if you only read without practicing. This brings us to the next topic:
Not all practice is equal. After years in software I tend to do things the way I’m used to, despite knowing there might be better ways. This is not right as it is always a good idea to step back, see what you can do better, learn it, repeat few times to make it a habit and so on.
While regular practice might include mindless repetitions, deliberate practice requires focused attention and is conducted with the specific goal of improving performance.
by James Clear, from here: https://jamesclear.com/beginners-guide-deliberate-practice
I think looking at your own knowledge gaps, and spending time to explicitly work on those areas is probably the best you can do to improve. Sometimes you would need help to help you understand what the gaps are and what you can work on to improve. Unfortunately, just repeatedly doing what you already know might not help.
There are four different kinds of activities that I do at work to help others learn and to learn myself. Unfortunately I’m not sure if I can expand on what they are exactly, but in essence they are about sharing knowledge, encouraging others to share knowledge, discussions around concrete technical topics, and hypothetical problem solving. I encouraged the colleague of mine to do something similar in his team, starting with a small group of interested people and then extending if this goes well.
If you are reading this post and are interested in expanding your technical knowledge it might be a good advice for you – start some learning activity with the group of interested people (teammates, local nerds, etc). The activity could be anything that interests you in particular. This may sound selfish, but you will be the main beneficiary of such activity.
Let’s finish with the Dunning-Kruger effect – you know that plot of perceived knowledge versus actual knowledge over time. Here it is, in case you don’t remember:
I’m definitely post “mount stupid” but I have no smallest idea where exactly – maybe still sliding down, who knows. There was time, maybe first 2-4 years into my career when I had enough confidence to give talks, write 100s of blog posts and write an e-book. Now I feel like I don’t know anything. Though, in retrospect, this should not be the reason not to do things. Doing is learning. This is also the reason I started writing more on the blog. So again, if you are still with me, doing things is always better than not doing them (kind of self-evident, I know). Reading is not enough (another sin of mine), applying knowledge is what makes you move forward!
Share in comments how you are working on your learning.
This blog post is a coding and system design interview cookbook/cheatsheet compiled by me with code pieces written by me as well. There is no particular structure nor do I pretend this to be a comprehensive guide. Also there are no explanations as the purpose is just to list important things. Moreover, this blog post is work-in-progress as I’m planning to add more things to it.
As always, opinions are mine.
Just replace the queue in BFS with stack and you are done:
Generally a recursive algorithm attempting candidates and either accepting them or rejecting (“backtracking”) based on some condition. Below is an example of permutations generation using backtracking:
Technique to determine result using previous results. You should be able to reason about your solution recursively and be able to deduce dp[i] using dp[i-1]. Generally you would have something like this:
When you need to figure out if something belongs to the same set you can use the following:
Below are recursive and iterative versions of inorder traversal
Simplest way to remember Djikstra is to imagine it as BFS over PriorityQueue instead of normal Queue, where values in queue are best distances to nodes pending processing.
Hopefully no one asks you this one. It would be too much code here, but the idea is not that difficult: build LPS (example “AAABAAA” -> [0,1,2,0,1,2,3]); use LPS to skip when comparing as if you were doing it in brute-force.
Let’s imagine we have window of length k and string s, then the hash for the first window will be:
H(k) = s[0]*P^(k-1) + s[1]*P^(k-2) + … + s[k]*P^0
Moving the window by one, would be O(1) operation:
H(k+1) = (H(k) – s[0]*P^(k-1)) * P + s[k+1]*P^0
Here is some sample code:
JUnit User guide: https://junit.org/junit5/docs/current/user-guide/
Many interview problems can be solved by using right data structure.
These are notes I took while reading “System Design Interview – An insider’s guide”:
Well, internet is just full of all kinds of resources and blog posts on how to prepare for the technical interview plus there are numerous books and websites available. LeetCode is probably the most known of practicing websites. “Cracking The Coding Interview” is probably the most known book. I can also recommend “Guide to Competitive Programming”. As of system design, preparation resources are not so readily available. One good resource is “Grokking System Design Interview”, but it would be more valuable to practice designing large distributed systems. I also found the book “Designing Data-Intensive Applications” to be extremely helpful.
What are other “must know” algorithms and important system design topics to be listed in this post?
February 2, 2020 Book Reviews No comments
I picked the book “Why We Sleep” for listening after seeing it recommended by Bill Gates and hearing endorsement from a coworker. If you are like most of hard working people, say a software development engineer, you might think adding few extra hours of work would help in your career – it might but NOT if you steal those hours away from night’s sleep as it is simply counterproductive and all the way detrimental to your health and creativity. Read or scroll through the post to understand why sleep is important.
The book emphasizes importance of sleep by providing numerous studies and explanations into mechanics of sleep. The book explains the impact sleep has on the quality of health, both physical and mental, as well as it explains profound effects it has on memory. In addition to all of these, not too well understood and intriguing process of dreaming is covered in great detail. I totally loved it.
If you don’t have time to read the book or this post, read these two quotes and then make your own conclusion on whether you want to to have a second thought:
…our lack of sleep is a slow form of self-euthanasia…
– Matthew Walker, Why We Sleep: Unlocking the Power of Sleep and Dreams
the shorter your sleep, the shorter your life. The leading causes of disease and death in developed nations—diseases that are crippling health-care systems, such as heart disease, obesity, dementia, diabetes, and cancer—all have recognized causal links to a lack of sleep.
– Matthew Walker, Why We Sleep: Unlocking the Power of Sleep and Dreams
Let me take you through four parts of the book:
This chapter introduces sleep and explains benefits of sleep for the brain and memory.
Basic concepts:
Here is how it typically looks like:
And this is how it might look for real (screenshot by a friend of mine):
When it comes to information processing, think of the wake state principally as reception (experiencing and constantly learning the world around you), NREM sleep as reflection (storing and strengthening those raw ingredients of new facts and skills), and REM sleep as integration (interconnecting these raw ingredients with each other, with all past experiences, and, in doing so, building an ever more accurate model of how the world works, including innovative insights and problem-solving abilities).
– Matthew Walker, Why We Sleep: Unlocking the Power of Sleep and Dreams
Other chapters of this part also cover how sleep is different in some animals (half-bran sleep, partial brain sleep); how sleeping patters change with our age (deep sleep in childhood, longer sleep for adolescent, fragmented sleep in midlife and old age); sleep differences in cultures (hunter-gatherer tribes, siestas in Greece).
Sleep is the aid for memory. It both helps you generate new memories and store new learnings. Moreover sleep helps with creativity.
Seven hours of sleep isn’t enough; concentration depends on sleep; you cannot catch up under-slept week days with even 3 long weekend recovery nights; no proof naps can replace sleep.
Another aspect is emotional stability. Just think how much agitated your kids are when they don’t get enough sleep. Adults are the same, though we are slightly better at suppressing our display of emotions.
The book then covers some areas of human health that are affected by sleep:
Dreaming is a self therapy. What I remember from the book is that during REM sleep we cope with our emotional state, we heal ourselves.
REM sleep is the only time during the twenty-four-hour period when your brain is completely devoid of this anxiety-triggering molecule. Noradrenaline, also known as norepinephrine, is the brain equivalent to a body chemical you already know and have felt the effects of: adrenaline (epinephrine).
– Matthew Walker, Why We Sleep: Unlocking the Power of Sleep and Dreams
As I understand it – dreaming is a combination of past lived emotions and experiences from memories semi-randomly blended together sometimes generating patches of unusual display explaining creativity.
Lucid dreaming was another interesting topic covered in the book. 20% of people can control their dreams. My wife is good at this. I sometimes can make myself fly for longer, but that’s about it.
This part covers various sleep-related disorders and effects modern society has on quality of sleep (screen time, caffeine, alcohol, artificial light, room temperature) as well as sleeping pills (they are bad for your health and don’t really help too much).
Sleep therapy is one of the methods that really helps with sleep. One suggestion the book gives is to “reduce anxiety-provoking thoughts and worries”. If you know how the hell this can be done, let me know!
I just copy-pasted these 12 tips, but I do believe they are so important it does no harm to reiterate over them.
I strongly recommend reading the book especially if you are not convinced that good night’s sleep is beneficial and are choosing to work long hours.
Have a good night’s sleep next night!
January 19, 2020 Book Reviews No comments
Not too long ago I wrote a post called “It’s all in your head: thoughts on 15 books“, since then I read few more non-technical books, which I will be covering here. Technical books are usually covered in via separate blog post, like this one on Designing Data-Intensive Applications. I don’t want to turn my blog into book reviewing site, but just listing book often helps me recall some of the interesting points, so please bear with me or just skip this post :)
Out of the books in this list I liked this one the most for its story. The audiobook which I listened to on audible is compilation of narration with kind of podcast insertions and comments by the author and the narrator. This really makes the book alive, like if someone was telling you a story in person. And oh my goodness… the story is something – you get to understand that some people have nightmarish lives full of suffering and yet persevere.
The book is the inspirational autobiography of David Goggins who had horrible childhood, terrible start of his adulthood, and yet despite all the odds, he has found insane drive to accomplish unthinkable, almost inhuman things, like setting world record for pull-ups, running ultramarathons, and pushing the limits of what is though possible for human body.
Some quotes:
Everything in life is a mind game! Whenever we get swept under by life’s dramas, large and small, we are forgetting that no matter how bad the pain gets, no matter how harrowing the torture, all bad things end.
Be more than motivated, be more than driven, become literally obsessed to the point where people think you’re fucking nuts.
One of the other reasons I really liked the book is that is talks a lot about running and I like running. In fact, the book and a friend of mine motivated me to run until I exhausted myself (maybe state of mind as well), unfortunately that turned out in knee joint pain and only 33km run. Hoping to complete my loop some other time.
This book felt more like motivational rant by a training coach pushing you to build right habits and sticking to them. Not as foundational as “The Power of Habit” from the previous list I had, but way more inspiring. So if someone needs a little kick in the butt, this call for action book might work well. I don’t think it worked for me, though.
You will never change your life until you change something you do daily. The secret of your success is found in your daily routine.
Some say, be 1% better than previous day, something like (1.01)^365 = ~37.78, which is ~3800% better, but I have a very serious reservation on this. Again on numbers: let’s say this is about workouts or running at which case gaining 1% actually hits the limits of human body. I took my best 10K number which is 54:59 (3299sec) – super slow when you compare to the world record of 26:17 (1577sec). Now let’s say I only do 1% improvement every day, or each other 3 day while training over 3 years, then I should be running 10K in 84 seconds with a speed 428km/h (900km/h for world record holder). Of course, this is ridiculous. My point here is that there are so many other things that do not fall under this rule. I bet that our mental capacities also have the limits as all of mental processing is built on top of physical brain. Again, each next 1% is exponentially harder to achieve.
The other book I read earlier by Malcolm Gladwell was Outliers, which I remember as a really great eye-opener on explaining why some things stand out, therefore I was really happy to receive a recommendation to read another book by him.
The book wasn’t exactly what I expected, but I definitely found intriguing how we can look at well known historical stories from totally different perspective and how David’s approach has to be taken when you seem to be at complete disadvantage.
We all know the story of David and Goliath, but the truth is that there is nothing to be surprising about David winning the battle. Goliath is huge and cannot see, he cannot move quickly and range of his weapons are limited when David uses another approach, as put by the author:
[A] sling has a leather pouch with two long cords attached to it, and … a projectile, either a rock or a lead ball. … It’s not a child’s toy. It’s in fact an incredibly devastating weapon. … If you do the calculations on the ballistics, on the stopping power of the rock fired from David’s sling, it’s roughly equal to the stopping power of a [.45 caliber] handgun. This is an incredibly devastating weapon. … When David lines up … he has every intention and every expectation of being able to hit Goliath at his most vulnerable spot between his eyes.
So next time when you hear about the story don’t just think in terms of underdogs but also think in terms of underestimated but totally capable competitors.
Two more quotes:
You can’t concentrate on doing anything if you are thinking, “What’s gonna happen if it doesn’t go right?
The scholars who research happiness suggest that more money stops making people happier at a family income of around seventy-five thousand dollars a year. After that, what economists call “diminishing marginal returns” sets in. If your family makes seventy-five thousand and your neighbor makes a hundred thousand, that extra twenty-five thousand a year means that your neighbor can drive a nicer car and go out to eat slightly more often. But it doesn’t make your neighbor happier than you, or better equipped to do the thousands of small and large things.
Found this one to be another motivational rant. Way-way too much about sports as for my taste. The quotes from the book, though, are quite motivational. But, again, as with any book like that – what matters is what you do afterwards. Not recommending this one.
Not inspired to write a complete review here. The book, especially the first parts, is really helpful in understanding how some things could help you strike a good conversation with almost anyone, but it is too trickery for me. I anyway always spoil all of the good conversations at some point of time especially with people who are important to me. This post is a complete summary of the book (maybe 20 min read) and you are done: https://sivers.org/book/HowToTalkToAnyone Otherwise cannot recommend to read entire book.
There is nothing to conclude here, I only ask you for recommendations of some good non-fictional books. Thank you so much for reading!