Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: What is something you do for clients that consistently blows them away?
402 points by fapi1974 on Dec 12, 2016 | hide | past | favorite | 273 comments

Most of these seem to be very on the side of "I'm a company", so as a sole developer what I like to do for clients is implementing sockets into their apps.

Adding sockets for, say, the 3 newest logs they get in real time. Or if they have anything that maps to a graph/app-overview just make sure that will always update in real time. It's not a huge time investment for me. Customers usually never request it specifically. But I've found they are blown away when they see how everything is updated in real time. It just makes the whole thing feel 'alive'.

Another thing which I don't personally love, but I do because I understand industries have differences is just exporting whatever can be exported into .csv files or .xls files where applicable.

All in all, I work in consulting. The code I write is meant to make the life of people easier, I want to make sure they get that when possible. A big part of why I'm able to do this is that I have a lot of creative freedom to do whatever I want so long as I'm getting stuff shipped. So huzzah for comprehensive management as well!

Oh gosh yes. Companies love their CSV exports! I think the reason is that it lets them make glue - they can take data from something, play with it, analyse it, produce graphs, using tools they understand (almost invariably Excel), and sometimes then import into another system.

Yes, my employer's customers like their CSV imports too. If you're looking at a big data entry feature and they ask you how the interface works and you say "you give it a CSV file with these columns", they're happy.

You're lucky. We always try to explain that CSV is a mostly-clean format while XLS and XLSX are a mess.

Yet, most of the time customers insist on XLS export, and we are happy if they at least acccept XLSX instead.

But CSV isn't a mostly clean format. It's a collection of dozens of formats, some of them clean, some of them not, and with no way of labeling which one of the dozens you have in the file itself. Whereas XLS and XLSX, for all their binary cruft, are at least capable of unambiguously (AFAIK) representing, say, a string with a quote and a newline in it. (If there are encoding issues, well, same with CSV.)

I suspect you're thinking of something like "CSV as outputted by Excel with the default settings", which may be clean and unambiguous, but is far from the only CSV in the world.

For that reason (and I'm just saying this generally, not targeted at the comment I'm replying to), always use the most mature CSV output library you can find for your stack. Never write your own CSV export code by bashing strings together unless you have no other choice because you're working in some stack that doesn't have or can't use existing CSV libraries.

(You can ignore the RFC for CSV too; it's not "wrong", it's just one particular flavor that was declared long after the horses had left the barn, learned to form a horse civilization, discovered the atom bomb and bombed themselves back to being plain horses again. It barely rises to the level of being "advisory" in practice.)

XLS and XLSX are neither clear nor unambiguous and I would take 12 CSV formats over either any day. I actually haven't ever met anyone who seriously had to extract data from XLS/X frequently that didn't revile it for its ambiguities. Not to mention the ways that the application munges the user input prior to saving it, leaving the biggest ambiguity of all, what the heck is ACTUALLY in that cell.

EDIT: I will add that EXPORTING to XLS/X is usually quite straightforward and makes users happier than getting a CSV often times. Until they start wanting to get crazy with template design and then you get into Excel styling application and you're back to hating it all over again.

The single biggest problem is date / time formats.

Excel encodes dates and times as floating point numbers. The date / time-ness of a cell is encoded in its format. Some of the formats are hard-coded, some float depending on locale, and some use explicit format-pictures embedded in the styles.

But of course there's no guarantee that the user has formatted a cell with a date as a date. Sometimes the user has pasted a US-format date into a copy of Excel running in a UK locale, so dates that fit have day and month swapped, while dates that don't fit show up as strings. This is non-trivial to handle in the general case. I've had to add customer-specific workarounds for this case in particular.

You've unleashed a flood of horrible memories of reading XLS and XLSX files with dates in. Thanks a bunch.

You'd think when Microsoft came up with their new shiny file formats they'd actually make them new and shiny and good.

But nope.

Actually, there are some commercial libraries that make working with even complex Excel spreadsheets pretty straightforward. I've used Aspose.Cells a lot and was very happy with it:


[NB I have no connection with Aspose, just been a happy customer for many years].

Let me create a headache for you: there is no "CSV as created by Excel with the default settings". There are a lot of different ones for each language setting of Excel, and they are incompatible. So if you're going to work anywhere but the US or even have just some foreigners in the US as your users you're in for a total nightmare doing "Excel CSV"

The worst thing Microsoft ever did to Excel was even translating the formula functions in different languages. So SUM() isn't actually called SUM() in half of Europe...

Evil pro-tip : you can output a csv file and name it "foo.xls". Excel will open it fine, with just a click-thru complaint dialog that no one will read anyway.

Israeli bank websites export an HTML table and call the file "foo.xls", and it works quite well.

I don't talk about XLS or XLSX, I just say Excel and give them SpreadsheetML files.

> Another thing which I don't personally love, but I do because I understand industries have differences is just exporting whatever can be exported into .csv files or .xls files where applicable.

Working on an in-house application, this has been one of the most common types of requests. "Can we add this field here to the CSV export?" It's a three-minute task for me, but a huge time-saver for the manager of the team using the application and thus highly appreciated.

But then exporting the CSV into Excel and doing something becomes part of the workflow. That could possibly be better done in the application.

Not unless your application aims to encompass the entirety of running a business. Otherwise it's just plain user-hostile greed.

Personally, I do love whenever applications allow to export data and lack of such feature is IMO strong negative.

It's also much more efficient for me as a developer to offer an export interface instead of having to implement all the reporting functionality myself.

You are right I don't want to be user-hostile greedy. Its a fine line.

You can't stop it. If you don't have export then you will hear about your clients copying and pasting to Excel. Much better to add a csv export and high-res download button for all charts and graphs.

By the way, I've had lots of success with chart downloading by simply copying the svg element into a request to an svg to png converter.

Often it already is. Export from here, import to there. SaaS is more and more common, so the glue needs to get better.

I'm thinking about starting a consulting company next year. I've been in an engineering role for over 10 years, but I really want to move into a role where I'm not selling my time in exchange for code, but rather selling the value my code creates.

I'm curious how you got your first few "gigs". What should the sales process actually look like? Did you cold call, or did you have enough established relationships first? How do you typically agree on a contract, has the customer come to you with needs, or did you ask them for problems first and propose some solutions, and they agreed to them?

If you really want to reap the value your code creates start an internet-like business with the code that you write. All the value is yours! :)

The first gig came to me. The second was a result of the first. And it goes on from there. If you network then someone will approach you to help them with some code. Do a great job and the second will start. After you do a few, then worry about sales and marketing.

Can you say a little-more about the "sockets"? How do you implement this? I'm not even sure exactly what you mean, do you have an example? It sounds like a fun feature to implement so I'd love to hear more. Thanks

Have a look into websockets. They are used to create an always open connection between the client and server. Meaning your application will not need to continually poll the server for updates.

For notification type stuff (i.e. predominantly one way, server > client) Server Sent Events/EventSource is IMO a simpler, more appropriate solution:

It works over regular HTTP and has a built in method to tell the server the last seen message (i.e. to allow replaying old messages), and exposes the event type (i.e. the event: field in the event block sent from the server) for use with addEventListener in the browser.

It's supported by all non-MS browsers, and because it works over regular HTTP, it can be polyfilled in IE/Edge using long polling XHR.

How would you export it to xls? ActiveX Excel controller ("in my time this was called COM", etc)? Open source library?

One useful trick is that you can rely on the headless version of LibreOffice to do the conversion, here on Mac for instance (but also work on Ubuntu with a slightly different call):

    /Applications/LibreOffice.app/Contents/MacOS/soffice --headless --convert-to xlsx file.csv
