My Way to PHP: Day 31-32 of 75

I decided to make less posts but longer one, i.e. I try to accumulate enough content.


Standardization, the Symfony Way

  • The debug component looks pretty good. It can be easily integrated in other PHP projects.

  • StreamedResponse class for streaming

  • HttpCache = reverse proxy written in PHP


Your code sucks, lets fix it!

  • Readable? Testable? Maintanable? Reusable?

  • Objects Calistetics = Exercises for OOP

  1. One identitation level per method

  2. Don’t use the else statement

  3. Do not abbreviate

  4. Keep your classes small (200 lines per class, 10 methods per class, 15 classes per package)

  5. Limit the number of instance variables

 

Good talk!


 

Updates Goals:

  • Learn Symfony2
  • Learn a bit more about MySQL
  • Write at least one web app using Symfony2 and its core components (templating, testing, forms, validation, security)
  • Watch one video per day on average

Progress status

In Progress

  • Watch one video per day on average [64 of 75]

My Way to PHP: Day 30 of 75

Performance testing checklist for Symfony2

Yeah, only the first few minutes were interesting. The other stuff was about tools you probably heard before. At the end there are some new tools.


I debugged my other laptop a bit more and it seems that the HDD is broken. I hope it’s only this. Let’s see tomorrow I’m going to a repair shop.


Updates Goals:

  • Learn Symfony2
  • Learn a bit more about MySQL
  • Write at least one web app using Symfony2 and its core components (templating, testing, forms, validation, security)
  • Watch one video per day on average

Progress status

In Progress

  • Watch one video per day on average [62 of 75]

My Way to PHP: Day 29 of 75

Test Coverage at Google

  • Code review before every commit
  • 0.5 to 4 hours until feedback
  • Automatic code review is integrated (testing, test coverage, etc.)

  • Goal 85% (with legacy)

  • Goal 99% incrementally
  • Mostly statement tests (was this line executed?)

 


I spent most of my day debugging my other laptop. It seems that the HDD makes some problems.


Updates Goals:

  • Learn Symfony2
  • Learn a bit more about MySQL
  • Write at least one web app using Symfony2 and its core components (templating, testing, forms, validation, security)
  • Watch one video per day on average

Progress status

In Progress

  • Watch one video per day on average [61 of 75]

The Art of Client Service

The Art of Client Service by Robert Solomon

art-of-client-serviceAnother beautiful book. It’s basically ‘How to talk to your client’. The author worked in the advertising industry and explains important bits of client service. If you work in the advertising industry in a customer facing position, e.g. account manager this book is perfect.

In other words, patients don’t file lawsuits because they’ve been harmed by shoddy medical care. Patients file lawsuits because they’ve been harmed by shoddy medical care and something else happens to them.

I found that a great example. He obviously talk about medical errors and that not all errors result into a lawsuit. The difference is that the patient forgave the doctor for making in error.

It’s no surprise that most agency people figure that if they do great work, everything else will take care of itself, including the relationships they build with clients.

There’s just one problem with this assumption: it’s wrong.

I used to think that great work would lead to a great relationship. Now I think the opposite: a great relationship leads to great work.

Great work entails risk. Most clients do not want to take risks; they prefer a safe retreat into the world of the merely good or, worse, the dismissively average. Still, if they are going to take that risk, they are much more likely to do so with agency people they trust. And trust is the very foundation of a great relationship. And that’s why I say a great relationship leads to great work.

n.c.

you should pay attention not just to your clients’ company goals, but also to their personal goals.

This is one of the neat tricks. Or like Kent Beck said it: ‘Your method doesn’t work if it doesn’t appeal to human short-term thinking’.

Generally, the right number of concepts to present is three.

I heard that over and over again. Normally, there are either two good concepts and one average one. Or two average ones and one good one. But I think there should be at least two ideas otherwise there is not informed tradeoff.

You and your colleagues won’t always agree. You will argue; this often is part of arriving at the right solution.

It’s fine to fight about the work in private, but once you’ve agreed on what to present to the client, get on the bus. When you are in front of the client, never throw the work, or your colleagues, under the bus.

n.c.

