Skip to main content

Posts

Showing posts from 2019

Done is better than perfect

Perfect is the enemy of good Facebook's 5 core values via Mark Zuckerberg & Sheryl Sandberg Be bold Building great things means taking risks The riskiest thing is to take no risks. Focus on Impact Focus on solving the most important problems.  If we want to have the biggest impact, the best way to do this is to make sure we always focus on solving the most important problems.  Move Fast Build more things and learn faster.  Move fast and break things. The idea is that if you never break anything, you're probably not moving fast enough. Be Open Informed people take better decisions.  People with more information can make better decisions and have a greater impact. Build Social Value Build real value for the people.  Focus every day on how to build real value for the world in everything they do. Resources:  Facebook's 5 core values via Mark Zuckerberg & Sheryl Sandberg

You are what you choose

Cleverness is a gift, kindness is a choice. Gifts are easy -- they’re given after all. Choices can be hard. You can seduce yourself with your gifts if you’re not careful, and if you do, it’ll probably be to the detriment of your choices. How will you use your gifts? What choices will you make? Will inertia be your guide, or will you follow your passions? Will you follow dogma, or will you be original? Will you choose a life of ease, or a life of service and adventure? Will you wilt under criticism, or will you follow your convictions? Will you bluff it out when you’re wrong, or will you apologize? Will you guard your heart against rejection, or will you act when you fall in love? Will you play it safe, or will you be a little bit swashbuckling? When it’s tough, will you give up, or will you be relentless? Will you be a cynic, or will you be a builder? Will you be clever at the expense of others, or will you be kind? Source:   Remarks by Jeff Bezos, as delivered to t

Leadership and Retention

Leadership is About Influence - Not Authority "Respect is how to treat everyone, not just those you want to impress." ~Richard Branson Great leaders don't set out to be a leader. They set out to make a difference. It's never about the role – It's always about the goal. “It’s amazing how much you can accomplish if you do not care who gets the credit." Harry S. Truman “Leaders become great, not because of their power, but because of their ability to empower others.” John Maxwell A boss has the title. A leader has the people. ~ Simon Sinek "Take care of your employees and they will take care of your business. It’s as simple as that." Richard Branson "People will forget what you said, people will forget what you did, but people will never forget how you made them feel.” ~ Maya Angelou "Culture is more important than vision. Some leaders have great vision, but have created a toxic culture where that vision will never happen.&qu

Happy Diwali

Sky full of fireworks, mouth full of sweets. House full of diyas & heart full of joy. May the lamp of soul shine with the oil of purity. May the wick of wickedness burn under the fire of truth. Wish You All A Happy Diwali.

Do you have a mentor ?

A mentor is someone who allows you to see the hope inside yourself. A mentor is someone who allows you to know that no matter how dark the night, in the morning joy will come. A mentor is someone who allows you to see the higher part of yourself when sometimes it becomes hidden to your own view. Source: https://sites.sph.harvard.edu/wmy/celebrities/oprah-winfrey Please share your thoughts via the comments.

Don’t find fault, find a remedy.

Henry Ford was an American industrialist and a business magnate, the founder of the Ford Motor Company, and the sponsor of the development of the assembly line technique of mass production. Some interesting quotes from Henry Ford Don’t find fault, find a remedy. Vision without execution is just hallucination. If there is any one secret of success, it lies in the ability to get the other person’s point of view and see things from that person’s angle as well as from your own. The only real mistake is the one from which we learn nothing. Quality means doing it right when no one is looking. To do more for the world than the world does for you – that is success. Failure is simply the opportunity to begin again, this time more intelligently. A business that makes nothing but money is a poor business. There is one rule for the industrialist and that is: make the best quality goods possible at the lowest cost possible, paying the highest wages possible. Employers only hand

Dynamic Programming

