To all those don’t meet you yet. How do you describe yourself?
I’m a product designer and developer, the original creator of the Modernizr JavaScript library, a writer, and an occasional public speaker.
When you started developing, what were some common mistakes you made along the way?
Well, I started doing basic frontend development while primarily doing back-end programming (PHP, SQL) creating Content Management Systems for clients. One “mistake”, in a sense, was letting the back-end dictate more of the frontend’s architecture than we should have. We didn’t yet rely on using JavaScript to enhance the user experience with, partly because it wasn’t common yet, and partly because we were still thinking too much in a server-to-client model.
Frontend seems to be easy until you start to learning. How do you face the challenge of learning new things?
It really varies. When starting a new project, I’ll spend a lot more time doing research into new things—frameworks, techniques, best practices—in order to make an as-informed-as-possible decision on how to tackle the project. Other times, I try not to worry too much about the myriad new developments in the frontend world. It’s an endless task, so I try to focus just on the big changes that bubble up through Twitter and blogs.
What would you qualify as the top few problems facing developers today?
For one, I think a lot of people would benefit from doing more big-picture thinking about their technology stacks, like the accessibility concerns or the ability to onboard new team members to your code. A lot of utilities are made to solve one problem, but few people look at the collection of problems a developer has to contend with, and attempt to come up with solutions that address all of the problems together, in a new way.
Another top problem is social issues. For a bunch of supposedly analytical systems thinkers, there is still a ton of aggressive push-back to making cultural changes in our companies, communities and codebases based on irrational clinging to tradition and a reluctance (or unwillingness) to see how some of our social systems are unbalanced. It’s gotten a lot better in the past few years, but I think there’s still a long way to go for us.
How would you recommend somebody to start learning web development?
It’s hard to say; it used to be that you could explore the source of sites and learn, but nowadays so much of the source is compiled and useless, educationally speaking. I still think that making little tools, apps, some kinds of personal projects is one of the best ways of learning. If you don’t yet have ideas for a project, try and recreate a website, app or game that you like, one feature at a time. Research what technologies you might use for it, play around with them, and build on that through iterations. Find communities locally or online where you can chat with others, ask questions from more experienced developers, and share ideas.
There’s so much out there, nowadays, but don’t be overwhelmed by it. Just pick something to start with and go from there.
What are the things you would have known when you first started?
How much value I would get out of learning completely different skillsets. It’s especially important if you want to do something like product design or technology architecture work, but crossing over from discipline to discipline gave me the best of all worlds in terms of insights and utility.
Also, accessibility: I started pretty early on that, but I don’t think I’ve learned as much about general user experience, usability, or reusable design principles as I did whenever I studied accessibility principles and documentation.
When starting a new project, if you feel stuck where do you look for inspiration?
Wherever is appropriate for the project, really. If I’m starting a code project, like a new JavaScript tool, I look at other tools and their approaches. I try to examine the aspects of successful or popular tools to see what makes them good, and why do people like using it? Is it good documentation compared to alternatives, better architectural or API design, or something else? Usually that leads me to plenty new ideas.
What was your first development job and how you faced it?
I started on my 18th birthday as a web development consultant out of an agency. It was exciting and new and, though I’d done a lot of web development as a hobby already at this point, the professional environment was still largely unknown to me. I managed well enough, I suppose. I mostly tried hard to constantly learn how to be better, not just in my programming but also in dealing with other people, in communicating more effectively, and so forth.
What was the most challenging project you ever faced and why?
Rewriting the entire set of frontend HTML for the Apple Online Store by myself. It was my first project after I joined Apple, and they were transitioning away from a table-based design and towards a modern, semantic frontend styled with CSS. It was incredibly daunting, but also super exciting and fun. I tested it all out in over 40 different browsers and versions at the time.
Can you describe your workflow when you create HTML, CSS and JavaScript from scratch?
Nowadays I do more design work than frontend, so when I do write HTML, CSS and (rarely) JavaScript I generally do so in Codepen.io as a prototype or illustration of some interactions, like responsive reflows.
What excites you most these days?
The design and development tools and services are starting to get to the point I’ve been advocating for, and envisioning for some time. We’re coming close to seeing fully integrated tools that allow you to efficiently design or prototype a new bit of UI and have it be made, under the hood, from components that are directly usable by developers. That’s an area where the web has long lagged behind Apple’s Xcode and Interface Builder, and we’re getting there now.
What is the most important thing you’ve learned?
To stop caring about what the “better” technology is and only care about how technologies affect people, their regular lives and also their work lives. A new framework may be super cool, but if it wreaks havoc on the development team’s workflow and motivation, it’s a terrible choice.
Do you have any favorite books, videos, or resources that you could share with the readers?
I haven’t really kept up with those much. I’m still consistently fond of and impressed by A Book Apart’s new books, every time.
Do you have any advice for new developers just starting their career journey?
Try and remember that the most valuable thing you can do is to help solve real problems that people have. If you look for problems in our industry, or our society at large, you’ll find so many things you can make better with technology of some kind. You’ll learn tons of new skills along the way, and get better and more exciting opportunities as well.
What can we expect from Faruk in the future? Anything you want to share?
I’m starting a new blog/publication about all things Product Design, called Product Matters. You can follow it at Product Matters or on @ProductMatters at Twitter, to get notified when it launches in the next few weeks.