Note, though, that some conversion errors can still occur (I've seen one personally a long time back).

This works for many other formats, too: anything to PDF, for example.

A resource hog, though - had to close it off into its own container, lest it gobble up all available RAM.

For Python, there's XlsxWriter[0] (creation of new excel files) and OpenPyXL[1] (creation of new and manipulation of existing files).

[0]: http://xlsxwriter.readthedocs.io/ https://pypi.python.org/pypi/XlsxWriter

[1]: https://openpyxl.readthedocs.io/ https://pypi.python.org/pypi/openpyxl

For anyone using Ruby I'd recommend the (open-source) axlsx gem, I've had great results being able to treat Excel generation like I'm rendering a view.

I've had luck with that one too for the times I actually need a real Excel file.

For Java there are at least two good solutions: https://poi.apache.org/ and https://github.com/plutext/docx4j/ (or JExcelAPI)

+1 for Apache POI; we actually used that at Google for exporting XLS reports for ads.

tablib[0] is one option for Python. There are quite a few libraries that handle export. Excel files (and other Office) file formats are just zip files containing XML. For a while now, this has been an open standard[1].

[0] https://github.com/kennethreitz/tablib

[1] https://en.wikipedia.org/wiki/Office_Open_XML

I've found the Python pyexcel library to be the most flexible option to read/write Excel files. https://pypi.python.org/pypi/pyexcel/0.0.9

Curious if you've tried tablib. I haven't used either, but knowing kenneth_reitz tablib is quality :)

I've used openpyxl a lot for these kinds of tasks, and found it really useful.

One nice feature with openpyxl is that it can work together with excel template files. So I can create a template in excel with whatever looks and features I want and then use openpyxl to populate those templates with data.

HTML table in a file with a .xls extension.

One of my favorite old tricks. Works with renaming a .csv to .xls.

Newer versions of Excel will warn the user of possible file corruption if they try to open an .html file that has been renamed to .xls. The file can still be opened but the warning is bothersome.

An alternative is to make a .xlsx file with Excel, then unzip it. You'll get a folder with text files and then you'll see how to generate your own.

PHPExcel for, you guessed it, PHP. An order of magnitude less hassle than CSV ("the files you generate are wrong, but only on some computers! Fixitfixitfixit!!!"), and surprisingly powerful.

Note: Last time we used it for large data report generation results were slow and consumed huge amount of memory.

Depends on the amount of data, calculations, and formatting. For "output this array of arrays as XLSX instead of CSV", I find its current performance acceptable.

Most reasonably popular languages will have platform-independent open source read-write libraries for Excel. I've used the Python version of this with minimal pain.

Create it as a report in SSRS, then they can export to XLSX, PDF, CSV, etc

I've used this a couple of times: http://papaparse.com/

> implementing sockets into their apps.

are you talking about websockets for web apps? It's not always easy to implement and it requires some extra libraries and deployment setups. Is it really that easy to add for you as giving client extra candy in post order?

quite nice yes, you always have to think people that will monitor statistics etc and how long it will take them to do so. If you can make their life a lot easier thats a + and of course they'll appreciate it.

+1 for CSV export.

For large datasets I've switched to using HDF5 files. They are easy to use from Matlab and a few other applications engineers typically have already.

Whenever I find myself at my desk not knowing what to fill the next few minutes with, I tend to call a more or less random customer - the ones who USE our products, not the ones who procure them - and ask them what they think suck about our current offerings.

Most educational, and it has resulted in a number of improvements to our product line (subsea handling equipment - used for deployment and maintenance of subsea wellheads, submarine communication&power cables, &c, &c.)

They all expect you to ask what feature they like best; they're always baffled when you rather ask where we've screwed up - and more than happy to help! :)

This is very cheap and effective market research.

I used to work with this programmer who would get free beta testers by doing this.

Set up a meeting with endusers in one of our training labs and tell them they can complain about whatever they want. Then walk them through a 15-minute set of steps for whatever change we're going to roll out.

Not only do you get great feedback on the product as a whole, they'll inevitably find ways to break your new thing within five minutes. Literally a few hours of two analysts' time and you might avoid dozens if not hundreds of man hours spent fixing things. It was beautiful. And just like you said... the customers are amazed that you want them to complain. They love it.

In my business line, we have two kinds of users: the competent ones who have useful complaints but never seem to break anything and the incompetent ones who break everything and have no useful complaints. I try to get a mix when I want feedback on an upgrade or new tool or for more formal UAT. The former group shows me flaws in the data model and UI, the latter shows me the flaws in the business model.

I used to write software tools used by Amazon associates inside the warehouses (fulfillment centers). I loved meeting the users and asking them 'what sucks about this?'.

A few would be too freaked out by some manager-looking-type asking them any questions. Some would say the usual stuff that we knew but couldn't help. Some would point out a few small annoyances that we would try to improve. Rarely, one would tell you things that blew your mind, like holy shit why didn't we think of that? I kept going back to try to repeat that experience.

One thing we try to do is get non-customer service folks to sit on customer calls. It's amazing what can happen. Like one time, we had a CTO of an online dating service sit in on calls from customers for awhile. After one particularly grueling one, he goes "you guys need to give this woman's money back." We go "we can't, there's a policy against refunds." To which he responds "but she will never get a date (for a bunch of reasons not worth going into)." And we go "exactly...so maybe we should change the policy!" New policy the following week. Boom.

My answer here is more relevant to an e-commerce company but the basic idea can be adapted to any company.

So, back in 1994, my dad and me started an ecommerce company (bikeworld.com) that sold bicycle parts online. It was an extension of his brick-and-mortar bicycle business and I took a couple of years leave from college to help him build it.

He did one thing early on that generated amazing word-of-mouth support: send a little treat in every order box. Our company was based in San Antonio, TX and Dad decided to include a little local flavor with each order to make us stand out from the few competitors we had back then (incumbent mail order outfits). At every good Mexican restaurant back home, they sell Mexican chewy candies at the cash register when you pay after your meal. My dad and I loved these things so he went to the manufacturer in town and bought a few cases of them. They were really expensive, like $0.50 each, and it became a big expense but the customers went nuts. Dad printed up a little card that he put in the bag with the candy, explaining the tradition and thanking them for their business. It worked well--we quickly became one of the largest online bicycle stores of the late 90s.

Thanks for the story. Advanced Circuits (aka 4pcb.com) includes a package of microwave popcorn with every prototype order—since they know you will be up all night when the package arrives.

They used to (maybe still do) have a pizza & pop special for students. It was something like $199 to print 4 copies of your PCB and you get a large pizza and 2L of pop from Domino's Pizza. I got it as an engineering student in Canada, and was disappointed to learn upon delivery that the coupon could only be used in the USA. I had to wait to use it til my next climbing road trip to Red Rock Canyon.

Yes! I will never forget this and definitely made me pick 4pcb over the competition back when I was a EE.

Ha, I should have read down a few comments, I didn't even see yours!

The bag of microwavable popcorn that I get from Advanced Circuits in CO did get me to mention them to other people. It's a good strategy.

Goulet pens, a favorite in the fountain pen community, includes a tootsie pop with orders. It's super nice of a touch, even for a person who doesn't dig them.

I love Goulet pens and Brian is doing fantastic job.

No one digs them. It's no longer the great depression.

I am actually down to about a quarter-of-digging-them.

I love the flavor, but I don't like to eat a whole one... just for nostalgia..

I happen to. You may want to use use a less universal quantifier.

Sweetwater sound still includes a handful of smarties, and other similar basic candies with every order. I always enjoyed this, even when I didn't want to eat all the candies. Its just fun.