Those who do not remember the past are condemned to repeat it. ~ George Santayana In terms of mathematical optimization, dynamic programming usually refers to simplifying a decision by breaking it down into a sequence of decision steps over time. Dynamic programming amounts to breaking down an optimization problem into simpler sub-problems, and storing the solution to each sub-problem so that each sub-problem is only solved once. Dynamic Programming (DP) is an algorithmic technique for solving an optimization problem by breaking it down into simpler sub-problems and utilizing the fact that the optimal solution to the overall problem depends upon the optimal solution to its sub-problems. There are two key attributes that a problem must have in order for dynamic programming to be applicable: optimal substructure and overlapping sub-problems. If a problem can be solved by combining optimal solutions to non-overlapping sub-problems, the strategy is called "divide and conquer

The perfect questions to ask in your job interview

The perfect questions to ask in your job interview. Lynne has created KeyValues to help software developers like her find engineering teams that share their values. Interviews are two-sided. The perfect  questions to ask in your job interview.  Make sure you show up prepared to get the answers you need about the things you care about most. Mentioned the areas here. Questions can be found at  culture questions . Engineering High Quality Code Base Pair Programs Open Source Contributor Start-to-Finish Ownership Uses Agile Methodologies Cutting-Edge Technologies Fast-Paced Environment Continuous Delivery Team Values Engages with Community Team is Diverse Continuous Feedback Impressive Team Members Bonded by Love for Product Creative + Innovative Cross-Department Collaboration Open Communication EQ > IQ Flat Organization Risk-Taking > Stability Wears Many Hats Heavily Team Oriented Daily Routines Eats Lunch Together Flexible Work Arrangeme

Are you an investor or consumer ?

“A nation is born stoic, and dies epicurean” – Will Durant A stoic believes in enduring hardship without complaint.  Epicurus believed that pleasure was the greatest good.  Stoics are people willing to sacrifice present pleasure for something better later. They are investors.   Epicureans live for now. They are consumers . They say you only live once.  Media is bombarding you with thousands of ads. They are trying to sell you something.  Luxury comes at a cost...of killing your hopes, your dreams, your ambitions. So toughen up a little bit. Be a stoic. Everybody wants, but not everybody toughens up to get the good life. You must toughen up.  Chief Tecumseh says:  Love your life. Perfect your life. Beautify all things in your life. Seek to make your life long and its purpose in the service of your people. Resources: Why I read a book a day (and why you should too): the law of 33% | Tai Lopez | TEDx

Start Thanking - Stop Apologizing

Stop Saying "Sorry" And Say "Thank You" Instead Sorry for taking up all your time => Thank you for spending time with me I am sorry I am late => Thank you for waiting for me. I am sorry for talking so much => Thank you for listening. I am sorry you had to stay so late => Thank you so much for going beyond the call of duty. I am sorry you had to defend me => Thank you for your loyalty. Resources:  https://www.serenityzonetherapy.com/2019/03/10/stop-apologizing-start-thanking/ https://www.boredpanda.com/stop-saying-sorry-say-thank-you-comic-yao-xiao/ Please share your thoughts ... 

51:49 Rule

51:49 Rule The 51:49 rule means that whatever happens to you at every moment in life, You contribute to 51% (Major) External factors contribute the other 49%  (Minor) The 51 and 49 numbers are arbitrary. The numbers could’ve been 60:40, 75:25 or whatever. The point is one number is always higher than the other. One part has greater influence than the other. One part is more powerful than the other. One part actually determines your daily experience! The higher number means you’re 100% responsible for whatever is going on in your life. You’re ultimately accountable for all of the results in your life because you’ve created them. You’ve attracted them into your life. There are many outside influences and situations constantly testing your resolve and you don’t have to allow them to put you into a negative mentality. If they do, you have choice to erase them. "10% of life is made up of what happens to you. 90% of life is decided by how you react."  ~ Stephen Covey P

Programming Quotes

