Andreas Pihlström — Soundtrack
A Swedish designer, hacker, creator, producer and maker of things.
My interest in design began with Spectrum ZX. I got it when I was a kid.
The idea that I could create whatever I wanted with the machine was fascinating. I didn't have a cassette player to load programs, so I learned a programming language called Basic. I could make music, draw, and animate things. All I needed was just one machine for that. It felt like magic.
At the same time, it was very daunting to write code each time I wanted to play a game or draw something. I was wondering if there was a more simple way to do it. Turns out, there was. After borrowing a cassette player from my friend, I discovered that there was a thing called Graphic User Interface. It was so impressive. GUI was a language that allowed me to speak with the computer in the most practical and easy-to-understand way. And I'm still under this impression. I wanted to do something amazing like this.
However, my first design experience was not related to interfaces. As a kid, I had a bunch of musical projects and I required cool covers for my albums. I’d create a new cover each weekend when I was free from homework. Later, I learned how to use Dreamweaver and created websites for each of the projects, which were hosted on a free platform that doesn't exist any more (therefore it can't hurt anyone's eyes!).
Usually, when I wake up, I go to the gym. I share the ancient Greek sentiment about the "healthy body, healthy mind" thing. Μηδὲν ἄγαν. No extremes, just enough to stimulate blood flow to the brain.
After that, I have breakfast and spend a couple of hours on personal projects or learning something new. At 10 am, I often start my workday. I reserve 3-4 hours for continuous, uninterrupted work designing or prototyping something, and then do meetings, mail checking, fixing bugs, managing design systems, and other routine activities.
All projects I’m working on involve a lot of other colleagues from different departments, so there is always a layer of synchronized communication over the design process to make sure that everyone is on the same page.
Nothing fancy. Right now, it is just a laptop. The main criteria for the setup is that I should be able to put it in my backpack. The laptop is a MacBook Pro with an M1 Max chip. It almost completely covers my needs for designing (Figma, After Effects, Blender) and coding (XCode, Unity, Unreal).
I used to use a PC for complicated render tasks and VR development. But if Oculus has native support for macOS, I would probably switch to Mac Studio (4kg! I can put it in my backpack too!).
I don't usually bother changing the default settings of platforms I use, except for these 3 things:
1) I put MacOS's doc bar on the right-hand side;
2) I change the BG for my iPhone to purely black;
3) I apply Dark theme for all code editors.
Where silence is, I would say.
When there are no distractions, you can focus on what is happening in your noggin. You are capable of turning one simple thought into a whole sophisticated philosophy, or a single picture into a spectacular realm of imagination. This is incredible and magnificent but, at the same time, fragile. A little sound can destroy it and disrupt your flow of thinking. So, any place where I can think without being distracted is where my Muse comes to me. Practically speaking, it means I use noise-cancelling headphones and earplugs.
Swift programming language.
Recently, I used SwiftUI to prototype some ideas I was working on. SwiftUI is a Swift library for creating interfaces for macOS/iOS/watchOS/tvOS products.
Almost all programming languages have a switch expression. It allows selecting one of many code blocks to be executed. All languages I know use a break to stop the checking flow when the match is found. Like this (C#):
Personally, I've never had a situation when I would like to proceed to check flow when the match is found. I always was wondering why do I need to add a break after each expression? Wouldn't be it better to break the check flow when the match is found by default? Needless to say, I often forget to add the break and have to deal with some bugs later.
Swift is different. It breaks the check flow right when it finds the match. Breaks it by default. But if you want to proceed to check flow when the match is found you add continue. The switch statement works in the way that human beings, who use it, expect!
It could seem like a very little thing to be worth mentioning but all complex products consist of small parts. I really admire how designers of the language approach the design process. Human beings first. Not computers. Human-Centered Design as it is!
It could seem weird, but I am really proud of some works that I didn't design actually. It's all about cases when I convinced our team that we should not develop some features because there was little value for our users and it didn't fit long-term goals, or we could get the same result without creating new interfaces but reusing existing ones.
But speaking of interaction design artifacts, there is a couple of pieces I do like. I always pay a lot of attention to the details of all interactions I'm designing. For me, it's a way to show my user how much I care about their experience. I love when people enjoy interactions. It's where the user experience happens directly.
Arrival is an automotive company but it develops not only vehicles. It also creates a digital ecosystem around physical products to facilitate and enhance its user experience. So, as a digital product designer, you have to keep in mind the physical part of the products you are designing for. There are a lot of restrictions you have to consider while you design an interactive experience: car industry conventions, time-sensitive tasks, digital accessibility in the context of the physical one et cetera.
At Arrival, people are encouraged to be innovative. It's a great opportunity for me as a designer to come up with truly interesting and outstanding ideas. But at the same time as a UX advocate, I should find the balance between being innovative and not breaking established conventional patterns (the Jacob Law); being expressive and keeping my design accessible to be able to make intelligent compromises and informed decisions.
There is a place for technical challenges too. For instance, once I was designing and developing a VR app with Unreal Engine and C++ that I had never used before (but my teammates had). It's challenging and fascinating at the same time. Learned a lot.
Practice makes perfect. Anything can be improved by deliberate practice.
Do not neglect this simple rule. It sounds ridiculously trivial, but it works. The problem is that when you start doing something on a daily basis, it's hard to notice progress because it goes naturally slow. You see your work each day and tend not to notice the difference between today's achievement and yesterday's one, even if you made a significant leap.
People give up on improving their skills, thinking that there was no progress. Start sharing your work on social nets. Twitter, Instagram, Dribbble, whatever you like. You will start to see your progress over time and get valuable feedback from your fellow mates which will help you get better.
Become fluent with your tools. The idea is, you must master your tools to the extent when don't think about them. You shouldn't think about the editor, there shouldn't be a delay between your thoughts and what you create because the speed of iterations when solving a people's problem is the crux of creating a great design solution.
And last but not least — keep it simple, sweetheart.
"Thinking, Fast and Slow" by Daniel Kahneman. It's the best book for Product Designers to understand how people's brain ticks.
Also, if you'd like to get in touch, feel free to reach me on Twitter or Instagram. There I share random thoughts, work in progress material, and experiments.
Cheers,
Oleg