Back in the late 90's and early 00's I did the same thing. We had an online record store, homebass, and we would give free records (mostly promos) to our best customers. I would also include a hand written note thanking them for their business.

I put mints in my ebay shipments

We call them back.

I run The Human Utility (formerly the Detroit Water Project) and we help folks with their water bills. When they reach us, they're used to dealing with other social service agencies that aren't very responsive and don't do something as basic as ever calling them back. We do and we find that people are grateful even for that.

Edit: People are happy to hear from us regardless of whether we actually help with their bills. If we say we can't, at least they know to try elsewhere and can do so fairly quickly.

I have to +1 this. Whilst I have never specifically dealt with Human Utility. A couple of times when I had an inquiry or an issue, I have been offered to be called back later rather than wait and eventuall call back myself. Each time I appreciated the phone call.

Something so simple, yet great for customers!

When I did freelancing, I charged a bit more than I felt I should... but went above and beyond. My hourly rate may have been high, but I spent many "non-billable hours" making sure everything worked great and any changes (their fault or mine) were accounted for.

I did a few jobs where someone else controlled the billing, and kept us on a tight schedule. Every hour was billed. We were "fired" (AKA contract not renewed) every time. Yet when I went above and beyond, I had no problem getting and maintaining awesome clients.

As someone on the opposite side now (hiring freelancers), I've realized the thing I value most: the freelancer gives me less work, not more. It may seem obvious, but when I was on the other side, it wasn't. When I hire freelancers now, I value one overarching quality: to make my life easier. I don't care about price or hours (within reason), I care about not having to think about it.

I'm going to print that on a tile: "The freelancer gives me less work, not more."

"I don't care about price or hours (within reason), I care about not having to think about it."

Brilliant, thank you for your comment!

The best freelancers sell solutions to pain, not hours.

Worth remembering.

I never disagree with a client. Even if I internally feel it won't work in reality, I always start my response with "That's an excellent idea you proposed, let me try if it works and get back to you". I come back after a day or two as to why the proposal won't work (if it was a bad idea to begin with) with sufficient data. Client is happy you that you considered his proposal and you've avoided a potential standoff that could've existed for the same duration !

I'm not sure that this blows the client away tbh. I had much more success with being critical but within reason. If a client suggests a feature I do not believe will work or is not worth the time, my approach is to agree that this is technically possible and it will take X amount of time with Y drawbacks (e.g. harder to maintain in the future, manual effort later on). And then I'll tell them my opinion about it from a business perspective. I don't push in any direction and make it clear that if this is what they want, I'll get to work right away.

But then again, I only work with clients who appreciate feedback and don't think of me as a person turning coffee into code ;)

I'm with you. I view my clients as partners with whom I can speak openly--without sugarcoating, dumbing things down, or worrying about their feelings.

It may feel uncomfortable to say "no" or "that's a bad idea" to the person who's paying you, but in the long term it's better for the relationship. After all, they're paying you for your expertise, not to fulfill their every wish.

I caught my Macro professor doing this and it works wonders. It really encourages people to ask questions, even if they might think they are inane. He always started with a ~sincere~ "X, that is a really good question." It makes everyone feel really welcomed to give their input no matter how small. Even though it might not be "sincere" at all it still feel like it is. How would you feel if you asked a question in class and the professor said: "That's actually a really stupid question but I'll answer it anyway."

Good job.

My biology lab instructor (she was a grad student at the time) started the first day of class saying "don't worry there are no dumb questions." About 30 minutes into the lab someone asked a fairly unintelligent question and the instructor goes "well that was a dumb question.." I think she learned her lesson after that though. You gotta start somewhere!

In my experience, the _stupid_ questions are the best ones, provided they are on topic. They hint at an edge case or something not covered deeply enough.

Depending on the context in which you do this, you've also just wasted 2 days of billable time. If you know it won't work from the start, you're not providing value to your customer by fake considering it.

Good counterpoint. Obvious errors you should not spend much time on. But providing some references to why is probably better than simply stating "no".

And I don't think the parent comment suggested to fake work and bill for work not done.

We should always be honest.

I don't think the responder suggested to fake work either, but it's still 2 days wasted and no work done.

It's not two days wasted because you have other clients. It's like concurrency around an IO request. No time wasted.

Presumably he is working on other things in the meantime.

You assume that your customer values things like you do. If the customer is happy he'll feel better; the fact that is happiness is economically viable is an entirely different matter.

Interesting. We usually say that a good consultant should be senior enough to stand up to the customer and at least be able to inquire the basis for something. And also disagree when the customer is clearly wrong. But your way of doing it clearly removes the initial head-on.

One could always reason about things. But to promise to investigate (and then deliver) looks (and is) professional.

But I will never say yes when a customer suggests to "encrypt dsta using the cipher md5". Yes it has happened. More than once.

So, to follow the diplomatic approach here:

Client: "Encrypt our data using the md5 cipher."

Consultant: "I will investigate the feasibility of this."

... two days pass ...

Consultant: "I have considered your proposal. I believe we should encrypt your data with SHA-256. md5 is insecure, here's several references. SHA-256 is much more secure and more popular. It is a NIST standard, and just as cheap."

Client: (probably) "OK, if it costs the same and is more secure, sounds good to us."

Ignoring the encryption/hashing problem, what happens if your client is moderately technical and also researches the problem, and finds the same answer in 5 minutes? You look like you're incredibly slow (or over-billing) if it takes you two days to come back.

Don't assume your client is an idiot.

I'd say that really depends on how many clients you have. At my company we have ~150, you can't always get back within 24hrs.

I think that, often, there's confusion between someone's position and their interest.[0] It's easy to think that if they asked for "MD5", they must want "MD5", right?..

An easy illustration of this is someone with a runny nose asking you for a "Kleenex". You have tissues of another brand, so you tell them you don't have a Kleenex. This is being an asshole who hasn't done any Physics but watches too much Big Bang Theory and wants to be "like logical/analytic". That kind of stuff is only cool when Paul Dirac does it, whom the asshole knows nothing of. Of course we laugh because "nobody" would act like that..

"MD5" is "Kleenex". The runny nose is their concern for security. "Tissue" is "something to clean that runny nose.. or shine their shoes". They might want the tissue to do something else than clean their nose, because they have a handkerchief for that.. So our assumption they want to use it to clear their nose is wrong.

If their only options are "no password-hashing" and "that crypto thingy, what was it? DM5, MD5 or something?", choosing MD5 is actually a sane decision and request.

The underlying interest here is "security", communicated with a request for "MD5" (position) which makes them seem clueless to someone with a broader view and who must, in my opinion, recognize their request for what it is.

One could ask for the specific reason they chose MD5 and not something else? They may be unaware of other options, or give constraints they were trying to satisfy with that choice.

Someone who says the site must be in PHP might mean they want a "dynamic site". Someone who specifies "Bootstrap" might mean "responsive", etc.

We clear assumptions by asking questions, and noses by blowing them.

[0]: http://web.mit.edu/negotiation/www/NBivsp.html

Exactly. To me a senior consultant should be able to spot the obvious error and then focus on trying to understand what the customer need and move the solution to something that meets the intent.

If it is confidentiality the customer need, provide good solutions to that. But check if confidentiality is really the thing needed. Quite probably, authentication and integrity protection is what is really needed. So AES in CTR mode might not be what the customer should want instead of MD5, but possibly AES-GCM, AES-CMAC or even a Ed25519 signature mechanism using public key.

Consultant: Oh and you'll never get your data back. Client: Ok.WHAAAAT?

Except you can't encrypt with a hash function.

