"Mr Branding" is a blog based on RSS for everything related to website branding and website design, it collects its posts from many sites in order to facilitate the updating to the latest technology.
To suggest any source, please contact me: Taha.baba@consultant.com
I’m from a generation of devs that grew up in the era of Flash splash screens. Say no more.
But Val Head has changed all that for me.
She has successfully demonstrated that if you are smart about how and when you use animation in your work, the results can be spectacular. Take Stripe’s checkout experience for example. It uses animation to guide you through a process, reducing cognitive load and adding delight. And that is just one of the great examples we chatted about.
If you’ve always been a skeptic, read through Val’s transcript. You won’t be disappointed.
If you didn’t make the session because you didn’t know about it, make sure you join our community to get updates of upcoming sessions.
If you’re interested in seeing what we discussed, or you want to revisit your own questions, here is a full transcript of the chat.
Transcript
hawk
2017-04-26 22:02
First up I want to say a huge thank you to @valhead for her time today. She doesn’t know me from a grain of salt, but I cold emailed her and here she is.
hawk
2017-04-26 22:02
Legendary and much appreciated.
hawk
2017-04-26 22:02
For those of you that haven’t been to one of these sessions before – they’re very simple. I intro Val, she intros the topic, and you get to ask questions.
hawk
2017-04-26 22:03
If it gets crazy busy, I’ll acknowledge your questions like this
hawk
2017-04-26 22:03
:grey_question:
hawk
2017-04-26 22:03
And queue them behind the scenes to Val to answer in order
@valhead is a web animation expert and author with a talent for getting designers and developers alike excited about the power of animation. She is the author of Designing Interface Animation on Rosenfeld Media and teaches CSS Animation on http://lynda.com.
She curates the UI Animation Newsletter, co-hosts the Motion and Meaning podcast, and leads web animation workshops at companies and conferences around the world.
And she’s here today to talk to us about animation and how we can use it successfully in our work
hawk
2017-04-26 22:05
@valhead The mic is yours. Can you give us an intro to the topic please?
valhead
2017-04-26 22:06
Thanks @hawk! (And thanks for inviting me to do this session)
valhead
2017-04-26 22:06
Hello everyone! I’m really glad you joined us to talk UI animation today.
valhead
2017-04-26 22:06
It’s awesome to see so many people here from so many places!
valhead
2017-04-26 22:07
Our topic tonight is UI animation for the web. And I’ve found that it’s some people are hesitant to use in their work.
valhead
2017-04-26 22:07
Sometimes because they feel they don’t know it well enough.
valhead
2017-04-26 22:08
But often times I think it’s more not being sure how to use it.
valhead
2017-04-26 22:09
And, of course, there’s also some folks who are totally against web animation at all because they only associate it with things like skip intros or banner ads and such.
valhead
2017-04-26 22:09
but animation on the web does not have to be those things if you don’t want it to.
valhead
2017-04-26 22:09
(I’ve most definitely seen Flash-like skip intros made with CSS, and maybe you have to, but there’s so much more animation can do on the web.)
valhead
2017-04-26 22:11
For example, Stripe’s Checkout uses animation in nearly every interaction in the checkout process. http://ift.tt/1f8E1en But buying something with that services doesn’t feel over done or flashy
valhead
2017-04-26 22:11
(You can use the “donate to watsi” button on their site to see it in action for yourself)
valhead
2017-04-26 22:11
And sites likes http://ift.tt/2nKbNTc use animation to bring the artist’s work to life.
valhead
2017-04-26 22:12
Both of those examples provide top-notch experiences, and neither would be the same without the animation because it’s truly part of the design.
valhead
2017-04-26 22:13
Every animation in Checkout is there for a reason. They’re there to help you, the person using it, to buy a thing.
valhead
2017-04-26 22:13
The key to great UI animation is that combination of purpose and style.
valhead
2017-04-26 22:14
There are a number of ways animation can add to UX in ways that some of our other design tools may not be quite as good at
valhead
2017-04-26 22:15
Maintaining spacial orientation is one thing animation can be a big help with.
valhead
2017-04-26 22:16
Often times, parts of an interface or some functionality needs to live off screen or out of view, or even behind other elements. We can use animation to help users get a sense of the space and layering of an interface even when they can’t see eveything
valhead
2017-04-26 22:17
Cotton Bureau uses animations to reveal the steps of their checkout process, and to reveal their navigation even though both are offscreen initially http://ift.tt/2g8Zmk1
valhead
2017-04-26 22:18
the nav slides on from the left and the checkout flow continues on to the right of what’s visible on screen. The animations that transition each in and out of view show users where those things “live”.
valhead
2017-04-26 22:18
This helps to reduce the cognitive load for the users by showing them this relationship visually instead of them having to keep track in their heads.
valhead
2017-04-26 22:19
Animation can also be a huge help for giving feedback for two reasons
valhead
2017-04-26 22:19
First because motion tends to draw our eye, and as designers we can use motion to direct users’ attention to where an important thing is happening. Or, even where a mistake has been made.
valhead
2017-04-26 22:20
That aspect can be really helpful for avoiding change blindness too.
valhead
2017-04-26 22:20
Second because animation can help us display multiple kinds of feedback in a small space.
valhead
2017-04-26 22:21
Stripe’s donate or pay button is a good example of this. The loading time and success state confirmation are all taken care of by that button thanks to the animation they use.
glennveugen
2017-04-26 22:21
Q: “motion tends to draw attention to our eye”. Does this lose its effect over time? Should we maybe distinguish between animations for first time use, and repeat use, where animation might lose its effectiveness?
valhead
2017-04-26 22:22
The third useful thing animation can help with that I want to mention tonight is animation’s affect on perceived performance.
valhead
2017-04-26 22:23
By using animation during times of un-avoidable waits (loading, saving, etc) animation can help make it seem like those wait times are shorter by focusing users on the progress instead of the wait. Or by building trust with a well designed (not generic) loader.
valhead
2017-04-26 22:24
Shopify has a great progress focused loader when you create a new account. It lists a series of steps over time like “1. Preparing your store” “2. starting your theme” as your wait for your new account to be made.
valhead
2017-04-26 22:24
Those steps certainly aren’t happening as they’re listed, but they keep you focused on the progress, not the wait.
valhead
2017-04-26 22:25
Viget did a really interesting study a while back on loaders, seeing what kind of animation people would wait for the longest. Their conclusion was that people would wait longer for more detailed and designed loading animations, but got frustrated sooner with generic loaders. Really interesting!
@glennveugen I’m not sure it loses effectiveness over time as much as it could become annoying if you use large amounts of animation for a very repetitive task.
valhead
2017-04-26 22:27
For example, banner ads were animated to get our attention. And i’m not sure that ever stopped working so much as we all got so annoyed with it we learned to ignore the whole section of where banners typically were or blocked them entirely.
valhead
2017-04-26 22:28
So, I would say that grand animations for bringing something on to the screen, or transitioning between views could get old fast if used more than just on the first time around.
valhead
2017-04-26 22:28
But things like shaking the form field that has an error, or a pulsing tool-tip probably wouldn’t suffer from that same effct.
valhead
2017-04-26 22:29
Context matters too, of course. So it would vary from case to case.
hawk
2017-04-26 22:29
Ready for questions @valhead ?
valhead
2017-04-26 22:29
Yes! let’s do some questions :slightly_smiling_face:
hawk
2017-04-26 22:30
Hit Val with your questions!
glennveugen
2017-04-26 22:30
when is a good time in the design process to start taking animation into account, and what is a good approach to it?
valhead
2017-04-26 22:30
Ah, that’s a good question for sure
glennveugen
2017-04-26 22:31
animation is usually the first aspect that’s being sacrificed, unfortunately :slightly_smiling_face:
valhead
2017-04-26 22:31
As early in the design process as possible, really. Right from the beginning. The earlier you start thinking about where animation could be useful in specific tasks or user flows, the better chance you’ll come up with something good.
stuartmurray
2017-04-26 22:31
as far as accessibility is concerned, what would be some good fundamentals to keep in mind when including animation in design?
valhead
2017-04-26 22:31
And the better chance that your entire team will see its value.
valhead
2017-04-26 22:32
@glennveugen For better or worse, I think the main reason animation is the first thing to be sacrificed is that we allow it to be seen as just “extra” or “decoration”.
mynameischad
2017-04-26 22:33
Do you / how do you use storyboarding a lot to work out interactions and CTA animations?
valhead
2017-04-26 22:33
But if we treat it as a true design tool, it becomes part of the whole design effort.
valhead
2017-04-26 22:33
So, to avoid animation being seen as just an “extra” we need to include in it our design discussion and process early on and be able to articulate its value. Just like we would for other design tools like type and colour and such.
valhead
2017-04-26 22:35
@stuartmurray Definitely. Accessibility concerns can be a bit different with animation
glennveugen
2017-04-26 22:35
And how to convey design specs to developers? Type and colour are rather simple, also in terms of CSS setup? How is this with animations? There are lots of aspects that come into play when dealing with animation: duration, easing, … Any tips or tools to make design specs for animation?
valhead
2017-04-26 22:36
There’s the basic stuff in the WACG like not flashing the screen and including pause/play controls and such
valhead
2017-04-26 22:36
But since that was written for a slightly different era of web design, we need to connect some of the dots ourselves
mynameischad
2017-04-26 22:36
Not flashing is, I’m assuming, to avoid epileptic shock?
valhead
2017-04-26 22:37
For example, rotating carousels and such are long playing animations really, and they should have some kind of pause/play controls
valhead
2017-04-26 22:37
Not moving the actionable items is another thing to keep in mind
valhead
2017-04-26 22:37
And that sounds like something that’s easy to avoid. Like, who would want to move a button someone is trying to click on, right?
stuartmurray
2017-04-26 22:38
yes that’s a pet hate actually, I think I’ve used sites or apps that moved the buttons I was trying to tap or click on
valhead
2017-04-26 22:38
But I’ve seen more than one slideshow/carousel of content out there that is on an auto timer with no way to pause it and the button fades away before someone can click on it if they have any mobility issues at all. (Or even if they were just like, distracted for a second)
valhead
2017-04-26 22:39
Triggering issues with motion sickness and vestibular disorders is possible with animation. And that’s not something we’ve really had to think about before
valhead
2017-04-26 22:40
I wrote an article on what that means, and how we can avoid triggering people on A List Apart a while back: http://ift.tt/2oRfI1w
valhead
2017-04-26 22:41
Browsers are starting to implement a reduce motion media query to help with that too
What are the tools we can use for creating an Anemation for any application?
valhead
2017-04-26 22:42
@mynameischad I use storyboards often as initial sketches for animation ideas.
valhead
2017-04-26 22:43
I find they can be really helpful for getting groups of people to give input on animations too. Project managers, designers, UX folks…. everyone can draw some simple storyboards to show a possible animated solution.
valhead
2017-04-26 22:43
So they can be really useful for getting a conversation going around animation and where it could possibly be useful.
mynameischad
2017-04-26 22:43
When I do it, I tend to treat them like keyframes (using arrows and such to denote motion)
mynameischad
2017-04-26 22:44
Are there techniques that you tend to fall back on?
valhead
2017-04-26 22:44
When it comes to actually evaluating if an animated CTA is effective though, I think interactive prototypes can be more hepful. It can be difficult to really judge things like that without testing out how they feel to interact with.
valhead
2017-04-26 22:44
But starting with storyboards to narrow down the possible approaches or ideas can be really useful before jumping into a prototype too.
valhead
2017-04-26 22:46
@mynameischad Yep, drawing out the key aspects of the motion in boxes, or frames, is pretty much how I use them. I really like Eva Lotta-Lamm’s approach for sketching animated interactions.
valhead
2017-04-26 22:46
She doesn’t call them storyboards by name, but her approach works great for storyboards.
valhead
2017-04-26 22:47
Her advice is to sketch out the trigger of the interaction, the action that will be animated and then write out some description of the quality, or how the animation should look/feel
valhead
2017-04-26 22:47
I thought her approach was so useful I interviewed her about it for the UI Animation Newsletter: http://ift.tt/2hmzuyV
mynameischad
2017-04-26 22:48
YES! Awesome
valhead
2017-04-26 22:48
(She’s the best at sketching interface things!)
valhead
2017-04-26 22:48
@glennveugen conveying animation design decisions to developers doesn’t have a really great solution yet
valhead
2017-04-26 22:48
I know that at least a couple of the prototyping tools are working on better ways to do this
valhead
2017-04-26 22:49
because it’s so essential
valhead
2017-04-26 22:49
my advice is to give developers some visual representation of the animation. Either a motion mock up (video of how it should work/look essentially) or even a basic prototype.
valhead
2017-04-26 22:50
Then also provide them with duration and delay values for the animations, details of the easing used (the cubic-bezier curve or spring values, or however else they’re expressed) along with any repeat values or iteration counts
valhead
2017-04-26 22:51
I know some larger teams have developed their own internal tools for pulling the data devs need out of After Effects-made motion comps. But even just writing it out by hand will be helpful.
valhead
2017-04-26 22:52
And if you’ve just been working out all the details of a particular animated interaction, you can probably rattle most of that stuff off right off your head. So it’s best to write that all down right after working on the design side of the animation. Much easier that way :slightly_smiling_face:
valhead
2017-04-26 22:53
@mra.kumar Sorry, I’m not sure I understand your question. Are you looking for a tool that exports animation for all possible platforms?
mra.kumar
2017-04-26 22:54
Yes for Android and other devices
hawk
2017-04-26 22:55
We have time for one more question after this. Anyone got one?
valhead
2017-04-26 22:55
@mra.kumar Depending on what kind of animations you’re looking to create a tool like Airbnb’s Lottie might do the trick.
It uses the bodymovin’ library to export animations from an After Effect composition to android, iOS or React Native compatible files
vedanthk
2017-04-26 22:56
Are there certain parameters to look out for when we picture adding UI animations?
valhead
2017-04-26 22:56
Bodymoinv’ itself can be used to translate After Effects compositions to SVG or canvas for the web as well http://ift.tt/1FnHQJv
mra.kumar
2017-04-26 22:56
@Valhead Thanks
valhead
2017-04-26 22:57
Those tend to work best for animations that aren’t dependent on interaction though
valhead
2017-04-26 22:58
@vedanthk It’s hard to make over-arching rules that can apply to every variety of UI animation out there, but I think if there’s one thing to keep in mind across the board, it’s context.
valhead
2017-04-26 22:59
Or maybe more specifically, how well the animation fits with the current context.
valhead
2017-04-26 22:59
A good fit with the context is what makes animations feel right or work well.
valhead
2017-04-26 23:01
The same animations that are great in a game’s UI, for example, may not be great for a corporate web site, no matter how well those animations were designed.
valhead
2017-04-26 23:01
In the same way, an animation that’s perfect for calling attention to an error, may not work at if it’s used on every button in a navigation bar.
valhead
2017-04-26 23:02
The purpose of the animation has to fit the context it’s in for it to feel right, essentially.
valhead
2017-04-26 23:03
If the context and the animation gel, it makes for a great experience. So much so that the animations almost become invisible because they’re just part of the experience and the overall design.
hawk
2017-04-26 23:04
And we’re about out of time!
mra.kumar
2017-04-26 23:04
What type of sound effect we can use in Anemation
Music
Or interactive voice
mynameischad
2017-04-26 23:04
THANK YOU SO MUCH!!!!!!!!
hawk
2017-04-26 23:04
Thanks so much for your time today @valhead – super insightful session
This article is part of an SEO series from WooRank. Thank you for supporting the partners who make SitePoint possible.
Search marketing can bring lots of benefits to your business and provide great marketing ROI. If you do it right, organic search provides you with a high-quality source of qualified traffic. However, SEO is much more than keywords and links. There are lots of technical aspects to SEO that, if you’re not careful, can trip you up and keep your site from performing as well as it could.
Here are five of the most common or trickiest to diagnose technical SEO mistakes you should avoid on your website.
Overzealous Robots.txt Files
Your robots.txt file is an important tool for your website’s SEO, and an integral part of making sure your website is properly crawled and indexed by Google. As we’ve explained in the past, there all sorts of reasons you wouldn’t want a page or folder to get indexed by search engines. However, errors in robots.txt files is one of the main culprits behind SEO problems.
A common technique to mitigate duplicate content issues when migrating a website, disallowing entire servers, will cause whole sites not to get indexed. So, if you’re seeing a migrated site failing to get traffic, check your robots.txt file right away. If it looks like this:
User-agent: *
Disallow: /
You’ve got an overzealous file that’s preventing all crawlers from accessing your site.
Fix this by getting more specific with the commands you issue in your file. Stick to specifying specific pages, folders or file types in the disallow lines like so:
Of course, if you created the original robots.txt file as part of your website migration, wait until you’re done before you start allowing bots to crawl your site.
Inadvertent NoIndex Tags
The meta robots tag goes hand-in-hand with the robots.txt file. In fact, it can be wise to double up by using the meta robots tag on a page you’ve disallowed via robots.txt. The reason is that robots.txt won’t stop search engines from accessing and crawling a page it finds by following a link from another site.
So it could still wind up indexing pages you don’t want crawled.
The solution to this is to add the meta robots noindex tag (also known just as the noindex tag) to pages you really, really don’t want indexed. It’s a simple tag that goes in a page’s <head>:
<meta name="robots” content=”noindex”>
Again, there are plenty of times you’d want to use the meta robots tag to prevent a page from getting indexed. However, if your pages aren’t getting crawled (you can check this using the site: search operator in Google), this should be one of the first things you check.
If you’ve used the site: search operator to check the number of pages you have indexed and it’s way below the number of pages you actually have, it’s time to crawl your site. Use WooRank’s Site Crawl feature to crawl your pages. Then, click on Indexing. Pages that are disallowed via the meta robots tag will be listed here.
No problems with meta robots here. Nice.
Unoptimized Redirects
No matter how much you try to avoid using them, 301 redirects are sometimes necessary. 301s (and now 302s) enable you to move pages to new locations and still maintain link juice, authority and ranking power for those pages. However, 301s can only help your site’s SEO if you use them correctly. Implementing them incorrectly, or setting them and then forgetting about them completely, will deteriorate your user experience and search optimization.
When I was just starting to learn CSS, the margin and padding properties always confused me. They seemed very similar and in some cases appeared to produce the same result.
In this tutorial, you will learn the difference between CSS margins and padding and how these properties affect the space between elements on a webpage. We will also discuss margin collapsing, the effect of using different units while creating responsive websites, and conclude with some layout tricks you can do with CSS margins and padding.
The Box Model
Elements in CSS are represented as a rectangular box. The size of this rectangular box is determined by the element's:
Content
Padding
Border
Margin
The content area of an element lies in the middle of the element. The padding surrounds the element's content . The borders in turn surround the padding. The margin of the element is its external layer, i.e., it lies outside the element.
The following diagram should make the arrangement clearer.
As apparent from the diagram, the padding of an element is the layer that extends from the outer edge of the element's content to the inner edge of its border. This property is used to control the spacing between the element's border and its main content. The padding applied on an element affects its size on the webpage. It does not affect the distance between different elements on a webpage.
When you want to increase or decrease the amount of space in-between elements, you should use the margin property. The margin applied on an element won't have any effect on its size.
One important thing related to boxes that you should keep in mind is that the sizes of all the boxes on a webpage depends on the box model being used. There are two different box models:
The W3C box model considers the width of the element to be equal to the content of the box excluding its padding and border. Padding and border are added on top of whatever dimensions you set for the element, which could have some unpredictable consequences on your page layout.
For example, let's consider a box with a width of 200px and a height of 200px, padding of 10px on all sides and a border of 2px all round. The browser does not see it simply as a 200px box. Rather, the browser calculates the horizontal space necessary to display the box as being 224px: 200 (width) + 2 (left border) + 10 (left padding) + 10 (right padding) + 2 (right border) = 224px. Given that the element is a perfect square, the height will also compute to 224px.
On the other hand, the traditional box model considers the width of the element to be equal to the sum of the content, padding and the border applied to the box. On the layout front, this means that, if your box is 200px wide, the browser computes the horizontal space it needs to display the box as being 200px wide, including padding and border. This yields more predictable results and it's easier to work with.
All browsers use the W3C box model by default. You can choose to specify the box model explicitly by setting the value of the box-sizing property to either content-box (W3C box model) or border-box (traditional box model). The traditional box model, being more intuitive, is the most popular approach among web developers.
Here is how you can set the box-sizing property to follow the traditional box model on your web project:
[code language="css"]
html {
box-sizing: border-box;
}
If you learn best by doing, try experimenting with this fun interactive demo by Guy Routledge.
Setting Margins and Paddings
You can control the padding applied to the four sides of an element using the padding-top, padding-right, padding-bottom and padding-left properties. You can also specify the padding using the shorthand padding property.
When a single padding value is present, CSS uses this value to determine the padding of all four sides:
[code language="css"]
/* all four sides */
padding: 10px;
[/code]
When two values are present, the first value determines the top and bottom padding and the second value determines the left and right padding:
When three values are present, the first value determines the top padding, the second value determines the left and right padding and the third value determines the bottom padding:
[code language="css"]
/* top | horizontal | bottom */
padding: 1em 20px 2em;
[/code]
When all four values are present, they set the top, right, bottom and left padding in this exact order:
[code language="css"]
/* top | right | bottom | left */
padding: 10px 10% 2em 15%;
[/code]
In the following demo, the orange background represents the content area of different elements and the white area between the borders and the content area represents the padding that we applied on each element:
Just like with padding, you can control the margin applied to the four sides of an element using the margin-top, margin-right, margin-bottom and margin-left properties. You can also specify the margin for all the four sides of an element using the shorthand margin property.
[code language="css"]
/* all four sides */
margin: 10px;
/* vertical | horizontal */
margin: 2em 4em;
/* top | horizontal | bottom */
margin: 2em auto 2em;
/* top | right | bottom | left */
margin: 10px 10% 2em 15%;
[/code]
Phunkie is a library with functional structures for PHP. In this tutorial, Phunkie creator Marcello Duarte, head of training at Inviqa, explains how to create Parser combinators using the functional library. This post first appeared on the Inviqa blog, and was republished here with their permission.
Learning functional programming
Functional programming really matters. Pure functions (or functions with no side effect) are the perfect units of behaviour because we can rely on them to build larger and more complex systems. The greatness of functional programming relies on this power of composability.
That’s something I first came to believe back in the days of my licentiate degree on Computing for Management, during a semester in AI with Lisp. My course curriculum was mostly focused on C/C++, therefore I had to stay focused on where the skills demand was.
Thankfully, I’ve been able to reignite my love of studying functional programming here at Inviqa where we’re delivering more and more projects based on Scala, the general purpose programming language.
I’ve read "the red book" about three times (the Chiusano & Bjarnason one, not the Vaughn Vernon’s one). I took all the Martin Odersky’s Coursera courses, and I spent hours of my weekends watching videos and reading papers.
And I set myself a challenge: to do with functional programming what I did when I was learning TDD and created PHPSpec (a BDD testing and design tool for PHP developers) to help me learn; I decided to write my own functional programming dialect in PHP. And so Phunkie was born!
Now over to you. Learning functional programming means immersing yourself in a new paradigm, which can be challenging. It requires a totally different mindset for approaching problems.
So, by the time you can use functional programming to solve real-world problems, you’ll have spent hours grasping the new thinking or getting clued-up on the theory.
In this tutorial, my aim is to help fast-track your journey by going over my implementation of Hutton & Meijer’s Monadic Parser Combinators. Hopefully you will be able to see both the thinking and the usefulness of functional programming.
And, by using Phunkie, you can eliminate the need to learn Haskell to understand the topic. All you should need is some familiarity with PHP.
Imagine working hard. You have an "above average" track record. You've never heard complaints — you even won the coveted "best employee" award last month.
So, your company decides to reward you by...
Demoting you.
Sounds bizarre and untrue, doesn't it? Who'd be thick enough to punish an employee for doing a great job?
Doing a Great Job Isn't Enough
AntarcticGorillas, a StackExchange user, shared the story above. He was genuinely frustrated because he did everything he was supposed to do, but ended up getting demoted instead.
Another StackExchange user dishes out some advice.
"Wow sounds like you failed to play the office politics game effectively. Good performance is never enough. You don't play the game and you lose, 100% of the time if you are in management."
He takes his bad advice even further.
"Ok now you have to salvage what is left. First, and I know you are going to hate this one, you have to make friends with your new boss. You have to get him to mentor you. You have to help him and not show your resentment. Yeah I know you resent him, you wouldn't be human if you didn't. But this is the time to take the high road. This guy clearly has the office politics down pat, you need to learn from him."
His advice is partially true. Good performance isn't enough. It's the baseline.
His advice to lie and manipulate? That stinks. But it isn't the worst part. It's the belief behind it.
I'm a _ Worker, I Deserve a Raise
As employees, we have the tendency to think we "deserve" it.
Developers do a great job. Most of us do everything we're supposed to do. Still, many are disappointed with the money they're making.
We know that many employers do their best to underpay. They walk a fine line, giving just enough to keep us on board, without affecting the profit margins they want.
It seems like your boss takes advantage of you.
You're working your hands to the bone. You're doing everything you're asked to do and more. When your company's in a bind, you deliver. Last minute updates? You get things done. Issues with scope creep? You handle it masterfully.
When you don't get the raise you deserve, it feels like an insult.
More often than not, the issue has less to do with your work performance and more to do with the intangible details. Behaviors and counterproductive decisions that alienate allies, partners and opportunities. These mistakes make it harder to get the raise we're hoping for.
Social conditioning leads many to ignore this stuff. "Ugh! Soft skills," you might say. But these unexpected, common mistakes impact raises every day.
Mistake #1: What I Deserve vs What I Want
There's a growing problem that's slowly eroding good will in the developer community.
Entitlement.
Open source entitlement is a great example. It goes like this:
Developer needs code to solve a problem
Developer finds open source code. It solves the problem
It's an oversimplification but it conveys the point. These open source authors aren't at our beck and call. It's a terrible idea to demand extensive tech support, then write angry letters when we don't get our way.
Mattias Petter Johansson over at FunFunFunction dives deeper into "developer entitlement."
When we feel entitled, we overestimate our abilities and our contributions. We swallow the lie our ego feeds us. "You deserve this. You're a senior developer after all." Developers with this mindset are bargaining on the wrong side of the tracks.
Here's how your boss thinks about raises.
"Holy crap, this is the guy that 10x'd our leads and sales in 18 months. The app he developed turned things around for us. We're going to need to spend more if we want to keep this guy."
See the difference?
They're not operating from an entitled mindset. They're approaching your raise from a transactional mindset, namely...
What am I getting for my money?
We're not entitled to a raise. We're not entitled to a promotion. Yet developers continue to approach salaries and promotions from an entitled mindset. I did a good job this year so, you "owe me."
They usually make their approach like this.
Which is the part where managers give their blunt and unsatisfying answer.
Nope.
Mistake #2: Being Right vs Being Respectful
Justin Keller, entrepreneur, developer and founder of San Francisco startup Commando.io wrote an open letter to the mayor. He was upset about the homeless in his community.
He didn't want to see them on his way to work.
"The wealthy working people have earned their right to live in the city. They went out, got an education, work hard, and earned it. I shouldn't have to worry about being accosted. I shouldn't have to see the pain, struggle, and despair of homeless people to and from my way to work every day. I want my parents when they visit to have a great experience, and enjoy this special place."
Maybe he didn't mean to convey feelings of contempt and condescension. But, his words were still hurtful and disrespectful.
He had a point.
No one wants to live in a neighborhood filled with homeless people. Homeless people don't want to live the way they do. We're human, it's normal to dislike these things.
Those who can avoid it, do so. Those who can't, endure it.
The general thrust of his argument is this: He doesn't want to deal with the problems that homeless people bring. Okay. But that's not really the problem here.
It's the othering of a group or type of people he views as beneath him.
That's the problem.
Developers struggle with the very same issue. As a developer, you're typically sure about your views. You're logical and precise. You're right and you know it, which is part of the problem.
You have a choice to make.
Be right. You can show everyone that you are, in fact, correct. That your way is right. This comes at a steep price if it's handled poorly.
Protect the relationship. You can treat others with respect, avoid humiliating them and allow them to save face when they're wrong.
Developers who focus on being "right" tend to be disrespectful. They burn allies and earn enemies.
Developers who focus on relationships first, discover their influence grows with those around them. They're viewed as trustworthy, and more people listen when they have something to say. Being right is easy when everyone values your feedback.
Getting that raise or promotion is tough if you're viewed as a snobby, know-it-all jerk.
Mistake #3: My Career vs My Loyalty
Google has been at the top of Fortune magazine's list of best companies to work for every year since 2007. The job perks are legendary. For many, a spot at Google is a dream come true.
So why is Google struggling to keep its employees?
A recent report by PayScale states the median employee tenure at Google is a little over one year. Its workforce has grown, but it's struggling to keep its people.
It's not because Googlers are unhappy.
84 percent of their 28,500 employees state they have a high level of job satisfaction which, as you'd expect, is one of the highest among the Fortune 500.
Other tech firms aren't having the same problem. The average tenure at Yahoo! and Microsoft is 2.4 and 4 years respectively.
Yikes.
The problem is loyalty. Loyalty is quickly becoming a thing of the past.
It's a destructive strategy that results in less trust. Employers limit the responsibility they give you because they believe you won't be here that long anyway...
Work has become this cutthroat environment where we all pretend to look out for the team, when in reality, we're looking out for ourselves.
If you're a sophisticated developer, you know.
At many companies, project managers and other developers are all too eager to throw each other under the bus for more money. When an opportunity comes along, these employees will eat each other for the chance to win.
Jumping from job to job only works for so long. Disloyalty catches up with you as your market value drops. There's no reason an employer should go out of their way to keep a disloyal developer.