Fix the cause, not the symptom. Intent does not erase Impact. “Code is like humor. When you have to explain it, it’s bad.” ~ Cory House “Bad programmers worry about the code. Good programmers worry about data structures and their relationships.” ~ Linus Torvalds Any fool can write code that a computer can understand. Good programmers write code that humans can understand.” – Martin Fowler “First, solve the problem. Then, write the code.” – John Johnson "Optimism is an occupational hazard of programming: feedback is the treatment." ~  Kent Beck “When to use iterative development? You should use iterative development only on projects that you want to succeed.” – Martin Fowler “Java is to JavaScript what car is to Carpet.” ~ Chris Heilmann “Talk is cheap. Show me the code.”  ~ Linus Torvalds “Make it work, make it right, make it fast.” ~ Kent Beck “Simplicity is the soul of efficiency.” ~ Austin Freeman Your intent does not erase your impact. Your privilege

Test Driven Development - eradicates fear of change

TDD eradicates fear of change. As a developer, you shouldn't have to guess whether software is working correctly; You should be able to prove it at every step of the way. A test-driven development (TDD) process allows you to build testing into your daily routine. You can get instant feedback on the changes you are making which will increase your productivity, confidence and peace of mind. Definition: Test-driven development (TDD) is a software development process that relies on the repetition of a very short development cycle: requirements are turned into very specific test cases, then the software is improved so that the tests pass. This is opposed to software development that allows software to be added that is not proven to meet requirements. Cons of TDD: TDD will make you slow when the design is changing rapidly.  In TDD, emphasis is given to passing tests than design.  Passing tests is NEVER a key to good quality. Quality is made by design, not testing.

SOLID - Principles of Object Oriented Class Design

The theory of SOLID principles was introduced by Martin in his 2000 paper "Design Principles and Design Patterns". The SOLID acronym was introduced later by Michael Feathers. 1. Single responsibility principle A class should have only one reason to change Martin defines a responsibility as a reason to change, and concludes that a class or module should have one, and only one, reason to be changed (i.e. rewritten). "When designing our classes, we should aim to put related features together, so whenever they tend to change they change for the same reason. And we should try to separate features if they will change for different reasons." - Steve Fenton 2. Open-Closed Principle A module should be open for extension but closed for modification. Of all the principles of object oriented design, this is the most important. It means simply this: We should write our modules so that they can be extended, without requiring them to be modified. In other words, we w

What is True Wealth ?

True Wealth is So Much More Than Money The majority of people think of the word ‘wealth’ in terms of finances only but this is a narrow view of what it means to be wealthy. Wealth consists of every area within one’s life — health, relationships, finances, time, so on and so forth. Different types of wealth: Financial / Material Wealth (Money) Social Wealth (Relationships) Time Wealth (Freedom) Physical Wealth (Health) Mental Wealth (Mindset) Spiritual Wealth (Satisfaction) The majority of people chase money and status at the expense of freedom and health. In the short term, this “works” somewhat to the favor of the individual but in the long term, it produces nasty consequences. Be careful of the system which tempt you in with financial / material wealth (money) but rob you of all other types of wealth (Freedom, Health etc.) What do you think about this ?

Are you doing right things?

Where is your concentration ? Are you concentrating on doing things right or doing right things ? Doing things right will keep you going. Doing right things will make you move in right direction. Both are important; but with out doing right things, doing things right will keep you busy (you might even be very satisfied) and you might land in a wrong place. Dong things right and not doing right things might give you short term results but will fail you in the long term. So, make sure that you are doing right things before you start doing any thing. "Management is Doing Things Right, Leadership is Doing the Right Things" ~ Peter F Drucker Don't just manage your life and work. Lead your life and work. Feel free to share your thoughts in comments below.

Speed matters

Why working quickly is more important than it seems ? The obvious benefit to working quickly is that you’ll finish more stuff per unit time. But there’s more to it than that. If you work quickly, the cost of doing something new will seem lower in your mind. So you’ll be inclined to do more. The general rule seems to be: Systems which eat items quickly are fed more items. Slow systems starve. What’s true of individual people turns out also to be true of whole organizations. If customers find out that you take two months to frame photos, they’ll go to another frame shop.  If contributors discover that you’re slow to merge pull requests, they’ll stop contributing.  Unresponsive systems are sad. They’re like buildings grown over with moss. They’re a kind of memento mori. People would rather be reminded of life. They’ll leave for places that get back to them quickly. Part of the activation energy required to start any task comes from the picture you get in your head when you

Who owns your life ?

As long as you worry about what others think of you, you are owned by them. You own your life only when you don’t need approval from others. “Care about what other people think and you will always be their prisoner.” – Lao Tzu People Pleasing Hides the Real You. Don't Change So People Will Like You - Be Yourself and the Right People Will Love the Real You. Feel free to share your thoughts in comments below.

Managers and Makers

Manager's Schedule: A manager’s day is, as a rule, sliced up into tiny slots, each with a specific purpose decided in advance. Many of those slots are used for meetings, calls, or emails. The manager’s schedule may be planned for them by a secretary or assistant. Managers don’t necessarily need the capacity for deep focus — they primarily need the ability to make fast, smart decisions. In a three-minute meeting, they have the potential to generate (or destroy) enormous value through their decisions and expertise. Maker's Schedule: (Engineers, Artists, Writers etc. ) A maker’s schedule is different. It is made up of long blocks of time reserved for focusing on particular tasks, or the entire day might be devoted to one activity. Breaking their day up into slots of a few minutes each would be the equivalent of doing nothing. When you’re operating on the maker’s schedule, meetings are a disaster. A single meeting can blow a whole afternoon, by breaking it into two

Your mind can be your best asset or your worst enemy. Train it well.

Your mind can be your best asset or your worst enemy. Train it well.

Inspirational quotes on leadership

Inspirational quotes on leadership from historical figures and business leaders: “A leader is best when people barely know he exists…when his work is done, his aim fulfilled, they will all say: We did it ourselves.” —  Lao-Tzu , an ancient philosopher and founder of Taoism “Leadership is about making others better as a result of your presence and making sure that impact lasts in your absence.” —  Sheryl Sanberg,  COO of Facebook “If you want to build a ship, don’t drum up the men to gather wood, divide the work, and give orders. Instead, teach them to yearn for the vast and endless sea.” —  Antoine de Saint-Exupéry ,  French writer and pioneering aviator. “Leaders need to provide strategy and direction and to give employees the tools that enable them to gather information and insight from around the world. Leaders shouldn’t try to make every decision.” — Bill Gates, founder of Microsoft “As a leader, I am tough on myself and I raise the standard for everybod

Measuring a software engineers performance

Why measure? There are a few different reasons why a software engineering team lead would want to track each software engineers individual performance. Fair Compensation Promote individual growth in key skill areas Assess individuals comparative to their team’s performance What to measure ? Ability to write source code that adheres to specifications Peer reviewing other team members work Debugging and troubleshooting complicated issues Process Improvements How to measure ? Here are a few ways to gather the information below Surveying the individuals more senior peers Creating metrics through issue trackers and time sheets Observing the quality and speed yourself Surveying the individuals senior most peers Source:   https://www.jmoses.co/2019/07/08/software-engineering-manager-guide-measuring-performance.html Feel free to share your thoughts in comments below.

Procrastination to Motivation (Regulate your emotions)

You Procrastinate Because Of Emotions, Not Laziness. Regulate Them To Stop Procrastinating! There are two trains of thought – One leads to procrastination and one leads to motivation. And somewhere in between, there is a junction called anxiety. Procrastination train of thought: People procrastinate or avoid aversive tasks to improve their short-term mood at the cost of long-term goals. Procrastination is not a time management problem. It is an emotion regulation problem - we delay activities which might make us feel not-so-good. Procrastination is not laziness. Humans procrastinate because of poor emotional regulation about the outcome of tasks. In short, we often procrastinate because of perceived anxiety, stress, and poor emotional regulation about the completion of a task. Perceived anxieties make us feel ‘not so good.’ The aversion activity is a mechanism to avoid or delay the anxiety and repair the short-term negative mood. Habits like procrastination are a reaction

Famous Laws Of Software Development

Famous and interesting laws of Software Development Murphy's Law: If something can go wrong, it will.  Brook's Law:  Adding manpower to a late software project makes it later.  Hofstadter's Law:  It always takes longer than you expect, even when you take into account Hofstadter's Law.  Conway's Law:  Any piece of software reflects the organizational structure that produced it. [OR] Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations.  Postel's Law: Be conservative in what you send, be liberal in what you accept.  Pareto Principle:  For many phenomena, 80% of consequences stem from 20% of the causes. The Peter Principle:  In a hierarchy, every employee tends to rise to his level of incompetence. Kerchkhoff's Principle:  In cryptography, a system should be secure even if everything about the system, except for a small piece of information - the key - is pub

Want to hire the best programmers? Offer growth

[Based on the research done by Triplebyte] Software engineers of all stripes want, more than anything else, to develop their abilities as engineers.  They want it more than pay, more than work/life balance, and more than autonomy. This is probably, at least in part, because they know that every other priority they have will eventually depend on keeping up with the industry. Women Engineers Want Growth, Too (But Also Comfort and Inclusivity) As expected, “inclusive workplace” shows the largest relative difference between men and women engineers. Female-identified candidates chose it three times as often, a far larger relative difference than any of the other common motivators. Great Engineers Are Different From The Best Engineers Great engineers answer “salary”, “impressive team members”, “autonomy”, “fast-paced environment” and “equity” much more. “Autonomy” suggests that these engineers know that they're skilled and can be trusted to work with minimal supervision, a

What is legacy code ?

Changing code with out tests is like doing aerial gymnastics without a net.  What is legacy code? Let's look at the strict definition: Legacy code is code that we've gotten from someone else. Maybe our company acquired code from another company; maybe people on the original team moved on to other projects. Legacy code is somebody else's code. But in programmer-speak, the term means much more than that. The term legacy code has taken on more shades of meaning and more weight over time. What do you think about when you hear the term legacy code? If you are at all like me, you think of tangled, unintelligible structure, code that you have to change but don't really understand. You think of sleepless nights trying to add in features that should be easy to add, and you think of demoralization, the sense that everyone on the team is so sick of a code base that it seems beyond care, the sort of code that you just wish would die. Part of you feels bad for even thinking abo

What is Code ?

An interesting graphical intro to computers and coding. https://www.bloomberg.com/graphics/2015-paul-ford-what-is-code/ From: Paul Ford (A writer and programmer who is a founding partner of Postlight, a company in New York City that builds Internet platforms and develops interactive products.) Isn't it interesting ?  Feel free to share your thoughts in comments below.

Software Development Lessons (learned the hard way)

These are the exhaustive list of lessons Julia Biason learnt in 30 years working with software development. Folks who have spent some time in software development can easily connect with them.  Programming Before you start writing code... Spec First, Then Code Write Steps as Comments Gherkin Is Your Friend to Understand Expectations Design Patters Are Used to Name Solution, Not Find Them Thinking Data Flow Beats Patterns The Magic Number Seven, Plus Or Minus Two Cognitive Cost Is The Readability Killer Learn The Basics of Functional Programming Shortcuts Are Nice, But Only In The Short Run Debuggers Are Overrated Think About The Users Testing Software Unit Tests Are Good, Integration Tests Are Gooder Testing Every Function Creates Dead Code Tests Make Better APIs Make Tests That You Know How To Run On The Command Line Good Languages Come With Tests Documenting your code Documentation Is A Love Letter To Your Future Self The Function Documentation Is It

Design Patterns are not solutions

Design Patters Should be Used to Name Solution, Not Find Them Most of the times I saw design patterns being applied, they were applied as a way to find a solution, so you end up twisting a solution -- and, sometimes, the problem it self -- to fit the pattern. My guess is that the heavy use of "let's apply this design pattern" before even understanding the problem -- or even trying to solve it -- comes as a form of cargo cult: "We saw that people used this pattern and solved their problem, so let's use it too and it will solve our problem". Or, worse: "Design pattern is described by Famous Person, so we must use it". Here is the thing: Design pattern should not be used as a way to find solution to any problems. You may use some of them as base for your solution, but you must focus on the problem, not the pattern. "Do a visitor pattern will solve this?" is the wrong question. "What should we do to solve our problem?" is t

Design Differences Between RDBMS and Cassandra

Design Differences Between RDBMS and Cassandra NO JOINS You cannot perform joins in Cassandra. If you have designed a data model and find that you need something like a join, you’ll have to either do the work on the client side, or create a denormalized second table that represents the join results for you. This latter option is preferred in Cassandra data modeling. Performing joins on the client should be a very rare case; you really want to duplicate (denormalize) the data instead. NO REFERENTIAL INTEGRITY Although Cassandra supports features such as lightweight transactions and batches, Cassandra itself has no concept of referential integrity across tables. In a relational database, you could specify foreign keys in a table to reference the primary key of a record in another table. But Cassandra does not enforce this. It is still a common design requirement to store IDs related to other entities in your tables, but operations such as cascading deletes are not available. DENO

What does schema-less mean for a document database?

Document databases are sometimes called schema-less, but that’s misleading, as the code that reads the data usually assumes some kind of structure—i.e., there is an implicit schema, but it is not enforced by the database. A more accurate term is schema-on-read (the structure of the data is implicit, and only interpreted when the data is read), in contrast with schema-on-write (the traditional approach of relational databases, where the schema is explicit and the database ensures all written data conforms to it). Schema-on-read is similar to dynamic (run-time) type checking in programming languages, whereas schema-on-write is similar to static (compile-time) type checking. Just as the advocates of static and dynamic type checking have big debates about their relative merits, enforcement of schemas in database is a contentious topic, and in general there’s no right or wrong answer. -------- Completely agree with the above the statements beautifully put by the author. An in

Learn to Respond, Not React

You will continue to suffer if you have an emotional reaction to everything that is said to you. True power is sitting back and observing things with logic.  TRUE POWER IS RESTRAINT If words control you that means everyone else can control you. Breathe and allow things to pass. Let it R.A.I.N. - Recognize, Accept, Investigate & Not-identify ----------- ​"10% of life is made up of what happens to you. 90% of life is decided by how you react." -Stephen Covey Source: Internet

A Wealth Of Information Creates A Poverty Of Attention

What information consumes is rather obvious: it consumes the attention of its recipients. Hence a WEALTH of INFORMATION creates a POVERTY of ATTENTION, and a need to ALLOCATE that ATTENTION efficiently among the overabundance of information sources that might consume it. ~ Herbert A. Simon (Nobel Prize winner in economics) Herbert Alexander Simon  (June 15, 1916 – February 9, 2001) was an American  economist ,  political scientist  and  cognitive psychologist , whose primary research interest was  decision-making  within organizations and is best known for the theories of " bounded rationality " and " satisficing ".

Story about Samsara from Vidura in Maha Bharatha

From Sri Maha Bharatham - 11th Maha Parva (Stri Parva) - Jalapradanika Sub Parva - 5th Chapter "Dhritarashtra said, ‘Tell me in detail everything about the ways of that intelligence by which this wilderness of duties may be safely covered.’ "Vidura said, ‘Having bowed down to the Self-create, I will obey thy behest by telling thee how the great sages speak of the wilderness of life. A certain  brahmana,  living in the great world, found himself on one occasion in a large inaccessible forest teeming with beasts of prey. It abounded on every side with lions and other animals looking like elephants, all of which were engaged in roaring aloud. Such was the aspect of that forest that Yama himself would take fright at it. Beholding the forest, the heart of the  brahmana  became exceedingly agitated. His hair stood on end, and other signs of fear manifested themselves, O scorcher of foes! Entering it, he began to run hither and thither, casting his eyes on every point of