Actually you can use a cryptographic hash function such as SHA-256 (or MD5, but lets not go there) as the core of a stream cipher. Basically stick a seed (key) combined with a counter as input to the hash functiom. Use the output as the keystream. Stream ciphers such as ChaCha are basically block based PRFs that operates like this.

Of course the performance would be silly compared to dedicated functions. ChaCha20 has less than a third the number of iterations compared to SHA-256. And each iteration is much faster.

Good thread: http://crypto.stackexchange.com/questions/48/is-it-feasible-...

I once saw that particular confusion in a security audit report that a company was using as part of their sales materials.

I did flag it up as indicating that there might be something a bit fishy about the security audit if they made such an elementary error but I suspect the CEO (multi billion pound company) had already made the decision so what I thought was irrelevant :-)

This might be "fix my plumbing with a wrench", you can't, you also need a replacement pipe, but that wan't what was meant, more like "utilise a wrench in the fixing of my plumbing"...


Neither of those are encryption ciphers. the SHA-256 suggestion doesn't buy anything.

In the events that this have happened I have directly, as diplomatically as I can be, explained that (1) MD5 is not a cipher, but a hash function that does not provide confidentiality. And (2) It is not a hash function one should use . Ever. Never. In a million years. Or more.

And at this stage start to enquire what security the customer think their system/product/service needs and try to move forward from that point. And we usually also talk about MD5 and its brokenness. Than if a secure hash function is needed, there are several good ones to choose from. And if they really don't need a secure hash function, there are others, much faster hash functions to use.

The point is that sometimes things need to be handled directly and up front. This for me is one of those things.

I was just thinking about this an hour ago. I work in more of a visual design field, but the issue of customers "being wrong" seems pretty universal.

There's a sentiment that, if you hire an expert, you should do what they tell you to do - why hire them in the first place if you don't trust them - and that's valid in some ways. Still, if an expert can't communicate to their clients why they think an approach is good or bad, it seems to me something's very wrong with the process.

> We usually say that a good consultant should be senior enough to stand up to the customer and at least be able to inquire the basis for something.

Totally, but there are good and bad responses. I usually go with something like, "It seems we're not capturing or making some important information available, so can you describe the core problem that your suggestion solves so we can better understand how to implement it?" Usually a better solution arises from the ensuing back and forth.

Everyone solves problems by drawing on their domain of knowledge, and customers' knowledge is simply more limited than a software developers' when it comes to computing. The software developers' domain knowledge is much more limited when it comes to the customers' business though, so some humility on both sides is warranted.

If someone recognizes an impractical or suboptimal idea, I prefer it to be called out immediately for discussion so we can move past it to a better idea.

It helps if clients think like Darwin:

"I have steadily endeavored to keep my mind free so as to give up any hypothesis, however much beloved, as soon as the facts are shown to be opposed to it."

That might be better than what I do. I disagree, perhaps not often, but there are bits of functionality that I think just aren't justifiable/cost-effective. So I try and dissuade them. Although sometimes I might be a bit too vocal. That said, I do try and say that, at the end of the day they can definitely just say "shush... Just build it" and I will. But I'm honestly trying to help them build the best product we can, as effectively as possible.

That's a classic. While working on the David, Michelangelo had the unwelcome visit of Piero Soderini (statesman, sponsor, etc) who suggested that the nose was too thick.

Michelangelo feigned reworking the nose and some say sprinkled a handful of marble dust to make the trick credible, then asked Soderini if he liked it now. He said it looked better.

A very early example of adding a duck. (See http://bedtimestoriesforengineers.com/the-duck/ )

This is a good tactic in the workplace as well when dealing with management and internal customers.

So disingenuously humor the client for a day or two before shooting their idea. Honestly, if I was your client and this happened a few times, I would start to wonder why you lack the expertise to immediately know ideas won't work.

The client is not talking for the sake of talking.

They are expressing a desire, a need or a want

Almost always you can dig down to their motivation and get a better idea of what they are _really_ after, even if the clients proposed "solution" is technically impossible.

Your tone says something about your situation.

I'm not sure if you understood me. I don't think it's a good idea humor your clients. In fact, I think if could hurt you if they ever get wise to you bullshit.

and it's billable!

Here's an internal facing one: We send an automated greeting from the CEO as part of onboarding, but he actually sees and replies to every customer response, in both english and spanish, and forwards the more heartwarming ones on to the entire office.

It's pretty cool to get a handful of emails every day from actual customers who are very grateful for the work we do.

It also changed my opinion on the "canned CEO greeting". As someone who knows how those are built, they always struck me as annoying and disingenuous sales gimmicks, but our customers are significantly less tech savvy, and a huge number take the correspondence at face value and actually start a real conversation with the CEO.

I generally respond rather negatively to automated emails or chat messages that seem human but are not, and I've been thinking of how I would approach this if I had a company big enough that automatic greetings are 'necessary' (or desirable, at least).

Perhaps one solution is to use a clearly non-human company 'avatar' character specifically for some of these interactions? A robot or pet character?

A few saas products do this and I love it. It feels honest.

I rather like Trello's little dog informing me of updates.

How about a clip?

only if it has giant eyeballs and doesn't disappear no matter how hard you try to make it go away... Otherwise, it just seems disingenuous.

Or perhaps some purple creature?

I think the key here is that replies actually have to go to the CEO.

I've seen way too many companies implement this where any replies are actually just sent into normal support channels.

exactly - i don't care that it's a canned initial email from the CEO if I can reply to him directly.

I did the same for new account registrations on my site. The humorous side effect was actually LinkedIn. That whole thing where you can auto invite everyone on your contact list... led to me getting several connection invites a day from users I had never personally met.

I do hardware engineering work for hire and one of the things that always works is having some documentation ready at the first formal meeting.

Specifically, I have a skeleton requirements document that I put together from our previous correspondence (there's always a phone call, few emails, etc.) trying to flesh out their project needs. It doesn't matter if this is incomplete, inaccurate, or any other in-word. It shows that I'm a professional who has tried to understand the problem, the business case, possible solutions, will approach it methodically and like a real engineer, and that I know what I'm doing.

Those 10-15, printed, very real, pages, mostly just ?-marks, have written me more contracts than I can count. It takes about 1-2 hours of work to write things up, but I've never - not once -, had a potential client fail to notice and be impressed when I show up and have a presentable document already underway.

This is generally the way to win contracts, grants and impress people. Going over their requirements carefully, whether written or verbal, and gearing your proposal directly to what they say always impresses. That's why changing project managers at the beginning of or before a contract starts is a big problem.

So important to have requirements set up for the less "agile" world of hardware, but really like the idea of having a framework set to go. Have worked with a few contract agencies at past co's and that would have impressed the hell out of me.

This is always as a solo? Or as a small engineering firm?

If there's a Tarsnap outage because I screwed something up, I give Tarsnap users a credit to their accounts... without waiting for them to complain.

Apparently this is unusual. I can't imagine doing it any other way; I mean, who wants to deal with thousands of emails from customers who are owed account credits?

I don't use tarsnap, but I always thought it was a fantastically designed product.

It is wonderfull product, I love simplicity of it.

One question though, why don't you allow me to set up recurring billing? Eg. if credits go below 10€, charge 10€.

I got an email last week that I had only $ 0.115755044102126754 left in my account. The last time I paid was $10.00 in June 2015. I'm guessing that I'm fairly representative of most of Tarsnap's customers; for $10 charges once every year and a half recurring billing seems a bit silly.

Storing credit card numbers is annoying (unless you don't care to do it right, but it's pretty clear he does care). On the other hand, there are payment processors that will handle that sort of thing for you, for a fee.

Typically you're going to be storing tokens from e.g. Stripe these days, and not raw cards. Major card carriers provide the same service too. Still worth doing well and securely, but much less risky

Hmmm I guess someone could make a service to help you subscribe to tarsnap using stripe. They'd have to keep track of your password though.

Consistent updates(mostly daily) on email with screenshots and quick short screencasts. A lot of times a particular feature takes more than a day to complete and be pushed to some server for client to actually see what it looks like. But if I create in progress screenshots and videos from my dev machine it always impresses my clients.

That's brilliant and super easy. I hope a lot of people read your post.

thank you :)

Yeah, always taking screenshots + Screenflow (on Mac) or Camtasia / SnagIt (on Windows)

Appreciate the recommendations. For Windows I recommend ShareX: https://github.com/ShareX/ShareX

Tools like these also make it easy to create documentation that is a step-by-step walkthrough of each process.

There is also an entire class of tools designed to screenshot automatically to track work: http://alternativeto.net/software/timesnapper/

True that! Clients feel lot involved in the whole process of development this way.

SimpleScreenRecorder on Linux

These are a few things that have gotten me praise over the years:

1) Keep emails short. I set a 200 word max on all emails. If you can't say what you need to say in 200 words, schedule a meeting to discuss. If you have to send long documents, send a 2-3 sentence summary. Tell them what you're going to tell them, tell them, tell them what you told them... in 200 words. (=

2) Keep detailed time records and make them available to the client on-demand. They paid for it, might as well show them what they are getting. Be honest... if your team wasted 4 hours trying to make sense of a BS email from the client... make sure they understand that.