“The agency is going to work incredibly hard on this, but we’re going to ask you to work hard with us. We need you to be actively involved. We can’t do great work for you unless you help us.”

Then I ask the clients to outline what they expect from the agency and how they would like to work.

n.c.

While it takes emotional commitment to make creative work, it takes emotional detachment to make it better.

One thing said about creative types is that the difference between the good and great is accepting feedback. You need to detach yourself so much that you can accept critique. I’ve heard creatives defending their work after user tests. It doesn’t matter what you thought. If you want to make art, go to an art school. If you want to make ads you have to accept what people like.

Rehearsal helps you discover holes in your argument. It helps you anticipate the questions and concerns the client might raise. It polishes your delivery. It allows you to work out the hand-offs among the team members. It gives everyone in the group an opportunity to help strengthen each member’s part. It can build your confidence.

That’s something we did a lot. I loved to critique people’s arguments and ask them uncomfortable questions. Most hated it at the start but after around 30 minutes the liked it. And they started to love it after they could confidently answer a client’s hard question.

You are not only presenting work, you are representing the agency. Every presentation offers an opportunity to validate the client’s confidence in the agency, or conversely, to undermine it.

n.c.

Well before you make a presentation, check it for any claims it makes. If there’s an opinion that won’t stand up to a client’s challenge, make sure you go back and build a case for it. If you find you can’t build a case for that opinion, you’re better off keeping it to yourself.

n.c.

If you’re worried about getting the credit, I suggest you think about another line of work. As an account exec, your job is to give the credit—to your clients, to your colleagues—not to take it. Often, the only people who truly appreciate what you do are other account people.

n.c.

Account work is fieldwork. You need to visit your clients regularly, no matter if they are on the next street or in the next time zone. Phone calls and e-mails don’t replace face time.

Also culture, appreciation, etc. It shows that you actually care.

Don’t wait for trouble before you get off your butt. Spend time with clients when things are going well. Most clients have little patience for account people who only show up when something goes wrong. If that’s the only time you see your client, then you won’t have forged the relationship you need in order to fix the problem you’re there to address.

n.c.

“I love your work; the agency is very creative. But you guys are just too hard to deal with; everything is a fight. If I have to choose, I’ll take an agency a little less talented but a whole lot easier to work with.”

n.c.

When a client makes a request, let alone a demand, your first, and understandable, instinct is to say yes. The more senior the client, the more urgent the need, the more strident the tone, the more you want to comply on the spot. Don’t do it.

Remember: Lead your client.

Even with seemingly simple requests, a unilateral yes is not the right answer. It does a terrible disservice to everyone—your colleagues, yourself, and most of all, your client.

n.c.

“Here’s what we can do; it’s not a perfect solution, but does it address your need?”

n.c.

“Give us the problem, not the solution. Ask the question; don’t give us the answer. Let us solve the problem. That’s what you hired us for. We want to help you get to the right place.”

Root cause analysis.

I made a commitment to myself that I would always advise clients up front about the cost and timing implications of their decisions, so they could make fully informed decisions.

Also sometimes called Request for Change. It’s basically a feedback about a client’s option. If he wants X then you reply ‘Sure, we can do X and it will cost Y and put the deadline to Z’.

Here in the words of the author:

When a client calls with a change or a request, it can make you feel a little uncomfortable to say, “Let me figure out what the change will cost and if it will have an impact on the schedule, then get right back to you.” But you owe it to your clients, and to your agency, to do exactly that. By doing so, you avoid the perils of “scope creep,” when a project grows beyond what initially was planned. And you avoid any after-the-fact surprises that result in painful consequences, ranging from a loss of money, to a loss of trust, to a lost account.

When something goes awry, get to your client with a full explanation of what happened and why. Whenever possible, be prepared to outline one or more ways to address the problem. Move quickly; you want to deliver the bad news to the clients. You don’t want them to hear it from another source.

n.c.

The lesson? Do not assume anything, and never, ever be as glib or as cavalier as I was about money. Check and recheck your claims, then check them again. Above all, remember your own advice. And by God, follow it.

I said it. I won’t stop repeating it.