Mindy focuses on building the user interface for Houzzers as a front-end engineer, from enhancing the photo browsing experience, to redesigning user profiles, to creating a home for Houzz TV. When she’s not at work, she can often be found hiking with her husband and her Shiba Inu, Maui, or tackling a remodeling project at home.
What sparked your interest in computer science? I was really into art when I was growing up in Taiwan – I’ve always enjoyed making things, from sewing to craft projects. When I was in a high school computer class, I learned Flash to make simple animated games. That’s when I discovered how fun it is to create something using a computer. I enjoyed it so much that I decided to study computer science in college, and then grad school. This is also why I wanted to become a front-end engineer, specifically – I enjoy building things that people can see and interact with.
Why did you decide to join Houzz? In addition to computer science, I also love interior design. My husband and I were actually in the process of purchasing our home at the time – an Eichler – and thinking about how we would make it our own. Working at Houzz has given me a great opportunity to put both of these interests to use.
What’s your favorite part of working at Houzz? The people and the culture. For the first time in my career I feel like I work with friends, with family. People like to help and influence each other here, like a friend or a family member would. We support each other, and we learn a lot from each other every day.
We also have a lot of fun together. For instance, decorating our desks with rubber duckies is a Houzz tradition we all love.
What’s something that has surprised you about working at Houzz? We have a lot of freedom to drive our own projects at Houzz. This hasn’t changed in the four years that I’ve been a part of the team here. We’ve grown a lot as a company in that time, and it’s amazing that we’re able to maintain the same atmosphere in the office now as when there were only 30 of us. Being a flat organization, we still have the ability to work without a lot of unnecessary processes, and have the opportunity to work with a wide range of people – not just other engineers. Our day-to-day life hasn’t changed…we’re just a much bigger family now.
What’s your favorite thing you’ve worked on at Houzz? I really enjoy working on new designs that continuously evolve our website. It feels like Houzz is our home, and we’re redecorating it! One of my recent favorite projects was creating a home for Houzz TV. It’s exciting that we’re providing Houzzers with an opportunity to experience Houzz in a new way, through video.
What’s the development process like at Houzz? It’s very collaborative. Our team involves everyone from the very beginning of a project, and we’re all able to offer our ideas right from the initial iteration phase. Once we’re all happy with a solution we continue to A/B test it to make sure our community is just as pleased as we are.
When do you write your best code? In the afternoon. I like to triage any necessary fixes that come through over email first thing in the morning, so I can focus on coding in the afternoon. Our team doesn’t hold a lot of meetings, so we’re able to concentrate on getting our work done.
How have you used Houzz at home? My husband and I have taken on several renovation projects to make our home our own since we bought it four years ago. So far we’ve updated our living room, two bathrooms, and the backyard. We used Houzz to create ideabooks to gather ideas for all of these spaces, buy materials and collaborate with each other and the pros working on the projects. We’ve done this all slowly over the years. Rather than completely updating a home as soon as I move in, I prefer to live in the house for a while and see what it needs over time.
What’s the style of your home? Since it’s an Eichler, the overall design of the home is mid-century modern, though I gravitate toward a modern minimalist style. I like things with clean lines, but not too much black and white – I like a splash of color. I think I’ve seen this style described as “happy modern.”
What do you like to do when you’re not working? My hobbies keep changing! My husband and I spend a lot of time traveling and hiking with our Shibu Inu, Maui. We are also almost always in the middle of a renovation or decorating project. I also spend a lot of time on Houzz, of course, testing the products I’m working on, but also enjoying the site. This definitely inspires more projects!
As a product designer at Houzz, Andrew’s responsibilities span everything from creating custom illustrations to designing the user experience for new features. Outside of work, you can likely find Andrew on the basketball court.
How did you get into design? I’ve been interested in art and design for as long as I can remember, but I didn’t think about it seriously as a career path until high school. I originally thought about going into architecture – when you have strict parents, and you’re interested in design, architecture is often an acceptable middle ground. But when I got to college and began to learn more about the field, the quick turnaround in graphic design projects seemed like a better fit for me than the often longer term projects in architecture. So I decided to pursue graphic design instead.
While I was at school I had an internship that gave me the opportunity to work on a couple of mobile apps. I realized that there’s much more to mobile design than how things look – it’s also about how people use the app. That’s what inspired me to get into this field.
Where do you get your inspiration? I find inspiration by observing people, and how different people use things differently. I like to visit sites like Designer News, where a lot of designers in the tech industry share articles and other resources. It’s a great way to learn about the “latest and greatest” news and tips for working more efficiently. My girlfriend is also a designer, and we chat about design quite often. We critique each other’s work sometimes, and we’re pretty ruthless about it. We really appreciate each other’s honesty – we know it’s not personal. If something’s terrible, we’ll tell each other!
What’s something that has surprised you about working at Houzz? Everyone has a voice here. If you make a compelling case, you can make a difference. We’re also allowed to be creative in a way that you’re not often able to be at other companies. When I’m given a project, I’m not always given all of the specific requirements – it’s often up to me to explore different ways to achieve our goals. This really facilitates innovation.
What’s your favorite thing you’ve worked on at Houzz? I’m currently in the process of working on redesigning a section of the site that I think will make a lot of people happy. It’s a project that involves a lot of complex problem solving, and gives me the opportunity to experience working on aspects of design that I’ve been interested in since I got into this field.
How do you use Houzz? Houzz was my go-to resource for inspiration and advice during my recent kitchen and bathroom renovation. I have a tiny kitchen, which takes careful planning to make use of the little space there is. The wealth of knowledge from the Stories and Advice sections on Houzz really helped me achieve that – my cabinet vendor was surprised when I requested pull-out pantries and trash cans!
What’s the style of your home? It’s a mix between eclectic and midcentury. I like my home to feel warm and homey. My walls are all white but with a tint of yellow, for example. I just searched for photos of “warm white” spaces on Houzz and drew inspiration from there.
What should a design candidate know about working at Houzz? At Houzz, you’re not restricted to being just a designer. You often get to wear different hats, and don’t work in silos – it’s good to have relationships with people from various teams throughout Houzz who can help you achieve those different tasks. Everyone at Houzz is awesome about helping each other.
What do you like to do when you’re not working? Basketball – I play with other Houzzers, and also on a recreational league. I think it helps with work, too – it’s a good reminder to stay competitive, not with my colleagues, but within the industry. Basketball reminds me not to be complacent – it gets me fired up.
As a designer at Houzz, Dave’s work ranges from crafting the user experience to designing pixel-perfect screens and icons for Houzz’s iOS and Android apps. Outside of the office, you can find him watching the Giants or A’s game (he’s a fan of both, having lived for years in both SF and the East Bay), or checking out the latest restaurant to open in his San Francisco neighborhood.
How did you get into design? My interest in photography and video editing eventually led me to the design field. When I went to grad school I discovered my niche in user experience design and just went with it.
Where you do get your inspiration? I listen to a lot of podcasts, read a lot, and download a lot of apps. I also like to get inspiration through research – it’s an important part of my job, and it’s something that I really enjoy, looking around for new and interesting things. A lot of my inspiration comes just from browsing the App Store or Google Play for apps that interest me. Sometimes I’ll ask others for recommendations for apps they’ve used that they really like or have solved a problem of theirs. What inspires me most is seeing someone’s reaction to experiencing an app (or anything) that they really love.
What’s your favorite design resource and why? I look at a lot of different sources…Designer News, Twitter, Invision Blog, Instagram, etc. I like checking Twitter and Instagram because they offer such a big mashup of raw inspiration. The Invision blog is more curated and focused on distinct ideas.
What’s your biggest design pet peeve? Oversimplified design.
What’s your favorite part of working at Houzz? Our amazing team, and the freedom we have to be creative. The strength of our team has been a constant since the day I joined Houzz – initially I was surprised by how great and smart everyone was, and I’m really happy that I feel even more confident about our team today.
What’s your favorite thing you’ve worked on at Houzz? Every project is a new experience and a new opportunity to grow as a designer. My favorite project I’ve worked on so far is the navigational redesign we did about a year ago. It was an opportunity to really improve a lot of areas in our app, and was something that I’d wanted to accomplish for awhile.
What’s the style of your home? I’m currently renting my apartment in San Francisco. My style is an odd blend of modern/eclectic/design elements with a bit of “old rickety San Francisco apartment” thrown in. I try not to stick to one strict style, while avoiding mixing too many things together.
How do you use Houzz? I use Houzz mostly to furnish and decorate my home. Space can be tight in San Francisco, so I really like looking for ways to maximize the space I have. I’m looking forward to the day when I can hire a pro and remodel a home – I already have a lot of ideas.
What do you like to do when you’re not working? I like to watch and play basketball and baseball, read, drink coffee, and try new restaurants in San Francisco – it seems like there’s a new one opening every day!
At Houzz, we’ve developed a solution for JSON parsing in Swift that can save developers a lot of time while supporting all the great characteristics of Swift – namely, type safety, marking model properties as read only, and supporting pure Swift classes (not derived from Objective C) and Swift structs.
The difficulty with parsing JSON in Swift is that it is a strongly typed language, while JSON is loosely typed and JSON tags don’t carry type information and can carry a payload of any type. This requires quite cumbersome code to perform all the needed type checks and to handle all the fallbacks. An added difficulty comes from Swift’s strict adherence to its two-phase initialization, requiring you to initialize all class properties before calling methods on it.
There are several open source libraries already available for parsing JSON in Swift. The first type of libraries simply manage a lot of the complexity in type checking the JSON. These include libraries like Unbox, SwiftyJSON or JSONCodable. While they do reduce the complexity in parsing, they also involve writing a lot of boilerplate code, which we wanted to avoid. In addition, we wanted the solution to also support NSCoding and NSCopying out of the box, as our objective C-based solution does.
In objective C we used a runtime introspection-based solution, similar to JSONModel, except it is a homegrown solution tailored to our needs. The advantage of such a solution is that there is no boilerplate code needed. Just declare the properties you expect to get from the JSON and the runtime introspection will populate the properties based on the data read from JSON. Similar solutions exist in Swift, such as EVReflection. All you need to do is inherit from the EVReflection base object (which was another downside for us, as we wanted to control the class hierarchy) and define the properties you want to extract from the JSON. The downside is that in order for this to work, all the properties need to be defined as read/write, that is as var properties. We wanted to clearly mark in the code which properties came from our server and are part of our data model, and therefore shouldn’t be written to locally. Swift requires these to be var properties due to the init phases in Swift, and the compiler verifying all properties were initialized in the class init. This limitation eliminated any dynamic runtime solution for us.
A third type of solution is graphical tools that can parse the JSON and code generate Swift classes from the JSON. SwiftyJSONAccelerator and JSONExport are examples of such tools. The problem with these solutions is that our JSON API evolves over time, so our objects add properties as the API and data model evolves. We wanted a quick and easy way to update our existing models. Also, being developers, using a text-based solution, preferably similar to source code we know, that is easily source-controlled, is more in our nature.
These led us to the solution we finally chose. We used a code generator to create all the boilerplate code for us, based on a Swift-like class definition, and used Xcode’s built-in ability to define build steps to automatically add the code generation into our build flow. Using this solution, we don’t spend time writing parsers, we just declare our model properties in the most natural syntax for developers, a Swift-like file.
The Cast File We define our classes in a .cast file which has a Swift-like syntax. It will also use the Xcode syntax highlighting, and as we’ve pointed out, properties can be either defined as let or var. So let’s jump into the first, simplest class example:
class Person: NSObject, DictionaryConvertible {
let firstName: String
let lastName: String = "x"
let middleName: String?
let yearsOld: Int //! "age"
}
This defines a Person class. It derives from NSObject, and by indicating that it conforms to the DictionaryConvertible protocol, the code generator knows this is a class for which an init(dictionary:)? needs to be generated. The DictionaryConvertible protocol defines two methods, the init which gets a dictionary parameter (a dictionary that is the result of NSJSONSerialization), and a DictionaryRepresentation method which does the opposite – given an object, it returns its dictionary representation. It also defines an overloaded init(json:)? Initializer that can get a JSON parameter either as a Data or as a String object.
The Person class defines a required property, firstName. This is non-optional – if the dictionary doesn’t have a “firstName” key, the init will fail and return nil. The Person class also contains a lastName optional property. If the dictionary doesn’t have a “lastName” key, the lastName will get a default value of “x”. The last property, “middleName,” is also optional. If the dictionary is missing this key, middleName will be nil. The last property, “yearsOld,” is an Int but is read from the dictionary key “age”. The //! is the form to add special directives to the code generator. So //! “Key” is how you override the default property name to key name mapping. You can also use this to pick up nested keys. //! “Outer/inner” will look in the dictionary for the key “Outer” which should have a dictionary value, this dictionary should have the key, “inner.” The reason we chose a failable initializer rather than a throwing one is since we do still have objective C in our code, and our models sometimes need to be called from objective C as well, a fail-able initializer is compatible while a throwing one isn’t.
We also wanted our model classes to automatically support NSCoding and NSCopying. Our objective C JSON serialization solution did that, and we find this useful, particularly in save state when you have to serialize the app’s data. To support NSCoding and NSCopying, simply declare your class as conforming to these protocols. The code generator will detect this and generate the required methods to conform to these protocols. In order to do this, your class must derive from NSObject, which raises another feature of the code generator – there is no need to derive from NSObject just for conformance to the DictionaryConvertible protocol. A pure Swift class will work as well. In fact, you can also declare your object as a struct.
Integrating into Xcode To build the cast file, one needs to add a build rule to Xcode. This is done from the build rules tab in the project settings as follows:
Now tapping build will create a .Swift file from the .cast file and compile it into the project.
The simplest way to add a cast file to your project is to add a Swift file using Xcode’s file template and rename it to .cast. Alternatively, if you add a cast file directly, remember to add it to the source files list in the project settings. To enable syntax highlighting in the file inspector, change the cast file type to Swift source code as shown.
To complete the integration, add the cast framework to your project.
The Cast Framework and Mapper Class The generated file will import the Cast framework. This framework defines a single class, Mapper, that has two class functions, map and unmap. The code generator is using the map function when converting values from the dictionary and assigning them to the property values. The map function is an overloaded function that get an AnyObject parameter and returns the requested type. The implementation of the Mapper class in the Cast framework supports the following types: String, Int, UInt, Float, Double, CGFloat, NSURL, and arrays of these types. It also supports any type that conforms to DictionaryConvertible, so you can easily create properties that are of other DictionaryConvertible types. If you want to add support for a new variable type, such as NSDate, extend the Mapper class and add a map(_:) implementation that returns the type you want. To continue the NSDate support example, if our JSON contains dates as number of seconds from 1970, our Mapper extension would be:
extension Mapper {
func map(object: AnyObject) -> NSDate? {
switch object {
case n as Double:
return NSDate(timeIntervalSince1970: n)
default:
return nil
}
}
}
Note that we opted not to support dates by default, as dates can be sent in various formats. We opted to let developers add support for the date format they are expecting.
Other Factors Enum Support When using properties of type enum, if the enum is backed by a basic type, say a string or an Int, and the enum is defined in the .cast file, support is automatic. The code generator will pick up the enum definition and generate the correct code to parse the underlying basic type, and initiate an enum with a raw value. For any other enum type, the Mapper class needs to be extended to add support for this type. See previous section on how to extend the Mapper class.
AwakeWithDictionary If in the class definition in the .cast file you add an
//! awake
comment, the code generator will add a call to an awakeWithDictionary(dictionary: [String: AnyObject]) -> Bool function, passing it the dictionary used to initialize the object. If this function returns false, the init call will fail. This is your last chance to perform any special data verification on the object received from the JSON.
Extending the model If you need to add functionality to your model, that is add methods, the easy way to do this is by adding a separate extension Swift file, and adding your func code there. While it is possible to place everything in the cast file, we find it inconvenient as Xcode doesn’t have its full code completion functionality when editing a .cast file.
You can add in class extensions functions or computed properties, but not stored properties. If you need a stored property that should be ignored by the code generator and will not generate code to try, parse it from the JSON dictionary, add an ignore comment to the property definition:
var myProp: Int! //! ignore
Such properties have to be var properties. They need to be either optional, implicitly unwrapped optional or non-optional with an initialized value, I.e.
var myProp: Int = 0
Otherwise the Swift compiler will complain that the generated init method is not initializing all properties.
Inheritance If defining a class that inherits from a DictionaryConvertible class, the DictionaryConvertible deceleration can’t be added to the class or struct declaration. Any class in a .cast file that doesn’t contain the DictionaryConvertible protocol conformance deceleration is assumed to be inheriting from one that does, so the init method generated will call super to initialize the super class.
Since NSCoding conformance is optional, the code generator is not clever enough to figure out if the super class is conforming to it, nor does it have visibility into other .cast files. To tell the code generator the class needs to add NSCoding conformance, add a special comment to the class declaration:
//! NSCoding
The code generator will then generate the needed methods to add NSCoding conformance and call super.
Nothing needs to be done to add conformance to NSCopying since NSCopying is realized using the NSCoding methods.
Command Line Options The following command line options may be specified in the Xcode build rule when invoking the script to further control its behavior:
-c By default the key names that are searched in the dictionary are identical to the property names, so a property named firstName will be instantiated from the dictionary using the key “firstName.” If the -c option is provided, the key names will use an uppercase first letter by default, so “FirstName."
-i Will make the key lookup in the dictionary case insensitive.
-n Will make empty strings in the JSON (i.e. ”“) treated like nil values.
About the Script The script is written in Swift. Being Swift developers, this was the most natural choice and the one we felt will best leverage our skills. Written in Swift, it could easily be compiled into a binary command line tool (in fact, this is what the unit tests are doing), but the advantage of a script is that zero setup needed before building your project, and there’s no need to compile a command line tool first.
Swift 3 Ready The script is Swift 3 ready if you have already moved over to Swift 3. There is a Swift 3 branch in the code that you can use if you want the code generator output to be Swift 3. Remember to switch your Xcode command line tools environment to Xcode 8 beta if you are trying the script on Xcode 8 using the xcode-select command.
Code The code for JSON cast is available on github here.
During San Francisco Design Week, nearly 200 Bay Area designers gathered at our Houzz HQ to mingle with members of our design and engineering teams and tour our new office, while enjoying tasty food and drinks. Alon Cohen, Houzz cofounder and president, spoke at the event, sharing the story of how Houzz got its start and the evolution of our web and mobile design – everyone got a kick out of the original Houzz website!
Arya is an Infrastructure Software Engineer at Houzz whose responsibilities include automation, monitoring, availability, scaling, and security of the Houzz infrastructure. When he’s not at work, you can find him doing yoga, reading, improvising, exploring nature and cooking.
How did you get into computer science? My love and curiosity for computers started when I was 11 years old and my dad bought a PC for my brother’s college coursework. At that time in Iran, where I grew up, it was very rare to have a computer. In many ways it was like a magical box that people were afraid to touch since no one knew how to fix it.
When I was home alone, I would play games on the computer. Soon after I started secretly disassembling and reassembling parts of it. Then, in middle school, someone donated 20 computers to our school and since our principal knew I had a computer at home, I was asked to help set up a computer lab and put it into good use.
My interest in computers continued to grow and I learned coding with QBasic and Pascal, and taught it to my classmates in 8th grade. We made a few games for fun and an accounting tool for the school. A few years later, when the Bulletin Board System (BBS) networks became really popular, I used the phone line from our upstairs unit to start a small network until our phone bill became unaffordable. The Internet made it to Iran, and I built my first website when I was 16 and ran a side business assembling and selling desktop computers.
During college in the U.S., I managed IT for a department in school with four computer labs while studying computer science and engineering. My boss at the time introduced me to administrating the servers on campus and learning Linux and modern programming languages. I used to dream of dealing with racks of servers and never imagined that would come true. I never had to think “what am I going to do.” I knew from the time I was 11.
What’s your favorite part of working at Houzz? My favorite part is that it doesn’t feel like work! For me, Houzz feels like a second home because I really love the people I work with; we work and play together. We typically don’t do things conventionally, and encourage each other to apply our own creativity to solve problems in any aspect of our business. These are some of the qualities that are unique to Houzz based on my experience.
How would you describe the engineering culture at Houzz? Oh! I wrote a blog post about that. Read more about it here.
What do you like about your role at Houzz? I really enjoy my role because it combines three things I love: helping people, solving challenging problems and taking care of business like working with vendors and decision makers. This is the first role in my career that has given me the opportunity to do all these at the same time.
What do you do when you’re not working? The list is long, but I like to emphasize on activities that help me grow personally and professionally. At least once a week I engage in some relaxing activity, I either do yoga to align my mind and body, or cook something. On weekends, I like to grab a book and go on a hike or to the beach, find a secluded spot and read. I mostly read nonfiction books on topics ranging from psychology and spirituality to team building and science. Some of my favorite authors are Stephen Hawking, Malcolm Gladwell, Thomas Friedman and Richard Dawkins.
How have you used Houzz at home? I use Houzz for my apartment. I’ve already decorated my bathroom and need to work on my living room. I have lots of ideabooks for my “someday” house.
What should an engineering candidate know about working at Houzz? I would call it the two B’s – be bold and brave. Bold in terms of creativity. Lots of problems we face are new to us and it’s important to have a creative approach to solve new problems. Brave meaning having the guts to accept the challenge and take the risk of utilizing your creativity. These two qualities are important in being really successful at Houzz.
A longtime Houzz user, Ania is a Front End Engineer for Houzz. When she’s not at work, you can find her upholstering furniture, cooking up a storm and browsing Houzz, of course!
How did you get into computer science? I’ve always been really interested in math and science. I also love art and art history. When I was growing up in Poland, I wanted to go into art restoration, but when I moved to the U.S., I found that most schools don’t offer art restoration majors.
Studying computer graphics was a good way to merge my interests in math, science and art. Over time, front end engineering became what worked best for me. I managed to use my science skills and art skills at the same time.
What’s your favorite part of working at Houzz? I really love the product! I discovered Houzz when I was considering a kitchen remodel years ago and decided I wanted to work here. Since I was a user, I had plenty of ideabooks and feedback for the engineers who interviewed me.
Sometimes in the evening, I just browse Houzz for inspiration. It’s always fun to test your code on something that you actually love. I often learn something from reading comments on photos.
What’s the development process like at Houzz? It’s really great. I’ve worked at other places and, in comparison, Houzz inspires a lot of creativity because we have an open, flat organization where everyone can share their thoughts and opinions. We have a very collaborative process where everyone’s input is taken into account. Also, the engineering team works very closely with the design team, which is really rewarding.
What technical challenge have you been most excited to work on? I like working on projects that are new and different for me, that I have to spend time researching instead of just using a library someone else wrote. I enjoy going back to math problems and solving things on a whiteboard.
At Houzz, we have the option of being in charge of a project from the beginning, so you get the chance to pick the flow of how the back or front end is going to work. Everyone gets the chance to be their own architect and decision maker.
How have you used Houzz at home? I’m a long time Houzz user! I recently used Houzz to find a contractor to build a custom entertainment center. It was so easy - I knew exactly what I wanted and that he could do it, based on his profile.
Now, I’m working on a nursery and found a photographer on Houzz who does pictures of baby animals. I purchased a lot of prints from her to put on the wall.
I have a ton of ideabooks for future projects.
What should an engineering candidate know about working at Houzz? Houzz is a fun environment and has a great team. You’re not just working by yourself to accomplish things, everyone works together to solve problems. We really want to help the user, and that shows throughout the team. On top of that, everyone is really smart and nice.
What do you do when you’re not working? I love to work with my hands and make things. I particularly love to sew and made all the curtains in my house. Sometimes, I even reupholster things myself. I love to cook, also.
Gloria is a designer at Houzz, where her responsibilities span everything from building our brand look and feel to overseeing the design of all our print materials, email templates, marketing banners and ads.
How did you get into design? I drew and sketched from the time I was a child. In middle school, I was inspired by my cousin’s collection of Marvel’s X-Men comic book cards, so I began drawing Rogue and Storm along with my own imaginary characters. A friend later showed me a Japanese anime series called Ranma ½, and I was influenced by its more exaggerated and feminine flair. Throughout high school, my art teacher had us try everything from landscapes to still lifes, portraits and self-portraits. Those years were a nice transition from flat artwork to more complicated techniques with shadow and depth.
By the time I got to college I was fluent in a vast array of styles, but my parents didn’t want me to pursue art. I took some computer science classes to appease them, which turned out to be a great decision. Those classes helped me realize that I could combine my love for art with technology through graphic design. I applied to the Academy of Art when I was 20 years old.
What’s your favorite part of working at Houzz? The people. Everyone on the design team shares the same enthusiasm for design. Feeling that your sensibility is shared by the broader team encourages you to work together to create this amazing product. It also fosters a truly collaborative environment, where you feel comfortable inviting feedback from peers who you respect. It feels like we’re working with a mindset of “one team, one dream,” with a singular goal of making Houzz look great.
What’s your favorite thing you’ve worked on at Houzz? My favorite project has been expanding our brand guidelines. Brand guidelines exist to ensure that everyone uses the Houzz logo, text, and icons in a way that is consistent with our look and feel. Back in 2014, they didn’t exist. It was empowering to have this blank slate, blue sky before me. I was able to create a full set of guidelines that include color palette, fonts, space and size requirements, and examples of how that visual language can appear in our marketing materials. It’s rewarding to know that Houzzers and our partners around the world look to this guide as their source for how to best represent the brand.
What do you like to do outside of work? I do a lot of arts and crafts. After working most of the day on a computer screen, it’s satisfying to make something real and tactile by hand, without the help of technology. I particularly enjoy creating hand-crafted items for friends’ special events. When one of my friends from back in middle school recently got married, I created the letterpress invitations. For another friend’s wedding, I made decorative paper flowers to serve as a backdrop for her ceremony. I love being able to contribute little hand-made touches that personalize the event and make it feel even more special.
I have a daughter who just turned nine months old, so I also spend a lot of time with her. We read books together, and she seems to love it. She spends a lot of time examining the book and flipping through the pages, just like her mom.
How do you use Houzz? We own a home, and there are always projects on our list. Most recently, we redid our floors, which were originally a combination of tile in the kitchen and hardwood in the living and dining rooms. My husband and I wanted to keep them consistent throughout the house, so we saved images we liked to a Houzz ideabook to compare our choices. Fortunately, we both like modern, contemporary design, so most of our selections were pretty similar! We chose a strained bamboo floor because they are super durable and eco-friendly, and we love how it turned out. The next project on our list is making over our backyard from a weed haven to a more usable family space. We’d love to include a table and chairs to enjoy a cup of coffee, a play area for our daughter, and a grill and some outdoor seating to entertain friends.
Houzz is on a mission to make the home renovation and design process more fun and productive, and that includes the experience of shopping for the best products for your home.
Today, we’re excited to open our commerce API to third party partners, bringing even more great sellers and inventory to the Houzz Marketplace. Available as beta to a handful of merchants for a few months, we’re now inviting all merchants who have home goods and are looking to sell on Houzz, as well partners who can help merchants syndicate product listings to integrate with our platform. We know that merchants want fast, seamless ways to integrate with Houzz to submit products, process orders, and keep inventory up-to-date and a commerce API will help us deliver that experience.
Our new solution was used to build a sales channel on the Shopify platform, also announced today, enabling merchants on Shopify to start selling directly on Houzz.
Since we announced the beta launch of our home products marketplace in fall 2014, the platform has grown to more than five million products and over 10,000 merchants.
Merchants interested in selling on Houzz can sign up at houzz.com/sell. Shopify merchants interested in learning more can visit shopify.com/houzz.
Third party partners interested in applying for access to the API can learn more here.
Zhiyu is a Test Engineer at Houzz. While front and back end engineers build what users see, Zhiyu creates tools to help fellow Houzz engineers do their jobs quickly without compromising quality. When not at work, he’s busy exploring the Bay Area and trying new adventures like riding a glider over the mountains of Hollister, CA.
Why did you come to work at Houzz? A few months before I came to work here, I bought my first home. Although I had some basic items from my previous apartment, there was a lot of empty space. My friends told me about Houzz, and I got addicted to using it on a daily basis to make my new place feel like home. Houzz helped me find ideas on how to decorate, and I created ideabooks for my living room, bedroom, kitchen, and even the outdoor landscaping. I didn’t know how to describe my style at first, but the photos that I gravitated towards tended to be contemporary or eclectic. I even bought furniture through the platform, inspired by the photos I had liked.
When I started to hear more about Houzz in the news, I decided to do some research on the company. I watched videos of the founders, Alon and Adi, talking about the company, and they gave a window into the people and culture. I remember thinking, “I love this product. And I love what the company stands for. That’s the kind of company I want to work for.” So I applied online.
What’s your favorite part of working at Houzz? When I joined Houzz in August of 2014, we had 200 employees. Now, we’re at over 700 people globally. As the company continues to grow, I feel like I’m also growing because new questions and challenges arise that give me and my team the opportunity to problem-solve and make decisions together. So I guess my favorite part of working at Houzz is feeling that I’m a part of this growth, contributing to something that I believe in, and learning along the way.
What do you like to do outside of work? I love travel and outdoor activities. I try to spend one day each weekend exploring the Bay Area and doing something new, whether it’s hiking in a state park, whale watching, or horseback riding. There are so many beautiful parks, and the scenery changes as seasons change, so it’s difficult to get bored. Recently, I did a glider ride in Hollister, CA- which was amazing. It feels like flying outside of a plane and soaring over mountains like a bird. Next, I want to try kayaking off the Sonoma Coast to see the bioluminescent plankton glowing at night.
What should an engineering candidate know about working at Houzz? When I interviewed, I was surprised to learn that the engineering team was a flat organization. Since Houzz is a relatively mature start-up, it was difficult for me to imagine how it could operate without layers of structure. But it actually works well, because everyone understands the product goal and their role in helping to reach that goal. Our co-founders, Alon and Adi, trust the people they hire to make decisions, so we have minimal meetings and don’t need to request approval for every little thing. It’s a great way to work.
For a testing engineer candidate in particular, the experience can be different from company to company. Some companies require a lot of manual testing, which can be repetitive work. At Houzz, it’s different. Developers share the responsibility of doing manual testing, and test engineers spend 80% or more of our time writing automation and building test frameworks. It’s more creative, and there are always new projects and challenges.