3) Being on time and inclusive; inviting them to daily standup meetings with the team, and posting notes from those standup meetings in case they (or anyone else) can't be there. Easy with a Google Sheet to just type a few notes each day during standup. I don't have any tools for the team that the client can't access, or hasn't been given a rundown on how we utilize it.

I like the 200 word thing. I'm gonna give that go. :)

Damn. You're hired!

Call them out when they're wasting money on marketing. This has been in my "blog post drafts" folder for a while, but the short version is: One of the first things I do on new projects (I'm a customer acquisition consultant) is review the running campaigns and their results from the past few months. Not clicks—which is what all the dashboards show you—but actual results like signups and new customers.

Almost always I find money being drained away. There was the time when a company targeting Python developers was losing its AdWords budget on snake enthusiasts. Another time a mobile analytics company was spending thousands on people searching for free apps. In another case a company whose ads went to a 404 page and nobody realized. Also recently I found that an SEO agency was falsifying results to one of my clients (the contract was quickly terminated).

I don't know if "blown away" is the correct phrase. It's more like a brief moment of embarrassment followed a huge sense of relief that a budget leak was found and plugged.

PS - The companies described here have successful products made by brilliant people. This is more a symptom of hiring the marketers who don't have the skill (or intention) to demonstrate the results of their efforts.

One thing we did a few years ago when we found that a customer didn't use revision control was to bring in a server. A small PC with Linux, Subversion and Trac. We not only could explain the benefits of RCS, but the customer could see changes, att issues, get them resolved etc. When the job was done, the customer kept the machine.

I occasionally bump into old customers and many still run the same server. All of them are today using revision control systems.

So basically we didn't just provide a tech solution, but also brought in methodology and free tools to implement that methodology.

Do they have a backup of it? :-)

Good questions. ;-) Some do.

The client accepted a faustinian deal there! :p


I hope and don't think so. Demanding them to use ClearCase, that would however been pure evil.

Lower their prices, without prompting. At Flexport we sell logistics services. The price of ocean freight is highly variable (less dynamic than, say, the stock market or airline seats, but still fluctuates a ton). We make money by brokering these services. In some cases, the price of freight drops in the time between customers when contract us (and agree to a price) and the service gets executed (when we contract with the asset owner). We pass those savings on to the customer and let them know. This usually results in big joy, all around.

Interesting, if the price rises do you pass that on to the customer too or do you take the hit?

Depends on the situation. Our rates have expiration dates attached to them, so if the price went up before our negotiated rate expired, we will eat it. If the rates expired, we leave it to the judgment of their account manager on what to do.

just out of curiosity - the value that your customers see...is it actual cost + your fee? (hence you can collect the fee even if the actual cost reduces?)

Yeah, classic brokerage biz model. We contract in bulk with asset owners and sell piecemeal.

Nice example. What do you do when the price moves against you? Swallow the difference?

Generic company sysadmin.

I have a rotating list of power user tips. I'll pick one to show someone during a trouble call (provided no one is in a huge hurry). It has to be something cool that I can demonstrate/teach in seconds. Examples:

Snipping tool. Rather than writing down error codes.

Windows key + start typing the program name. Rather than navigating the start menu.

Piles of excel tricks. (everyone loves excel)

The big thing is knowing your audience. People enjoy participating in something, not just being shown things they can never accomplish. If you make it something they can't understand it will just make them feel stupid or frustrated.

I'd love to learn more excel tricks. Any resource you'd recommend?

Joel Spolsky has a surprisingly entertaining video about excel features: https://m.youtube.com/watch?v=0nbkaYsR94c

I found this [1] video to be a great watch.

[1] https://www.youtube.com/watch?v=0nbkaYsR94c

Sorry most of it is off the cuff. I always localize it to who they are and what they are working on in that instance. Since my audience is non technical, almost no one decides to just buckle down and 'learn excel'. Commonly this means demonstrating filters and if statements. Pivot tables for the more advanced users.

I'll add one here from my own business, which is customer care outsourcing. The outbound call. Basically it comes with the territory when things go wrong. But when you call the customer before they realize things have gone wrong they are always, always grateful and impressed. Same thing goes for a "just checking in to see you are enjoying the service" call. Since we have agents sitting around all the time anyway this is time that can be used to call up customers and impress them.

Yes, this is true. We have set up a ping to all our clients external ip. If they go down, we know immediately. Client never fails to be impressed.

Yep. we do this too. Whenever we develop a web service for a customer, we set up uptime monitoring on the server where the app is hosted, but I also set up ping uptime checks on most of their other server infrastructure as well.

Just last week, I was alerted at 5am that a client's email server had gone offline. Nothing to do with us, we don't look after their emails at all, but I immediately texted their IT guy to let him know.

He texted me back at 6am - their own uptime monitors somehow failed to detect the DNS issue. He managed to fix it before their staff got to work that morning, and was extremely grateful that I had given him advanced heads up on something that was totally outside the scope of what they had engaged us for.

Perhaps this is just a product of working at a very privacy-centric company, but I would be _super_ creeped out by that...

Context: We've worked with this client for 10+ years, I know their IT team really well. They are not a super huge organisation, and we are a tiny (read: 3 man) operation too, so the reliance on each other's services is something we consider important to keep everything moving forward.

I used to work for Rollbar and their "person tracking" feature really super powered this. I was a customer of Rollbar before I worked there, and would regularly catch and fix bugs for our clients before someone had the chance to notify us about it.

This is great advice, thanks for sharing.

Look at how many of the answers in this thread are simply about communicating effectively.

That mirrors my experience when I was on the service provider side, and as someone who is now consuming those same services, I can confirm that I am most impressed by my providers when the communications are focused, helpful and timely.

>>> Look at how many of the answers in this thread are simply about communicating effectively.

spot on

The only other thing I see is doing simple things that are useful but not requested. I.e. thinking from the users perspective.

Respond to requests right away.

A lot of the time, when a client has a request, they are thinking out loud in the moment. Even if I can't pick up the phone, I'll send a short email straight away to let them know that

1. I got the message 2. Timeframe when I can action

I do this all the time. "Got the message" + please allow some time...

1. Deliver just a little more than they expect. Most times when we write a web app for enterprise customers, we try and give them a little bit of extra functionality than they ask for. One example is the user profile settings for their sign on to our web apps - most customers are only bothered with having a username and password, but we often incorporate things like ability to choose avatar images or upload their own images against their profile.

We did this on one education site we developed, and also gave them the ability to choose from about a dozen 'stock' cartoon style avatars if they didn't want to upload their own images. The users were impressed at the handover training session we ran, but I overhead one guy (who was indigenous Australian aboriginal descent) jokingly remark that the stock avatars didn't have a person of indigenous culture represented.

I took note of that, and when I returned to the office, we added a handful of indigenous avatars as well within the hour. Client was happy that we went the extra mile to take their offhand comment seriously and deliver on it.

2. Saying 'No' to 'easy money' projects. We've worked with some of our clients for over 20 years now. Mainly because often when they come to us to add on features to their custom written apps, we often say 'No', along with some valid data to explain why we thing the $$$ sunk into the added feature are of very little benefit.

This has lead to them trusting us a LOT more when we go the other way. Real world case study - we had one client, whom we developed a short term loan application for, ask us to add a Monday morning report with customer mobile numbers so they could do a ring around check for customers who were about to default on their loans.

I said 'Sure, but lets go one better'. I said that along with the report, it wouldn't take much extra work to actually have the system send out an SMS message to all those clients as well, with details on their upcoming defaults, and what they needed to do to fix the issue.

They were delighted and said to go for it. Well, that was two years ago, and it turns out that the SMS messages by themselves have reduced their default rate by an incredible amount, and they are FAR more profitable as a result. Hmm, maybe I should have asked for a percentage of profit increase as my payment! :)

Something we were doing when I had a web design agency was to have awesomely beautiful and detaild proposals where we summed up the context, constraints and goals of the project. We considered them as our first deliverable and spent time creating beautiful indesign templates. It allowed us to stand out from the start. Another thing is while our competitors were usually not showing anything yet at this bidding stage, we were already delivering some high def mockups, sometimes within the weekend. Last thing, we didn't have any sales people. Meetings with leads and customers were directly being handled by tech leads and lead designers, who were not there to sell, but to advise and find solutions with the client, explaining and integrating the client within the process from the start. All in all, we won all the biddings at the time despite being usually 30% more expensive. Something we were doing also is to include free perks that didn't cost us anything and was making a lot of difference for them ( free access to our email marketing platform, server monitoring, etc... ).

This is so important.

We had this experience (as a client) when we went around to find a venue for our wedding (100 people).

The restaurant that got the bid wrote us a personalized letter, included information on the town and hotels that would be available for guests nearby, etc etc..

The rest just sent short notes.

As a leader in an IT department, I asked for proposals for a 40K software review.

All of them responded with no-brainer copypaste letters. All but ONE, who took their time to make a good, detailed offer.

They called me, we met for an hour with their experts, THEN they made a thoroughly thought out offer.

Guess who got the job?

I discuss wit a client about some data they collect using an Excel form. Prototype quickly under one hour a small CRUD app based on Django and set Django Import-Export [0]

Get an easier Excel sheet containing data. They're gaga about that. I've won contracts just by showing them that they will get all the data in an Excel sheet.

[0]: https://github.com/django-import-export/django-import-export

Sweet move. A lot of stars on Github tells me you are spreading lots of joy to your peers all over.

My business develops mobile apps for clients. They love when I analyze major announcements from Apple / Google and explain how the new features may apply to their apps. They feel they have a partner, and it typically results in new development for us.

Tell them the truth, even if it means fewer projects/billable hours for me.

Every single lead I've talked out of working with me, has referred me to another customer and/or came back weeks-years later with a bigger project that did make sense to pursue.

Choice quote: are you allergic to money?

i would say about half of the leads i talk into trying someone else send a referral, but that isn't why i do it. Our field is so large. It's important to not get distracted. Of course, this assumes you have a plan.

I am a developer and usually writes web scrapers or automation tools most of the time beside typical web development. A couple of things I did and worked for me.

- I offer them more than what they expect. At times scraping additional info which I think is useful but they did not realize I extract that too. Sometimes they ask for the script or data, one of them and I just offer them both and they appreciate it lot. Though that script is not helpful for them and they eventually come to me but it's just increase their trust.

- It sounds silly and dangerous but often I don't ask advanced payment from clients and prefer to show off some skills, mostly it was quite helpful and they worked me on other projects as well.

How did you get into doing scraping contracts? I often write web automation scripts and scrapers for gathering research data, but have never figured out a way to get contact work.

Anticipate their emergency procedures, and ship them a binder wrapped with dire warnings should it be removed from the data center. Multiple customers have said this has saved their bacon.

Classic E*Myth strategy. Plus I bet they feel great when it's first delivered to them as well.

could you please elaborate? What's in the binder?

Emergency procedures for administrating the network gear. There's two sections: 1) symptom->fix procedures, and 2) how to rebuild everything in the network from scratch in case it got wiped.

The reason it's in hardcopy is because you can't look stuff up on the Internet if the Internet is down.

Build much better UIs than my competition. It's a known issue, we developers rarely take the time to bother with UI and it's a shame because it makes all the difference in the world, especially in web apps. Clients can't tell technical superiority, they can only judge from what they see and if your UI is stellar you'll make selling a lot easier. And you know, judging from the fact that so many of us are afraid of the sales side this could be a lifesaver. Build better UIs to counteract the fact that you suck at sales.

Portfolio, please.

Most of my projects are subscription based SaaS web apps specifically aimed for a local (non-US) market. Showing them wouldn’t do you any good because you’d need an account to view the service and it would attract unwanted attention. Contrary to the prevailing HN mentality, I prefer to fly under the radar.

I think he just wants to see screenshots...

If that's all I wanted I can go to Dribbble or Behance. Was genuinely curious...

My rates! Seriously. That's how high they are and that's where I want them.

But because I pick up the phone when they call and I seem trustworthy, they pay it. Also, I take my work very seriously, and they get what they pay for.

Contrary to what I read here, I put me first, my company second and the client third. I think that in consulting, this is the only way to stay sane and deliver on time and to spec.

I work in a large health organisation right now and the thing that seems to blow most away is just saying yes.

I don't work in the IT department and they basically say no to everything. Regardless of business value or difficulty.

I work in the chief executive office and numerous departments will be amazed when I say yes... Let me look into that.

Recent example was a publicly facing, real-time waiting time tracker for the city's A&E (as well as two walk in centres). Each solution I thought of had compromises but they chose the one they could live with.

Healthcare IT is one of the most backwards areas of IT to work in, I think, in large part because of the legal red tape around everything clinical. So you get a lot of people that say no automatically.

Additionally, I think you get a lot of people that don't really have an "IT mindset." I don't know about where you work but in my neck of the woods we have so many people in programmer positions that can't even write a three line script. They're great at clinical stuff because they came from there (e.g. nursing) but have no technical background...

I have a different theory: For many IT applications you can tell users to conform to the system's needs or take a hike. With healthcare (and some other government type services) you don't get that option.

If I'm Amazon and you don't have a computer? Sorry, come back when you do. No e-mail address? Sorry, come back when you have one. No credit/debit card? Sorry, come back when you have one. Don't know your postal address? Sorry, come back when you know it. No phone that can get SMSes? Sorry, come back when you've got one. Don't speak any of the languages we use? Sorry, come back when you do. Unable to pass a captcha? Sorry, come back when you can. Bad at reading and can't navigate our site? Sorry, come back when you can. Blind and your screen reader doesn't work with our site? Sorry, come back when you have a different one. Child that doesn't know their own name? Sorry, come back with a grown-up. No address because you're homeless? Sorry, come back when you've got an address.

Companies that can decline service for such people can make many simplifying, cost-saving assumptions in their IT systems.

If you can't decline service (Hospital, voting etc) you need to deal with such corner cases - and combinations of several. I can understand how getting that right would raise costs substantially.

I don't know if these things "blow them away" but I do think they are differentiators:

- I bring homemade cookies to our first meeting and if the client likes them, to subsequent meetings. The first time I did this for purely selfish reasons; I like cookies but I'll eat the whole batch myself unless I get someone else to "take a cholesterol bullet" for me.

- I'm extremely honest and forthcoming. I tell them that it may sound like I'm trying to talk them out of hiring me but what I'm actually trying to do is make sure we're a really good fit. I tell them even the non-flattering data about my capablities or lack thereof i.e. I've told more then one potential client "I can spell 'SQL'" when they tell me they'd like to incorporate a data base in the product they want me to make. (But my wife is an expert and she'll help me out.) I tell them my estimates are usually off by a factor of 4X. You know what is worse than not getting a contract? Getting a contract where you can't make the client happy.

- I tell them that they can probably do the job without me - and I mean it. "Here's how I would do this. ... That part might be tricky, I can't remember off the top of my head but I'll look it up and send you some links on this.. Buy me lunch and you can pick my brains."

- Communicate even when there is no news or it's bad news. "I still haven't received your hardware but I wanted to call so you'd know before you left for the weekend. I'll call the vendor on Monday."

Looks like a good strategy to find the job you're going to enjoy, but is it working well for you in the long run? Or you just have enough savings at bank to not rush until you find a good position?

Since I wish to find some non-freelance job in future, but requirement of bullshit talk scares me. And few times when I attempted to act similar to what you posted I just bumped into a wall of misunderstanding.

I'm hard wired for the "honesty thing" but started going out of my way a few years ago after a bad experience.

I interviewed with a company for a contract and I had told them I only had 5 days of experience in technology X. They hired me and then let me go after a week because they needed a true expert to fix something in time to ship. I said them "I told you I only had 5 days experience with technology X, why did you hire me when you needed an expert??!"

The manager responded "We just liked you so much!"

After that experience, I would tell them [interviewers] right at the beginning of the interview that I was going to try my best to "open my mind and let them peek inside" and give them any data they might need to reject me. I'd tell them, "It's going to sound like I'm trying to talk you out of hiring me but I'm really just trying to make sure we're a good fit." Somewhere in there I'd tell them the above story so they'd know why I was taking such an unorthodox approach (and offer them another cookie).

I'm a freelancer with multiple clients now. I have too much work so I guess I have the luxury of not taking jobs that aren't a good fit. That said, being so confident that you can be radically honest with a potential client or interviewer, also signals competency. A desperate person doesn't behave that way.

I find honesty gets misunderstood pretty often, like I must still have some angle but they just can't figure out what it is.

Answering the phone when it rings. Not so much old clients, but new clients are consistently impressed with this. A lot of our competitors don't answer and some don't even have voice mail.

I like this one. I'm a bit biased because I run a customer service business so that's a big deal for us, but even I am impressed when someone just picks up.

Show them how to do it themselves, and teach them "why" I do things the way I do them. I write resumes for clients and do them in Google Docs, and I invite the client into the doc from the very start. They can actually watch (in real-time, if so inclined) the work being done at all stages in the process.

Lots of them will ask why a certain decision was made that seemed unusual, and sometimes the dialogue gets into some rather detailed nuances of how readers interpret bits of information and how it's delivered. I came to resume writing after ~20 years in recruiting, so I am able to provide insight into what the audience for their resume is thinking.

Clients say they like the collaborative approach and appreciate that they learn things that they can apply next time (and not have to pay for the service again).

We clean devices, such as notebooks and keyboards, before returning them to our internal customers/users.

That's a very nice service but I'm not sure I'd like to do it.

When I did support for a university we very specifically could turn down items (mostly laptops) that were too grody to work on. Most of the techs used their own keyboards and mice regardless but still... some people are pretty abusive to their hardware (gunk, stains, very clear food spills, etc).

Though I guess the SOP wasn't to say "ew get that out of here" but rather "here's some wet wipes can you please wipe it down we make everyone do this" which wasn't even remotely true.

I'm partner of a B2B business.

We send cards and/or gifts on Christmas for every client. I and my partner write all the cards. We always thank the client for being with us another year and we ensure them we will do everything possible for the next year to be even better.

We haven't lost a client in the past two years. We have about 30.

Using web dev tools / inspector during a screen cast demo, either to modify a style or to show a site/app's responsive behavior. Simple, I know, but it comes off as some form of wizardry to many clients.

I think you want to be careful with that - you don't want to make the magic that we do look too easy. "Can you just quickly change all the fonts on our massive, complex site to Comic Sans? I saw you do it in the demo the other day and it looked like a two second job..."

Then just explain to them, why it won't be so easy.

"Comic Sans is licensed by Microsoft and can't be used on the web" "When we build websites, we first write it in another language and then pass it through a program that translates it so that browsers understand it. Adding Comic Sans would require us to make changes deep in the 'translator' program that is supplied by a third party." "Comic Sans is cancer, see these links. Designers all over the world hate it. If I had a site with Comic Sans on it in my resume, I would seem very unprofessional to a lot of potential clients."

I usually explain them the problem I'm facing in non-technical terms.

Of course, and I bill my time spent doing this.

Ad quote 2: When I showcased it to you, I edited the code for browsers directly.

Build a rudimentary CI pipeline that automatically runs some kind of test.

Don't roll your eyes. You might live in a JS filter bubble but there are a lot of impoverished developers working in software engineering ghettos.

Our clients tend to be blown away by map widgets. If we showcase an application and then bring up the embedded Google Maps view, e.g. with different kinds of overlays, most clients are completely blown away.

I am in a pre-sales position so I am already typically on the clients shit list. Unlike most of my counterparts, I have lived in the world of ops and development and know how fun it is to get a call at 3am when something is down. I use my past experiences to explain to the customer why I would do things a certain way or why I think something might not be a good fit. I listen to what the customer has to say (something many in my field seem to not understand) and try to come up with something that fits well for THEM, not for my bank account. I have had multiple people from various companies I have worked with tell me that they really appreciated my honesty and I typically get great customer satisfaction reviews, even if the project doesn't go that well.

To me it really is as simple as don't be a dick.

As a consultant and advisor, I add value in the sense that I move my clients forward very fast, whatever they need at the stage they are. Need strategy? We devise a plan together. Need sales? We make calls together. Need r&d? I have a network to rely upon. Need introductions? We have a look at the sector and agree the approach. Need a deliverable? We have a look at capabilities and try the shortest path to put out something for sale. Need services? We test the market together. Blowing away = moving forward efficiently, safely and as soon as possible. That said, the ultimate problem everywhere is sales, so just help clients sell their sh*t and they will be happy, very happy, very very happy.

Hand written christmas cards are always a big hit.

I am the web developer/web designer that usually picks up where other web designers left off or "disappeared". They usually leave without a trace or they leave their client with a broken website. I also take them from being charged a fortune down to being charged a much fairer price. I know I could probably continue to charge them a fortune, but I just don't do that to people. I tend to go after people who are on a "shoe string" budget. I mean.. I charge them enough that I'm being paid for my time, but I am willing to work with their budgets.

I also offer something that I find most web people don't: I offer them good customer service. I answer my emails within 24 hours and I pick up my phone usually when they call or I get back to them asap. I try to give them a reasonable price and I expect payment upon delivery of my invoice.

I have just a few clients, but I've never had issues. And most of the time that is what my clients have confirmed that I have offered that no one else offers: customer service. It's just being extremely supportive. They want to know that someone is there when there is a problem. There is nothing worse than the feeling of running a business.. and knowing that you are screwed or worse -- you have to pay someone you don't know a fortune in an emergency situation.

On our real estate listing / brokerage site, we have a "GET MORE INFO" button on every property. When a user hits that they'll get an automated response with a title report, but then our agents will follow up the same day with a short note about the property and any additional info we can find. The human follow up tends to be a magic moment and if our agents are able to provide some juicy info, the customer usually sticks with us for their purchase.

Mobile app development - releasing a binary download (MVP) in a few days which delivers the bulk of the clients required functionality.

Somehow, at least for (native?) mobile, the spec to implementation transformation still seems magical to many of our clients. I personally think it's the rapid turn around. It seems there's an expectation still that the development will take longer and thus the reaction?

I do this as well. Simple, rudimentary prototypes can be made in relatively no time flat. And it's never really that ugly anyway.

I spend a lot of time picking up existing and 'legacy' platforms, and it consistently seems to impress my clients when I'm able to implement automation, even on so called 'un-automatable' platforms.

I also think it's the ability to understand that the business and the technical elements may not always work in lockstep, and being able to translate the needs of one to the other.

Obviously anything non-trivial. Lately i've been mixing version control with various things that haven't gotten that feature yet.

Could you elaborate on which various things? Interested to know

ERP features that always amaze: kit demand; click a button, get a colored report with charts; click a button, see who and when changes were made to a part/order/entry.

Another was version control for bom/assembly processes. They wanted a visual tool for showing the differences. Sort of like a diff tool, but all the files were shown instead of just two at a time. Also, who made the changes.

As an engineer currently migrating decades old paper records to an entry level ERP, this would be an amazing killer feature that would blow my non-engineer co-workers away.

Basic version control on product data without shelling out for a massive overkill PDM/ERP/CAD integration would make me pant with hot joy.

One client used autocad. We re-built it in javascript/html, then added version contol and reports.

I'm curious, how did you handle dwg files? I understand they can be quite complex.

We had them export to pdf, then imported them. Our system stored pdf objects for display. Since it was a migration, backwards compatibility was irrelevant.

Numerous libraries support parsing .dwg files. Autodesk provides a JavaScript library, though under fairly restrictive terms.

Overcommunicate. Even when things are going wrong.

*especially when something goes wrong

I wouldn't say "blows them away", but apparently, customer service is generally bad enough that these things often provoke a pleasantly surprised reaction:

1. Make it clear that solving their problem is paramount. Not your policies, not getting off the phone ASAP. Sometimes it's something you can help them with directly with your product, sometimes you can't, but just treating them like a person you want to help instead of someone to hang up on is apparently unusual. (This is also a good fit for a lot of the techie folks on HN.)

2. Send a handwritten note. My handwriting is terrible, practically illegible, but people like that I took the time to write to them with pen & paper. Ironically, I didn't do this for a long time, because I thought it would look cheesy, but I gave it a shot and realized I like the little bit of gratitude it brings into my day-- that's really why I do it.

Not a developer but love technology: I began my organization skills by deconstructing simple BASIC games when BASIC was around as a pre-teen. Now, I'm hired to organize physical and electronic records, establish filing systems, workflows, and make physical records match the electronic records.

Create presentations that gather audiences' attention while not taking over from the speaker.

Desire to break into business analysis and have performed the work but not enough to make it official.

Past life created billing reports and client bills for a law firm. That took their THREE day billing process to less than one day on a sneakernet Access DBMS I designed.

Have also created feasible project and organizational budgets for humanitarian nonprofits.

Created an ad-hoc computer class for uneducated adults. Was told, "I've learned more with you in 15 minutes than a whole week at the community college." I purchased those computers for $4.00.

Onsite engineers for UAT and rapid bug fix turnaround. Most bugs reported from customers, during UAT, are fixed by the next morning for another round of testing. This is not always the case, but for most issues, we turn them around in less than 12 hours and the customer is blown away.

This happens ~4 times/year for major releases.

Used to do the same for customer deliveries. At the beginning, it was embarrassing to even have issues come up at all. But then we realized that there was no way we were ever going to completely duplicate their environment, and something would always come up. We'd have to resolved by the next day, if not the same day. That's when you learn that customers don't care that there are problems; they care that there are solutions and that you are there to provide them.


I'm a sort of internal consultant in my company who often interfaces with external customers. I've repeatedly heard that no one else provides as thorough yet easily understood documentation. They value the results, but value truly understanding them and being able to follow how I got them almost as much.

I get marketing, developers, content-people, biz-dev, product, higher management, middle-management ... in one room ... and after 2 days we produce a prioritized roadmap on how to move the company forward. Plus: No dead bodies, they actually liked beeing there.

Most of the time they can't believe it either. It's fun.

That sounds awful. How do you avoid dead bodies?

establish a framework of thinking that is outside of their usual modus operandi / way of thinking. so they are all fish out of the water .... together.

At my last company, when someone sent a solid bug report, made a good pull request to our docs, or asked for swag, I'd send them some gear with a handwritten note and my card.

People went crazy about the handwritten note and got thank you notes for the note! I think it was so different that it was a cool surprise.

Wake them up from their general anesthetic. Never fails.

Speaking as an independent IT consultant: Listening and trying to truly understand the problems they have (at least I try to do that as much as possible). Then solving those problems in perhaps unexpected ways. It might sound a bit trite but from my experience business software development often tends to get stuck in a rut and less than optimal or even harmful practices are perpetuated because "it's always been done this way". Cargo cult is an eminent problem in business IT processes that goes unchallenged far too often.

Effective knowledge transfer is another aspect. Not just coding up a solution but teaching others how to solve specific problems by themselves is highly valuable.

Requirements analysis in UML blows a lot of my clients away, it lets them see the world in a different way for the first time. I don't think I'm great at it, shows how rarely this is really done for large institutional customers.

What a great question. I find it's always the little things that do the trick!

Here are my top 2:

I have a simple motto: I aim to save my clients money. This can work in lots of different ways, shaving a day off development here or there, coming up with cheaper solutions, even outsourcing little tasks to UpWork or automating them via an existing web service.

#2: At the end of each week, I like to send a quick summary email. I got that tip from another freelancer. Even though clients have access to online project management, it gives them additional reassurance and they go into the weekend with a sense that you're doing good work on their behalf.

When they send us an email, even a reply to a mass email, a real person reads every message and follows up. Simply thing, but people are routinely surprised.

Organizing their 4,000 pg VA claims files that are essentially their last 30 years of private and VA health records (usually already organized by facility though), military service, military medical, and the VA claims process

The longer a claims file, the more I get excited because the chance of a VA error is already very high - in a 4,000 pg file I can guarantee at least one big one

Ask them the questions (about the project/problem) that they never asked themselves.

Tableau vizs

DATEPART("weekday",...) is my best friend here. Usually sales, etc. on mondays are similar to other mondays and so on...

Maybe I am overly used to this; but customers are astonished seeing that kind of stuff...

Build better products and gracefully handle every scenario. I was always blown away by the attention to details Apple gives to its products compared to others. For eg. Just a video on stress testing water proof behavior of Apple watch

I do bespoke personal support. I always solve their oddest problems. There's always a way, somehow. I'm available 24/7, for those 4am calls from Singapore. In return, they are very loyal.

Sounds like I'm bragging - maybe I am.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact