Skip to content

Instantly share code, notes, and snippets.

@raviwu
Last active May 5, 2022 06:43
Show Gist options
  • Star 21 You must be signed in to star a gist
  • Fork 13 You must be signed in to fork a gist
  • Save raviwu/dd81c159d177fecfe385a03f25fbc39b to your computer and use it in GitHub Desktop.
Save raviwu/dd81c159d177fecfe385a03f25fbc39b to your computer and use it in GitHub Desktop.
[Notes] Soft Skills: The software developer's life manual

Page 47

This kind of mindset is crucial to managing your career, because when you start to think of yourself as a business, you start to make good business decisions.

Page 52

Every step you take without a clear direction is a wasted step. Don’t randomly walk through life without a purpose for your career.

Your big goal should be something not too specific, but clear enough that you can know if you’re steering toward it or not. Think about what you want to ultimately do with your career.

Page 53

The smaller goals keep you on track and motivated so that you keep heading in the direction of your bigger goals. If you set out to accomplish a big goal and don’t have smaller goals along the way, you don’t end up having time to course-correct when you’re off track.

Page 55

If you want to be a good software developer, you have to learn to deal effectively with people (even if writing code is the part of your job you enjoy the most).

Page 56

Perhaps one of the most important concepts you should know when dealing with people is that, at their core, every single person wants to feel important.

Page 57

You have to learn to bite your tongue and only speak words of encouragement if you want to inspire people to perform their best or you want to effect change.

The key to successfully dealing with people is to stop thinking in terms of you and what you want and start thinking in terms of what is important to the other person and what she wants.

Page 58

It does no good telling your boss why you would like to implement a feature a certain way. It’s much better to phrase the suggestion from the frame of mind of why implementing a feature the way you suggest will be useful to your boss.

I have come to the conclusion that there is only one way under high heaven to get the best of an argument—and that is to avoid it.

Page 59

If you recognize someone as being caustic, don’t try to change them, and don’t try to deal with them; just stay out of their way and limit your interactions as much as possible.

Page 60

Whatever you do, don’t get sucked into their trap. If you have to interact with them, do it in a minimal, nonemotionally invested way.

Page 86

The most important thing you can do to go up in the ranks at any company is to take on more responsibility.

Page 87

One of the best places to search is in areas that no one else wants to get involved in. Perhaps there’s a legacy application that no one wants to touch or a certain module in your codebase that is particularly nasty. These are landmasses to add to your growing empire, because no one will want them, so you won’t be up for much of a fight. But if you can turn those swamplands into fertile ground, you can really show your value.

Page 90

In any organization there are always plenty of people who will tell you why some idea won’t work or some problem is too hard. People like that are a dime a dozen. Don’t be one of them. Instead, be the person who always has a solution to a problem and is able to execute that solution to get results.

Page 92

Being a professional is all about showing up, doing your work, and not letting adversity defeat you. Being a professional requires you to overcome your vices so that you can sit down and produce the best work possible.

Simply put, a professional is someone who takes their responsibilities and career seriously and is willing to make the tough choices that have to be made—often at their own expense—for the purpose of doing what they know is right.

Page 97

Make sure that you have an education plan that you can follow to expand your skills and learn new things that will help you do a better job. Don’t ever be happy with good enough—always strive to become a better version of yourself.

Page 99

Before you think about quitting your job you need have a solid plan in place. I’d highly recommend starting whatever business you want to create on the side first and only transitioning to doing it fulltime when you’re generating enough income from it to support yourself. I know this is the slow and painful way to quit your day job, but it’s important to do things this way for more than just financial reasons.

Page 114

Many software developers first venturing into the realm of entrepreneurship make the common mistake of building a product before they’ve found an audience for that product. Although it might seem sensible to start by building a product, you want to avoid falling into this trap; otherwise, you risk creating a solution to a problem that doesn’t exist.

Page 116

You should verify the product by testing the market and seeing if your potential customers are actually willing to pay for it.

Page 118

Start small instead and work on your first product on the side. You want to make the learning curve as short as possible, so you need to reduce the cycle time between when you take actions and see the results. The problem with a large product is that you may not see the actual results until you’re very far along and have spent considerable effort building that product.

Page 126

The real solution to this problem is careful time management. You can work whatever hours you’d like to work, but set a schedule for each week and stick to it. The more regular and routine the schedule, the better.

Page 132

