10 regrets too many people will have in 10 years

Too often we waste our time waiting for the ideal path to appear, but it never does, because we forget that paths are made by walking, not waiting.

In the final decade of his life, my grandfather woke up every single day at 7 am, picked a fresh wild flower on his morning walk, and took it to my grandmother.  One morning, I decided to go with him to see her.  And as he placed the flower on her gravestone, he looked up at me and said, “I just wish I had picked her a fresh flower every morning when she was alive.  She really would have loved that.”  As you can imagine, my grandfather’s words touched a nerve in me.  And over the years I’ve often reflected on what he said that morning, and how his sentiment relates to everyone and everything I care about.

God willing, when I’m on the cusp of my 80’s, I don’t want to sit with regrets.  I don’t want to wish I had done things differently—especially something as simple, yet meaningful, as picking flowers for the love of my life.

In the end, more than anything else, we regret the small chances we didn’t take, the priceless relationships we were too busy to nurture, and the good decisions we waited too long to make.

I learned this through extensive experience.  I’ve spent the past decade coaching hundreds of students and clients from all over the world, and the same exact regrets relentlessly pop up in the personal stories people share with us.  Below, we’re going to take a look at ten of these common regrets, and then cover some principles and strategies for avoiding and overcoming them.

1. Not spending enough quality time with the right people.

At some point, you’ll just want to be around the few people who make you smile for all the right reasons.  So today, spend more time with those who help you love yourself more—spend more time with those who make you feel good, and less time with those who you feel pressured to impress.  Never be too busy to make room in your day for the ones who matter most.  And remember that nothing you can give will ever be more appreciated than your sincere, focused attention—your full presence.  Truly being with someone, and listening without a clock and without anticipation of the next event, is the ultimate compliment.

2. Not expressing your love openly and honestly with those you love.

Without question, you’re going to lose people in your life.  Realise that no matter how much time you spend with someone, or how much you appreciate them, sometimes it will never seem like you had enough time together.  Don’t learn this lesson the hard way.  Express your love!  Tell people what you need to tell them.  Don’t shy away from important conversations because you feel awkward or uncomfortable.  You never know when you might lose your opportunity.  Is it really possible to tell someone what you feel?  Yes, it is.  They won’t always understand, because even when they’ve heard you, they can’t feel exactly what you feel inside.  But you still have to speak up for your own peace of mind.  If you appreciate someone today, tell them.  If you have something else important to say, say it.  Hearts are often confused and broken open by words left unspoken.

3. Basing a significant portion of your self-worth on other people’s opinions of you.

We tend to forget that most people judge us based on experiences from their own life that have absolutely nothing to do with us.  For example, a person might assume things about you based entirely on a troubled past experience they had with someone else who looks somewhat like you.  Therefore, basing any part of your self-worth on what they think puts you in limbo—you are literally at the mercy of their unreliable, bias perspective.  If they see you in the right light, and respond to you in a positive, affirming manner, then you feel good about yourself.  And if not, you feel like you did something wrong.  The bottom line is that you will never find your worth in another human being—you find it in yourself, and then you will attract those who are worthy of your energy.  And in the meantime, not overreacting or taking things personally will keep your mind clear and your heart at peace.

4. Being too busy impressing others and forgetting about what matters to YOU.

Ten years from now it won’t really matter what shoes you wore today, how your hair looked, or what brand of clothes you wore.  What will matter is how you lived, how you loved, and what you learned along the way.  So forget about impressing people for the sake of it.  Be real instead!  If you want to impress someone, impress yourself by making progress on something you’re sincerely proud of.  Focus on what matters!  It’s truly amazing what you can accomplish in a day when you aren’t incessantly worried about what everyone else in the world is thinking and doing.  Just show yourself that you can grow and get better.  It’s never about impressing or competing with others.  In the end, it’s just you vs. you.

5. Letting uncertainty paralyse you.

Trust me now and thank me later, embrace uncertainty!  Because some of the most incredible chapters of your life won’t have a title you feel comfortable with until much later.  Living is risky business.  Every decision, every interaction, every step, every time you get out of bed in the morning, you take a small, uncertain risk.  To truly live is to know you’re getting up and taking that risk, and to trust yourself to take it.  If you don’t—if you let uncertainty win—you will never know anything for sure, and in many ways this unknowing will be worse than finding out your hunch was wrong.  Because if you were wrong, you could make adjustments and carry on with your life without ever looking back and wondering what might have been.  Remember this, and find the courage you need!  You don’t need guarantees 24/7.  That’s not how life works.  In life you can be comfortable or courageous, but not both at once.

6. Focusing on failures instead of opportunities.

Well, it’s true, you have failed and you have been hurt in the past.  But it’s also true that you have loved, and been loved.  That you have risked, and received.  That you have grown not just older, but wiser.  And all of this carries a weight of its own—a greater weight than any particular failure or wound.  In fact, it’s better to have a life full of small wounds and failures that you learned from, rather than a lifetime filled with the regrets of never trying.  Think about it!  Have you ever seen a toddler learn to walk?  They stumble and fall numerous times before getting it right.  The falls are learning opportunities.  Oftentimes it takes pain and patience to make lasting progress.  So don’t let time pass you by like a hand waving from a train you desperately want to be on.  Don’t spend the rest of your life thinking about why you didn’t do what you can do right now.

7. Holding on too tight to every ideal, and then missing out on real opportunities.

You can’t lose what you never had, you can’t keep what’s not yours, and you can’t hold on to something that does not want to stay.  But you can drive yourself mad by trying.  What you need to realise is that most things are only a part of your life because you keep thinking about them.  Stop holding on to what hurts, and make room for what feels right!  Do not let what is out of your control interfere with all the things you can control.  In other words, say “goodbye” to what didn’t work out so you can say “hello” to what might.  In life, goodbyes are a gift.  When certain people walk away from you, and certain opportunities close their doors on you, there is no need to hold on to them or pray to keep them present in your life.  If they close you out, take it as a direct indication that these people, circumstances and opportunities are not part of the next chapter in your life.  It’s a hint that your personal growth requires someone different or something more, and life is simply making room.

8. Playing the victim for far too long.

If you always play the victim, you will always be treated like one.  Life isn’t fair, but you don’t have to let the past define your future.  Remember that time you thought you couldn’t make it through?  You did, and you’ll do it again.  Don’t let your challenges get the best of you.  Don’t let your insecurities bully you into a corner.  Don’t be your own victim!  Take the next smallest step.  The greatest of all mistakes is to do nothing simply because you can only do a little.  And you can ALWAYS do a little!  Where you are right now is necessary.  Sometimes we avoid experiencing exactly where we are because we have developed a belief, based on our ideals, that it is not where we should be.  But the truth is, where you are right now is exactly where you need to be to take the next smallest step forward.

9. Waiting, overanalysing, and never taking the necessary steps.

Too often we waste our time waiting for the ideal path to appear, but it never does, because we forget that paths are made by walking, not waiting.  Remember this!  It’s easy to be lazy and wait around.  It’s easy to waste another day.  But you need to do the opposite!  Decide what you want to accomplish and get it done.  Action is worry’s worst enemy.  Action is the best ammunition.  Action brings progress!  So do not confuse senseless movement with real action.  Whenever you find yourself at a point of intense decision-making where you’re caught in a cycle of over-analysis and hesitation, and you’re making zero progress, take a deep breath, break the cycle, make an educated guess on the next logical step, and take it.  Even if you get it wrong, you will learn something useful that will help you get it right.  A daily ritual of small, positive steps is the ultimate key.

10. Being too busy to appreciate your life.

Take action, work hard, but don’t forget to pause and pay attention to life’s little moments too.  That’s honestly the best advice there is.  Realise that life is simply a collection of little chances for happiness, each lived one moment at a time.  That some time each day should be spent noticing the beauty in the space between the big events.  That moments of dreaming and sunsets and refreshing breezes cannot be bettered.  But most of all, realise that life is about being present, watching and listening and working without a clock and without anticipation of results at every moment, and sometimes, on really good days, for letting these little moments fill your heart with intense gratitude.  Truth be told, you will inevitably, whether tomorrow or on your deathbed, come to wish that you had spent less time worrying and rushing through your life, and more time actually being mindful and appreciative of each day.


The points above are crucial reminders, but what if you already have regrets you’re desperately struggling with?

No doubt, the feelings of regret sometimes sneak up on the best of us.  As alluring as the idea of living a regret-free life sounds, it’s rarely an easy feat.

Oftentimes, before we even realise what our minds are dwelling on…

  • We regret missed chances.
  • We regret not spending our time and energy more wisely.
  • We regret situations and conversations that didn’t go well.
  • We regret not speaking up when we had the chance.
  • We regret getting into toxic relationships, or making mistakes in past relationships.

Yes, even when we know better, we regret things.  And we do so simply because we worry that we should have made different decisions in the past.  We should have done a better job, but didn’t.  We should have given a relationship another chance, but didn’t.  We should have started that business, but didn’t.  And so on and so forth.

We compare the real outcomes of our past decisions to an ideal fantasy of how things “should” be.  In other words, we have a fairy tale dancing around in our heads of what could have been, if only we had made different decisions.

The problem, of course, is that we can’t change those decisions, because we can’t change the past.  Yet we resist this truth to no end—we keep overanalysing and comparing the unchangeable reality to our ideal fantasy until we’ve wasted days of our lives in head-spinning misery.

If we logically know better, why can’t we just let all our ideals and fantasies GO?

Because we identify personally with these ideals and fantasies.  We all have this vision in our minds of who we are—our well-meaning intentions, our intelligence, our social impact, etc.  And we make the best decisions we can, of course, because, again, we generally mean well.  Even if you struggle with deep-seeded self-esteem issues, you probably still identify with yourself as being a decent and respectful human being.

And so when someone says something about us that contradicts the vision of ourselves that we identify with—they insult our intentions, our intelligence, our status, etc.—we take offence.  We feel personally attacked, and we have a hard time letting it go.

Something very similar happens when we believe we did something—made a mistake—that contradicts that same vision of ourselves that we identify with.  We take offence!  In some cases we implode on ourselves—we berate ourselves for making the mistake … “How could I have done this?” we think.  “Why couldn’t I have been smarter and made a better decision?”  And again, we have a hard time letting it go—we have a hard time coming to grips with the fact that we aren’t ALWAYS as good as the vision we have of ourselves.

So in a nutshell, our ideals and fantasies about ourselves tend to cause us lots of misery.

The key is to gradually practice letting go of these ideals and fantasies, and focus instead on making the best of reality.  The truth must be embraced…

Every bad decision we made in the past is done—none of them can be changed.

And in fact there’s some good in every one of those bad decisions too, if we choose to see it.  Just being able to make a decision at all is a gift, as is being able to wake up in the morning, and being able to learn and grow from our wide-ranging life experiences.

We are not actually what we envision ourselves to be, at least not always.

We are human and therefore we are multi-layered and imperfect.  We do good things, we make mistakes, we give back, we are selfish, we are honest, and we tell white lies sometimes.  Even when we are doing our absolute best, we are prone to slip.  And once we embrace this and get comfortable with our humanness, making a bad decision tends to conflict a lot less with our new, more flexible (and accurate) vision of ourselves.

Of course, all of this is easier said than done, but whenever you find yourself obsessing over and regretting a past decision, you can 1) acknowledge that you’re falling into this pattern, 2) realise that there’s some ideal or fantasy you’re comparing your decisions and yourself to, and 3) let go of this ideal or fantasy and embrace a wider range of reality by making peace with what’s behind you, so you can focus more on what’s ahead.

It takes constant practice.

But you won’t regret it.

First published here. 


Written by Marc Chernoff, September 24, 2017



Stripe Payment Integration & Development in Codeigniter

This blog gives an overview on integration of stripe payment service in Codeigniter.

There are two types of payment services we can integrate using stripe.

  • Recurring Payment.
  • One Time Payment.

First step is to create a stripe account. Use the below link to create an account.


Once registered, confirm your email address using the activation link received in email. It will redirect you to a login page of stripe website. After login, you will be redirected to dashboard.

Recurring Payment

For this, we need to create a new subscription plan which will be used for recurring payment. To create a plan, click on Subscriptions from left menu -> Plans -> New. It will open a popup to create new plan as shown below.


We need to provide details for the below fields.

ID: Used for recurring payment which can be numeric or alpha numeric.

Name: Name of your subscription plan.

Currency: Select currency in which we want to accept payments.

Amount: Amount for the subscription.

Interval: Select subscription period. There are seven options available like daily, monthly, yearly, weekly, every 3 months, every 6 months and custom. In custom, we can set our own subscription period by entering number and selecting period from drop down like month(s), week(s) or day(s).

Trial period days: This field is optional and it is used if we want to give subscription as a trial for mentioned day(s).

Statement description: A description of the payment plan which optional and appear on statement.

When someone pays for the subscription or does a recurring payment, it is mandatory to create a customer. We can create customer through a php code.


$card_data = array(

            ‘number’ => $this->input->post(‘card_number’),

            ‘cvc’ => $this->input->post(‘cvv’),

            ‘exp_month’ => $this->input->post(‘exp_month’),

            ‘exp_year’ => $this->input->post(‘exp_year’),

            ‘name’ => $this->input->post(’email’),


 $dollars = str_replace(‘$’, ”, $this->input->post(‘amount’));

$cents = number_format((float)$dollars*100., 0, ‘.’, ”);   

$tokenArray = json_decode($this->stripe->card_token_create($card_data,$cent));

$stripeToken = $tokenArray->id;

$card = $stripeToken;

$email = $this->input->post(’email’);

$desc = $this->input->post(‘service_name’);

$plan = $this->input->post(‘plan_name’);

$customerCreateArray = json_decode($this->stripe->customer_create( $card, $email, $desc, $plan));

$customer_id = $customerCreateArray->id; //return inserted customer id


How to integrate stripe payment gateway in codeigniter?

We need to create a basic view file which will accept the required data from the user like card number, card expiry month, card expiry year, card CVV number etc.

We need to mention controllerMethodName in the action of the form as shown below.

<form action=”controllerMethodName” method=”post”>



Stripe Payment

                   $ 11.50




Card Number






Email Address






Exp. Month





Exp. Year









                                      Pay Now





To integrate stripe payment gateway, we need two files. One is the library file and another is the configuration file. Both these files can be downloaded from the below URL.


After downloading the zip file from the above URL, we will get two files: one is README.md and another is Stripe.php

We need to create one configuration file and put it in codeigniter’s application/config/stripe.php and put the following configurations.

// Configuration options

$config[‘stripe_key_test_public’]         = ”;

$config[‘stripe_key_test_secret’]         = ”;

$config[‘stripe_key_live_public’]         = ”;

$config[‘stripe_key_live_secret’]         = ”;

$config[‘stripe_test_mode’]               = TRUE;

$stripe = new Stripe( $config ); // Create the library object

Copy the above code and save it as stripe.php in config folder so the path of this file will be like: <PROJECT_FOLDER>/application/config/stripe.php

Stripe.php file will be placed in our codeigniter’s application/libraries folder, so the path of the Stripe.php file is like: <PROJECT_FOLDER>/application/libraries/Stripe.php

The basic functions are defined in the Stripe.php.

Steps to integrate stripe in Codeigniter

Include library file


Recurring Payment Code

Below piece of code is used to create a card token

$card_data = array(

          ‘number’ => $this->input->post(‘card_number’),

          ‘cvc’ => $this->input->post(‘cvv’),

          ‘exp_month’ => $this->input->post(‘exp_month’),

          ‘exp_year’ => $this->input->post(‘exp_year’),

          ‘name’ => $this->input->post(’email’),


$dollars = $this->input->post(‘amount’);

$cents = number_format((float)$dollars*100., 0, ‘.’, ”); // convert dollar to cent

$tokenArray = json_decode($this->stripe->card_token_create($card_data,$cents));

$stripeToken = $tokenArray->id;

NOTE: We need to convert the amount into cents because stripe accept payment in cents. (e.g. $2.5 = 250cents)

We need to create a customer using below piece of code.

$card = $stripeToken;

$email = $this->input->post(’email’);

$desc = $this->input->post(‘description’);

$plan = $this->input->post(‘plan_id’);

$customerCreateArray = json_decode($this->stripe->customer_create( $card, $email, $desc, $plan));

$customer_id = $customerCreateArray->id;

$amount =  $cents;

$card = $card_data;

$desc = $this->input->post(‘description’);

$payWithStripe = json_Decode($this->stripe->charge_card($amount, $card, $desc));

We need to store the data into database and get the transaction id.

$transaction_id = $payWithStripe->id;

To cancel the subscription, use the below code.

$customer_id = $this->input->post(‘customer_id’);

$result = json_decode($this->stripe->customer_unsubscribe($customer_id,true));

$cancel_date = $result->current_period_end;

In the above function if we pass true then the subscription will be cancel at the end of the subscription period and if we pass it false then subscription will cancel immediately.

One Time Payment

Code is same as the recurring payment code. The only change is that it is not necessary to create a customer for onetime payment in stripe.

One Time Payment Code

Below piece of code is used to create a card token

$card_data = array(

          ‘number’ => $this->input->post(‘card_number’),

          ‘cvc’ => $this->input->post(‘cvv’),

          ‘exp_month’ => $this->input->post(‘exp_month’),

          ‘exp_year’ => $this->input->post(‘exp_year’),

          ‘name’ => $this->input->post(’email’),


$dollars = $this->input->post(‘amount’);

$cents = number_format((float)$dollars*100., 0, ‘.’, ”); // convert dollar to cent

$tokenArray = json_decode($this->stripe->card_token_create($card_data,$cents));

$stripeToken = $tokenArray->id;

$amount =  $cents;

$card = $card_data;

$desc = $this->input->post(‘description’);

$payWithStripe = json_Decode($this->stripe->charge_card($amount, $card, $desc));


We need to store the data into database and get the transaction id.


$transaction_id = $payWithStripe->id;

How to zip, save and download a file in codeigniter

In this article we are going to see how to zip, save, download a file in codeigniter PHP framework. codeigniter is a very popular PHP framework.  Codeigniter framework you can do many tasks very easily. Compressing and downloading or saving can be done very easily.

Zip Encoding Class

Zip class is used to create and download archives.  In controller you can initialize the zip class using


After loading the library we can use the zip object.


 Zip, Save and Download a file

The code snippet below shows how to create a zip file, save it and download it.

$filename = 'example.txt';

$filedata = 'This is an example file. Codeigniter zip class is used to zip, save and download the file';

$this->zip->add_data($filename, $filedata);

//Write the zip file to a folder on server with name. "example_backup.zip"


//Download the file to system. Name it "my_backup.zip"

Adding Controller in CodeIgniter

So if you want to zip, save, download a file in codeigniter then you have to do following

1. In Controller folder, Add a controller file and name it as, “Zip.php”2. Add a folder named “zippedfiles” in root folder.

3. Add the code below to the Zip.php file. 4. Run the code, a zip file is created and downloaded to your computer

Codeigniter controller code

  defined('BASEPATH') OR exit('No direct script access allowed');

  class Zip extends CI_Controller {

        public function __construct()

        public function index()
            $filename = 'example.txt';
            $filedata = 'This is an example file. Codeigniter zip class is 
                         used to zip, save and download the file';

            $this->zip->add_data($filename, $filedata); 
            //Create zip file on server with name."example_backup.zip"

            //Download the file to your system. It will be named "example_backup.zip"

Code Explanation

In code above We have created a class named Zip that extends CI_Controller. Inside constructor, that runs each time when a class object is created.  After calling parent constructor, we load zip library.

Inside index action we create a variable name $filename and a $filedata with content.

add_data method

$this->zip->add_data($filename, $filedata);

Zip object’s add_data method is called with $filename and $filedata params.

archive method


The code above, archive method of zip object saves file to a specified path.

download method


Finally the download method of zip class object downloads file to user’s computer.  The code above can be used in any of your project to zip and download zip archives.


source: https://programmerblog.net/

Create Multiple Database Connections In CodeIgniter Applications

In real world CodeIgniter projects, developers need to work with multiple databases at the same time. This presents a unique challenge to developers. Since this is a common enough problem, CodeIgniter offers a simple solution for it.

In order to use multiple database connections in your CodeIgniter project, you just need to create multiple configuration arrays that simplify working with multiple databases.

The Default Configuration Array

Following is the structure of the default Codeigniter database configuration array:

So in order to create another database connection, you should create another configuration array. This array has to follow the same structure. Here is an example of the array:

Connect to the Right Database

At this point, you have two databases in your sample project. To connect to a specific database, you must specify the database name. Here is the proper syntax:

Now if you need to work with the second database, you have to send the connection to a variable that is usable in your model:

Close the Connections

CodeIgniter does close the database connections after it determines that the code no longer need the connection. However, as a good practice, developers should close the connections explicitly. Here is how to take care of the issue:


In this article, I have discussed the problem and the solution to using multiple database connections in CodeIgniter projects. If you need help with implementing the idea in your projects, do leave a comment below and I will get back to you.

By Owais Alam

Pass Data From One Function To Another In Same Codeigniter Controller

A controller often comprises of several functions and often the module’s logic demands passing data between the various functions of the Controller. This is a common enough scenario in many Codeigniter projects. In this tutorial, I will demonstrate how you could pass data between two functions within the same Controller in CodeIgniter. In addition, I will show this data in the View.

pass data between functions in CodeIgniter

Here is what the Model looks like:


The Controller is as follows:


The following View shows the data that has been passed between the functions of the Controller.



In this tutorial, I have discussed how to pass data from one function to another in a Controller. You could easily extend this idea within your Codeigniter projects. If you need help, do leave a comment below.



By Shahroze Nawaz  September 27, 2017





Restlet Client – REST API Testing


Visually create and execute single API requests as well as complex scenarios. Automate the execution of your API tests and scenarios with our CI/CD plugin. Restlet Client is the most popular REST client available as a Chrome extension. It automatically updates itself, can be opened in one or several browser tabs and comes with a convenient browser toolbar icon.

  • Send requests

    Send requests and inspect responses

    Restlet Client handles all HTTP requests, no matter how complex. Requests can be made dynamic by inserting variables. Security and authentication are fully supported, as well as hypermedia and HTML forms. You can inspect HTTP responses and easily validate them thanks to assertions. Finally, an history of recent requests is always available to facilitate re-sending.

  • Automate your REST APIs

    With Restlet Client, you can combine multiple API requests into complex scenarios. Data can be passed from one response to the next request, creating functional scenarios that simulate real usage of an API by a frontend, a mobile application or any HTTP client.

    Orchestrate APIs
  • Test API

    Test the behavior of any API

    Whether you want to check that your API is behaving as specified, or you need to confirm how well third-party APIs are responding, Restlet Client lets you perform many sorts of API response tests such as on the value of headers, parts of the body or response time among others. Several environments can also be created including variables to increase the reusability of your tests.

  • Integrate API testing in your CI/CD toolchain

    When your API testing is part of a continuous delivery process, Restlet Client can integrate natively with Continuous Integration/Delivery (CI/CD) solutions like Jenkins, Travis CI or Circle CI. Thanks to our Maven plugin and native GitHub integration, your scenarios are continuously pushed and tested as part of your DevOps toolchain, improving the quality of your APIs.

  • Test reports

    Generate test reports for your APIs

    Restlet Client provides an integrated reporting capabilities at both the project and the scenario levels. The reports produced help you understand your tests progress in a synthetic way and print to PDF. You can then share those reports within your DevOps team or with business persons to show progress of an API implementation, of tests coverage or production status.

  • Make API testing collaborative and fun

    Restlet Client lets you store test projects securely in the cloud and open them from anywhere. You can share projects with your team members and collaborate over API testing, for example QA testers can define scenarios and developers bind them to actual API endpoints. API tests can also be imported from Postman Collections, OAS contracts (fka Swagger) or HAR files.

Don’t fear the dev

It’s amazing to notice that so many people are still afraid of us, developers. This includes our clients and the businesses. I will address the case of most of our clients in this post. Before diving into the subject let me explain myself. I mean by afraid the fact that client still believes in a few facts on us:

  • Expensive
  • Uncontrollable
  • Wizardry
  • Truant
  • Less trustworthy

And this list continues so so many other suspicious faces.

When a client manages to order a service from you and decides to hide. You should know that he’s running from you for some of these reasons. This behavior goes against the Agile Software Development principles. The Agile Manifesto suggest a people-centric approach. One of its core values is to focus on customer collaboration over contract negotiation. Instead of having just a deal sealed with a client you stay in touch more often. This leads us to the fourth core value of that same manifesto: responding to change over following a plan.

All this makes sense since the client will have the opportunity to follow up on every little step of the job. He can rectify any inaccuracy on the project specs. This avoids the developers from building and breaking down and thus saving time.

Based on my personal experience, I tend to build better when my client is collaborative. A client who follows up his project helps build a great tool. This can be applied to designing as well. In fact, this is the best field to applied agility.

Being agile provides several advantages to the developer, the client, and allows to build good products. Here are some of the benefits:

  • Less struggle to get started
  • Strong products
  • Sustainable development process
  • Stable code base and product
  • Time saving
  • High fidelity results
  • Predictable cost

This actually shows how useful it’s to keep in touch with your developers rather than running from them. Thinking that can save you will actually make you loose more.

As a developer or a designer, you should also know that it’s imperative for you to listen to your client often. This will help you to avoid doing things and coming back over and over again.

The point here is to save time and cost. Your client is the right person to tell you what exactly to do and how to do it. Don’t play the super-hero. Be the dump, follow the instruction and you will make happy clients.