Faking it till you make it is all about putting on such a great act that you convince your own mind and body to make that act a reality. Faking it till you make it is the opposite of being unconfident. It’s acting with confidence in all that you undertake, even when you’re in way over your head, because you have a supreme belief in yourself to overcome all obstacles.

Page 134

Your confidence—careful here, not arrogance—will be contagious. When you carry around this “can-do” attitude, when you have a true belief in yourself that isn’t inflated or exaggerated, but based on knowing that you eventually will succeed at anything you set your mind to, you’ll find that others will believe this too.

Page 145

The right way to market yourself is to provide value to others. We’ll talk more about this in chapter 21, but the key to successfully marketing yourself in a way that makes others like you and want to work with you is to do it in a way that provides them value.

Page 146

Marketing yourself is all about learning how to control the message you’re sending out and the image you’re portraying and amplifying the reach of that message.

Page 151

You need four things to have a brand: a message, visuals, consistency, and repeated exposure. All of these four components are required to create a successful brand.

Page 158

As a software developer, learning how to write might actually help you to write better code, because you’ll have an easier time communicating your intent. It will also help you to communicate your ideas and make them seem more compelling.

Page 160

The largest portion of your success as a blogger will depend on one thing and one thing only: consistency.

Page 165

Try not to become a man of success, but rather try to become a man of value.

Page 166

The content you produce should be squarely aimed at providing value in the areas you identify from your research. You might be particularly interested in a certain aspect of a framework or technology, but if your target audience isn’t, it won’t do you much good.

Page 167

Every time you set out to do something, whether it be creating a blog post, recording a screencast, or another activity, you should look at it from the perspective of how it’s creating value for someone else.

It’s easy to fall into the trap of talking about yourself and trying to demonstrate why you’re worthy, but you’ll find much more success in solving other people’s problems and genuinely being helpful.

Page 170

So, what do you post on social networks so that you can add value to others? The simple answer is anything that you’d find useful or interesting.

Page 182

The simple truth, though, is that you don’t write a book to make money. You write a book to increase your reputation.

Page 185

But if you want to be successful at your efforts, you have to learn to stop caring about what people think. You have to learn how to not be afraid to look like an idiot.

Page 189

The point is to always be moving forward. It doesn’t matter if you’re taking little steps and slowly getting accustomed to the temperature of the water or if you jump right in and make a big splash in the deep-end.

Page 191

We all tend to learn best by doing and teaching. Active learning is a much more effective way to learn than any other way.

Page 192

Before you read a book on a subject, skim the book and dive right in and start playing around. Don’t worry if you don’t know what you’re doing. Just have fun and see what kind of questions your mind develops as you experiment and explore.

Page 193

Then you can take what you’ve learned and reapply it to your play. See how the new tools you’ve learned about fit into your play and solve the problems you had. Explore new areas and unlock new questions that need solutions. Repeat this cycle over and over again as you inch forward in knowledge for the purpose of solving the problems you discover as you play. This way the information you acquire is meaningful to you, not just words on a page.

Finally, seal it all in cement by teaching what you’ve learned to someone else.

Once you’ve played around and you have all kinds of questions, only then go back and read the text. Now when you go back to your reference material, you’ll approach it with a greater desire to devour and absorb its contents. You’ll have questions that you’ll want answers to; you’ll have an idea of what’s important.

the key guiding principle is this idea of learning through play, experimentation, and teaching what you learned to someone else.

Page 195

1.  How to get started—What were the basic things I needed to know to get started using whatever I was learning? 2.  The breadth of the subject—How big was the thing I was learning and what could I do with it? I didn’t need to know every detail to start, but if I had a decent overview of what I could do and what was possible, I could always find more details later. 3.  The basics—Beyond just getting started, what were the basic use cases and the most common things I’d need to know to use a particular technology? What was the 20% I could learn that would cover 80% of my daily usage?

When I tried to learn everything upfront, I was just wasting my time, because what was actually important got mixed in with all the other little details.

Page 201

You might be tempted to make your scope bigger and less focused, because you want to learn about different subtopics in your topic area, but resist the temptation and try to be as focused as possible. You can only learn one thing at a time. You can always come back later and learn about other subtopics that branch off of your original topic, but for now, pick one narrowly focused thing and go with it.

Page 203

Instead of reading a single book on a subject, try to gather many different resources to help you learn.

Page 218

Being a mentor is about looking objectively at another person’s problems and offering solutions they might not be able to see because they are too close to the problem.

We all need help seeing the things that we can’t see in our own lives, because we’re a bit myopic when it comes to our own problems and situations.

Page 222

We tend to overestimate how much we know about a subject when we first learn about it. It’s very easy to fool yourself into thinking you really understand something—that is, until you try to teach it.

Page 223

When you try to teach someone, you’re forced to reorganize the data in your own head. The act of thinking about the best way to explain something and put it on paper, or into words or slides, causes you to put together the disconnected bits of information in your brain and reorganize them in a way that makes sense.

Page 224

No one wants to learn from someone who is unsure of what they’re saying, and they also don’t want to be made to feel stupid when they are being taught.

Just try to realize that your job in teaching is to help someone else, not to prove your superiority or to seek approval.

Page 227

Many computer science degrees include courses on algorithms, operating systems, relational database theory, and other topics that are timeless, but the simple truth is that when you sit down at your desk to write some code, you rarely fall back on the skills you were taught in school. Most of the work we do as developers involves using new technologies and learning how to work with them. We rarely need to go back to our computer science roots.

Page 232

That’s the problem with gaps in our knowledge. We tend to gloss over them and we tend to be too busy to stop and take the time to fill them in. We end up not really understanding what we’re doing or do things in an inefficient way to avoid areas where we’re weak or feel uncomfortable.

Page 233

Just be honest with yourself: if you encounter something you don’t understand, you don’t have to learn it right away, but add it to your list so you can at least identify gaps in your knowledge.

Page 239

Before you begin a task, make sure you have done everything you can to protect yourself from interruptions—both internal and external.

Page 241

The basic idea of my productivity plan is to plan out my entire week in small tasks that take no more than two hours.

My planning starts at the quarter level. I divide my year up into four quarters of three months each. When I plan out my quarter, I’ll try to come up with one big project that I want to get done during that quarter and I’ll also plan out some smaller goals. I’ll also think about what things I’ll do on a weekly or daily basis. This planning is usually done in a list in an application like Evernote. I’ll create a high-level outline of what I want to accomplish during the quarter. This gives me a good idea of what my one major goal is and how I’ll achieve it. It also keeps me focused.

Page 242

Weekly planning

Every month, on the first day of the month, I print out the calendar for that month and try to plan out where I think work will fall on the days of the month.

I’ll also plan out anything that I want to do on a monthly basis.

I’ll simply take items from my quarterly outline and see what I can fit on the calendar.

Page 243

I schedule all of these tasks by creating cards in Trello or Kanbanflow. For each card, I estimate how long it will take in pomodori (which are each 25 minutes of focused work). I assume that I can get about 10 pomodori done each day. I make sure to add these tasks first, because I know they need to get done each week.

Once I’ve added the mandatory tasks for the week, I go through my calendar and see if there are any fixed appointments that will take up time during the day. For those days, I’ll either create cards to represent those appointments—if they’re work-related—or I’ll reduce the number of pomodori I expect to complete that day.

Finally, I’ll slot in whatever work I plan to get done that week. I’ll add cards for each task I’d like to get done that week, filling in all the available slots. I usually leave myself a small amount of slack by only scheduling nine pomodori worth of work each day.

Page 244

Daily planning and execution

I’ll only reply to email at one set time in the evening. By batching up all my email correspondence at one time, I’m able to get through my email much more efficiently.

Page 247

You work only on a single task at a time and give it your complete focus for the full 25 minutes.

At the end of the 25 minutes, you set a timer for 5 minutes and take a break. That’s considered one pomodoro. After every four pomodori, you take a longer break, usually 15 minutes.

Technically, if you finish a task early, you’re supposed to dedicate the remaining time to “overlearning.” That is, you continue to work on the task by making small improvements or rereading material if you’re trying to learn something. I tend to ignore this part and move on to the next task immediately.

Page 248

The real power of the Pomodoro Technique is using it as a tool to estimate and measure your work. By tracking the count of pomodori done in a day and having a goal of how many to accomplish in a day, you’re suddenly given the power to truly gauge how hard you worked in a day and what your true capacity is.

Page 254

I started applying a weekly quota of doing one blog post per week and added quotas for other things I wanted to make sure I got done regularly, like creating YouTube videos and podcasts. I created a quota for everything I did that I needed to do more than once. I quantified exactly how frequently I’d do any repeatable task. It could be once a month, four times a week, or twice a day. If I was going to repeat it, I was going to define how often, and I was going to make a commitment about it. Rain or shine, I was going to do what I committed to. I took these quotas very seriously.

Page 256

The whole system falls apart if your commitment is weak, so you have to choose attainable and maintainable quotas. Don’t commit yourself to something you know you can’t do; otherwise you’re setting yourself up for failure. Start with small commitments and make them bolder as you become successful at reaching them.

Page 259

It’s important to develop a sense of self-accountability to be productive when no one is looking. You could also call this having character or integrity, because they’re all part of the same idea.

Page 264

if you’re having trouble with multitasking during the day because there are multiple tasks you have to get done, you’ll probably be better off learning how to batch those tasks and work on a series of related tasks all at once rather than splitting them up throughout the day.

Page 273

The biggest problem with TV is that there’s no actual benefit from the time you spend watching it. Unless you’re purely watching educational programs, you’re basically wasting time. Time would be better spent on literally just about anything else.

Not only is TV watching a time waster, but it also has the ability to influence you in ways that you aren’t likely aware of. TV programs short-circuit the problem-solving part of your brain and lay everything out for you. Everything from your spending habits to your world view is directly influenced by TV. The more you watch, the more you’re giving up control of your own mind and actions. The TV is literally programing you.

Page 286

The best way to identify your bad habits is to try to find things in your life and routine that you feel guilty about. What are the things that you want to stop doing, but you always put off for another day?

Page 289

When faced with large problems we tend to spend more time thinking about the problem than taking steps to solve the problem. Humans tend to take the path of least resistance. When faced with a big task, checking your email or getting another cup of coffee almost always seems like the easier path, so procrastination ensues.

Page 290

The bigger a task, the less it tends to be defined.

Page 290

Big tasks also tend to be very difficult to estimate.

Bigger tasks are mentally challenging, more likely to bring about procrastination, generally less descriptive, error-prone, and more difficult to estimate than smaller tasks.

Breaking down large tasks into smaller ones is one of the techniques I use all the time to get more work done and to have more accurate estimates of how long the work will take me to do.

Page 292

If you want to take a large task and make it less intimidating, you need to start by determining what steps need to be done to complete the task.

A critical step of breaking down a large task into smaller ones is identifying what information is missing that’s preventing you from creating smaller, well-defined tasks.

Page 295

Everyone who promises greater results with less work is trying to sell you something, or they have forgotten how hard they had to work to get to where they are.

Page 311

The money you make each paycheck is money you have to work for. The money your assets generate for you each month is money that you didn’t have to work for. If you can use more of the money you have to work for to buy assets that generate money you don’t have to work for, you’ll eventually make more money while doing the same amount of work or less. If you spend money you work for to buy liabilities that cost you money each month, you’ll go the opposite direction and be forced to work harder to make more money to continue to pay for the upkeep costs on those liabilities.

Page 312

if I wanted to actually be rich someday, not only would I have to not waste my paycheck on liabilities that would bring me down, but I’d also have to invest a significant portion of that paycheck in assets that would eventually earn me more money.

Page 313

Even if you work your entire life and sock away as much money as possible, you’ll never become rich or even financially independent unless you find a way to make your money work for you.

Page 322

An option is exactly what it sounds like: the choice to do something or not to do something. The basic idea behind an option is to allow someone to pay for the option of either buying or selling a stock by a later date in the future.

Page 324

Options basically give you the option to buy a certain number of shares of a stock by some date in the future for a fixed price. But you can also buy an option that lets you sell a certain number of shares of a stock by some day in the future for a fixed price as well. This kind of option would allow you to make money if a stock dropped in value, just like shorting a stock does,

An option that lets you buy a stock at a certain price within a period of time is called a call option. An option that lets you sell a stock at a certain price within a period of time is called a put option.

Page 326

Options give you the leverage to either make or lose more money much more quickly.

When you write an option, you’re taking the other side of the bet. Instead of betting that a stock will move in one direction, you’re betting that it will either stay where it is now or move in the opposite direction of the option.

Page 327

A covered call is when you buy some stock, but at the same time you sell a call option against that stock.

Page 328

Another strategy is what’s called a married put. This occurs when you buy a stock, but at the same time buy a put option on that stock that allows you to sell that stock.

Page 333

The general strategy—or at least the one I recommend—is to buy rental properties that are either cash-flow positive or floating and to finance them using 30-year-fixed loans. This strategy carries very little risk and still has an enormous upside, if you happen to hit a real estate boon and prices rocket upwards, but it also virtually guarantees you paid-off properties in 30 years’ time.

Page 338

The key to planning your retirement is being able to work backwards by calculating exactly the amount of money you need to live on each month and figuring out how you can guarantee that kind of passive income with at least a little buffer for some breathing room.

Page 340

To live off of passive income that’s generated from some amount of capital, you first have to generate that capital.

Page 344

You have to gradually work your way up, always with the goal of increasing your passive income. The more money you’re able to generate from assets that you hold, the more progress you’ll be able to make in buying more income-generating assets.

Page 349

pour as much money as you can each month into your highest-interest debt and keep doing that until all of your debt is paid off.

Page 352

I define retirement as freedom. To be more specific: financial freedom. The ability to not be forced to spend your time in a way that you don’t choose to spend your time due to financial constraints.

Page 388

If you do a small number of reps with a fairly high rest period between sets, you’ll primarily cause your muscles to adapt by growing stronger.

Typically, if gaining strength is your goal, you’ll want to have reps that are in the one to six range. But limiting the reps isn’t enough. You’ll want to lift as the heaviest weights you can for that rep range.

Page 389

Muscle size is primarily achieved by medium rep ranges with moderate rest times in between.

To achieve maximum muscle size, you want to try to hit rep ranges between about 8 and 12.

To achieve muscular endurance increase, you want to have rep ranges above 12. You might do 20 reps or more to increase your muscular endurance. But be warned: if you focus on muscular endurance, you won’t see much of an increase in size—you might even see a decrease.

Page 390

I divide exercises into three categories: push, pull, and legs. Push exercises are exercises where you’re pushing the weight away from you. These exercises usually use your chest (pectorals), shoulders (delts), and triceps. Pull exercises are exercises where you’re pulling the weight toward you. These exercises usually use your back and biceps. Finally, leg exercises work...well...your legs, of course.

Once you’ve been doing full-body workouts for about two to three weeks, you can progress to splitting up your workouts to either a two-day split of upper body and lower body or a three-day split of push, pull, and legs.

Page 392

The general strategy for picking good exercises is that you want to do as many compound movements as possible. Compound movements are lifts that involve multiple joints. The more joints involved, the more muscles involved, so the bigger the bang for your buck.

Page 396

The bad news is that to get abs, you’ll have to do something infinitely more difficult—you’ll have to have the discipline to drop your body fat to a very low percentage.

Page 419

The root of positive thinking is this belief that you’re greater than your mere circumstances. It’s the view that there are good things ahead, because regardless of the situation, you have the power to change and alter your own future.

Page 458

These market makers set the bid and ask prices for a stock and make their money by collecting the difference. If I sell a share of a stock for the ask price of $19 and at that same moment you buy that stock for the bid price of $20, the $1 difference is collected by the market maker. You don’t trade stocks directly with other traders in the stock market; instead, everyone goes through market makers who set the bid and ask prices and keep the trading flowing. Without market makers, the liquidity of the stock market would suffer. If everyone was trying to sell a particular stock and no one wanted to buy that stock, you’d have a difficult time selling shares of your stock. You might have to severely discount the price of your shares to get a buyer or you might have to wait a very long time. In today’s market, most trades happen instantly thanks to market makers.

Page 459

When you short a stock, you borrow shares of that stock and sell those shares. This puts you in what is called a short position. You eventually have to cover that short position by buying back shares to replace the ones you borrowed. If you buy back those shares at a lower price than you sold the borrowed shares for, you make money.

Page 460

Some stocks pay what’s called a dividend. A dividend is basically some extra profit the company made that it’s sharing with its shareholders instead of reinvesting in the company. Usually, only big companies pay dividends.

Page 470

Overall, what are “healthy” foods? In general, the foods that are the healthiest aren’t processed—whole foods like chicken, vegetables, fruits, sweet potatoes, brown rice, eggs, oatmeal, nuts, and fish. Again, these foods aren’t necessarily a lot healthier than other types of foods, but in general, you’ll find that these foods are less dense calorie-wise and provide the basic nutrients you need.

@jakazzy
Copy link

jakazzy commented Jan 4, 2018

Hi can i please get a softcopy of the book?
thanks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment