While I took AP CS in high school, I can't rattle off the to O-notation of most algorithms. While I took plenty of art and design classes over the years, I'm no Jony Ives.
But, its not about what I can't do in my mind, but what I can do. I learn most things very quickly. I'm decent in Ruby and can get stuff done. I can get around Photoshop decently. I'm good at understanding what the customer wants and the product needs. I know how the pieces glue together. I don't mind meeting with VCs, talking to customers or interviewing people.
Yet contrary to popular belief, I don't find people bashing down my door. I don't have the sexiest Github account. The startups I've worked for aren't huge. When I'm asked what I do I reply, "Coding, marketing, product and design". Then they ask if I'm a Java or Ruby coder with 4-7 years of solid experience and a CS background.
Maybe the difference is I don't see myself as being a "full stack" guy, but a "full company" guy. I understand what everyone needs to be doing, and I have (often good) ideas of how a problem might be approached better.
I personally see myself as a huge asset to any company. I often end up doing the productivity of 2-3 people with more traditional backgrounds, but its a really hard sell honestly. I could try selling myself as a manager I suppose, but I'm not sure.
At my last company they jokingly called me the "Utility Man" taken from the football term. We had a lead designer but I worked with him a lot on stuff. We had developers that I helped. I worked with our Architect to design systems. I lead several projects so I did the PM thing. I even spent 2 years in security and information security audits (yuck!). Even the audit crap I excelled at.
I think some people can just pick up stuff fast. I don't think I'm a genius as this post suggests these types are but I do think I can pick up stuff really fast. I would imagine that most "designineers" could probably pick up in another area fast as well.
How about this: "I'm your trench man. When it's on the line and you need a good layout for a new feature you HAVE to roll out? Me. When you have a bug and all your other developers aren't available? I can drop Photoshop and fix it. And while I do all that, I'm figuring out how to help make your app better… and get more happy customers… which helps you get more customers, period. I can help your developers and your designers make sweet, sweet product love… because I have one foot on each side of the ravine, and can bridge it with my communication skills. One stop shopping, baby."
See what I said above to others about confidence & delivery.
When you only define yourself in terms of line item features "code, design" you invite comparison based on features alone. Hence the followup questions about years of experience. You're making yourself the crappy subnotebook with the bulleted list, and the MacBook Airs are beating the pants off you. :)
The engineering mindset and the UX design mindset optimize for different things. Even if you are excellent at both, it helps to have someone else forcing you to get the UX right when you're doing the engineering work, and to make the engineering possible when doing the design work.
The people who can do both at the same time don't differ in having both skills -- lots of people have them -- but in having the discipline to optimize for both in alternation.
For me it's less of a discipline issue and more of a time issue.
Both the backend and the frontend take a lot of quality time to do them right. It's simply not effective to have a single person context-switch between them, even when said person is very good at both. I.e. this is one of the situations where two people can indeed produce a given result nearly twice as fast.
However, I also agree that on top of that discipline plays a role, too.
While wearing the engineer-hat you have to constantly force yourself to stick with the brain-damaged abstractions that comprise todays "state-of-the-art" and not give in to the urge of fixing them bottom-up.
I.e. when both front- and backend are in your hands then the temptation to make the frontend truly model-driven can quickly become overwhelming (auto-generate those stupid forms and validations! why mirror when we could just rpc!). Sadly more often than not this results in a huge time-sink, as you embark in an uphill battle against a tool-chain that's strongly optimized for the exact opposite.
"Organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations"
When the organization structure of a project is 'there's just one guy who does it all', the software architecture will tend towards 'the big ball of code' pattern.
However, if the team on a project has people who are engineers, and people who are designers, then a designineer might be a useful product manager to help balance conflicting engineering and UX requirements.
In a startup, looking for a first hire engineer, you probably want someone who will grow into that role - but it's a mistake to have your first system built by them and them alone, because you'll almost inevitably wind up with a big ball of code.
In general, all software should be built by at least two people collaborating, to force some division of responsibility, which will (via Conway's Law) force some structure.
(as you say, the best developers are disciplined and capable of structuring systems in the absence of a forcing structure. This is maybe because they divide work logically into units, and therefore find themselves collaborating with their past- and future-self, giving the structural effect of team work. But apply pressure to even a great developer and that discipline can break down.)
When you design a UI as an engineer, you're thinking long term. Like make the whole thing white so that new features can be added in easily. Also, the logo is going to need to look good on white anyway for email footers, Facebook apps, etc..., so just make header background white. Then you may have integrations with third-party widgets. All will support white best.
Also, things that 'look' good often are not usable. Like text below 11px, and low contrast shades of text may not be visible to older folks. I see this stuff all the time on sites with 'awesome' design.
Also, images for backgrounds, corners, buttons etc... slow the page load down and don't allow for easy extensibility or iterating. So if I can't do it with CSS, I don't do it.
Page load time, non-buginess, and iteration leading to smooth functionality are the most important parts of UX, IMO. Making the site look like a piece of art does none of these, but I think art gets confused with UX too often. Do you visit this site for the beautiful design? How about Google or Facebook?
If you spend the time to do beautiful design and functionality like Apple, you can create something where the beauty does not detract from usability. But, that takes somewhere on the order of 10x the resources since they're doing 10 prototype designs, refining 3 of them, and only keeping one. If you're trying to create a market, then that makes sense. However, if you're trying to create the most useful product in an existing market, then you're wasting time IMO.
I received a call the following day and was told I was a top candidate. As the interviews progressed with each founder (3 of them), I started to get the impression that they also wanted a designer. I was super careful about managing their expectations and let them know I wouldn't count on my design skills for anything more than "not ugly".
I didn't get an offer.
This is the second time in my very remote, limited experience I've speculated a startup hiring stereotype that has later been echoed in the community. I've convinced myself that both indicate the lack of experience that startup founders have in hiring. Yet another reason I suspect founders can't find talent. After all, what kind of established, motivated and passionate, developer/designer would want to bet their livelihood on a startup that doesn't pay well, isn't clear about its expectations, and shows signs of inexperience?
Honestly, this reinforces the issue that startups do a poor job of recruiting outside of their 20 mile radius. For example, its early in the office, and I still see 5 people who have pushed high level applications, good front ends, and the occasional mobile app.
What that being set! "being" a generalist is not for everyone.
There are some things to note:
1. Keeping up with all three is a LOT of work. Understanding the latest javascript libraries, deployment tech, UI tools and successful business models take a ton of time. I roughly spend 15-30 hrs a week trying new things our, designing or running spreadsheets not to mention the meetups and whatnot.
2. Every startup is looking for this person because they can enable so many parts of the success equation in one, self-contained shot. They add more value per square inch at critical phases of business growth that is a considerable asset. As a startup grows, this is personality turns into an optimal product lead, who can drive major decisions and participate in meaningful discussions with teams, investors and press.
3. Large corporations are not tuned to need or understand your services, unless you are accomplished in mid- to senior-level management positions.
4. You can visualize and eval business ideas quickly, then be able to communicate them to specialists with ease. I can't tell you the number of times being able to verbalized the need for a linked list or onHover whatever has made communcation easier with people who I bring to help me execute. This makes you a better implementer who is respected by counterparts and team members. Business folk quickly grasp CLV and burn margins when deciding to invest or advise.
4. You don't necessarily become an expert in everything. In fact, it's near impossible. I've had to focus of two or three major activities and fine tune my skills. This could mean I will be specializing in the future.
5. You don't get rest. The world is moving quickly, technology even faster. There are millions of able and hungry people willing to execute on their great ideas every single day. That means I have to keep moving or lose my flow. I can probably point to 7 or so ideas that were launched in the time I was evaluating the opportunity with 3 that have gone onto real growth.
It's really not rocket surgery, it's just a matter of applying yourself over time and every few months acquire new skills in an essential area. CSS, JS, Ruby, TCP/IP, HTTP/REST, UI/UX, SQL, design patterns, on and on. Set em up and knock em down. Be a generalist, but be a very good one.
It's not that hard to accomplish over time and it keeps you engaged longer. Heck, it's just more fun. I'm an 'older' coder and taking that approach I think has kept me from getting bored, kept me sharp and also kept me from feeling like all these young'uns is passin me by. Hey! Get off my lawn...
I also know a few guys I've worked with that are very strong in the same areas. It's more pleasurable to work with a team where every member will do well in all areas, even if we have a core area that we would prefer to be an expert in. I don't believe those people are mythical or hard to find.
The myth is that startups want those people, but don't have enough money to afford them. They want desingineers that are cheap. I'm personally tired of seeing "stock options" in startups that don't have a product yet.
For the last month I've been interviewing at some really amazing startups. What I've found is that I have no problem getting interviews at some of the best startups (>50% response rate) because well everyone wants someone who can code and design . The problem is that I have to fight an uphill battle to prove that I'm not just a designer that writes HTML/CSS. There is ALWAYS the question of "so...how good are your frontend skills?" with an intonation of doubt. No one actually bothers to ask or determine about the level of your design skills. Another question is "which one do you prefer?". I really hate that question because it shows you don't understand what a product focused engineer is.
Positive response really depends on the stage of a startup. I'm finding that teams between 5-20 are looking more for specialists in design and engineering. Any smaller or bigger and a desingineer becomes a very valuable role to fill. So feeling I'm missing out on opportunities at some great startups cause of this phenomenon. Would e interested to know if anyone else has experienced this?
It's definitely causing me to think about my career path. Do I focus on one or the other? I know I am not great at both and that is because I have to spread myself thin in both areas and dont know the best tools and practices as well as I should.
Being a desingineer makes it really easy to start your own thing be it a startup or side project - I've done it a few times myself. However, sometimes you need financial stability, or are waiting for a significant idea, or just want to work with other really smart people on an idea with traction to gain more experience.
So we aren't unicorns and it's definitely not a double-rainbow life.
I remember reading Scott Adams's advice on how to get into the top 1% (well, reallu the top .0..1%). One way is to be incredibly good at one thing - like Roger Federer. The other way is to keep combining interesting and related things until you're there - ie., someone in the top 10% at coding, design, sales, biology, and construction.
Here's the thing - recently, we've been discussing the willingness of companies trying to hire to accept "false negatives" because the impact of a bad hire is so detrimental to a team. But I think a lot of "false negatives" may be coders who do pretty well in the interview but not quite well enough to get past the filter. The interview process almost never gets at their other skills. So the company fails to hire someone with exceptional domain experience and good design skills because he or she struggled a bit finding cycles in a linked list.
There are solutions for people like this. One is to be a founder - get an idea, start coding and designing, create an initial app, and see what kind of traction you can get. The other is very similar - you'll managed to get hired somewhere eventually, and you can start proposing projects. Eventually, you'll get to run with one, and you can be entrepreneurial about it (well less upside but at least you'll have a salary).
It's much easier to do this on your own or once you're established with a company. It's tough to get this across in an interview process.
We have this role at Airbnb.
After getting a BS and M.Eng in Computer Science, everyone was pleased as punched to let me code for them. But I wanted to code and design interfaces as well. What a strange idea - a programmer also making the interfaces.
Well, it turned out no one would take me seriously unless I had designed interfaces in a professional environment before. I needed someone that would take a chance on me, to actually let me design their UIs while hiding me away in their software team. (I managed to find one job that would, and for that I'm forever grateful.)
Once I picked up some experience designing UIs, the top companies wouldn't would take me seriously until I had some formal design training and credentials. So, I went back for a degree in Interaction Design.
Once I finished my degree, the top companies wouldn't take me seriously until I shipped some code that had my own designs in it. So I did that for a while, in a few hybrid dev/designer positions.
Once I shipped my code, the top companies wouldn't take me seriously until I had shipped a design of my own creation that was also my own (so, owning the UI, UX, code and business strategy). So I got back into entrepreneurship (something I'd largely given up with my pure CS focus), and started creating and shipping my own designs.
Now, as an entrepreneur, interaction designer and computer scientist, the top companies won't take me seriously until I start shipping designs of my own creation that are also visually stunning. Working on it. :)
--------------------
Only now, six years later, do I realize that no one will ever take you seriously unless they can define you. Programmers can be understood, and slotted. They have real, respected career paths. Designers can be understood, and slotted. They have real, respected career paths as well. Even Interaction Designers are slowly becoming understood.
Being a desingineer, while bringing me incredible amounts of joy, also feels absolutely terrible - because people are constantly coming along with ideas of what you can or should bring to an organization. The limits of the position are such unknowns, in fact, that sometimes people feel desingineers should be everything to everyone.
Sometimes that comes out of with a sense of greed - after all, it's on the desingineer to prove they shouldn't have to do all of those things, right? And, in fact, they feel entitled to everything. Early-stage startups are particularly bad about this, I've noticed - their "first designer hire" posts often forget that everyone starts somewhere. (Sorry, but it's true.)
But other times people simply misunderstand how long it takes to become good at each of the individual skill sets involved. And other times companies are still sorting out what skill sets their companies actually need in the same person.
-------------------
Is there anything we can do, as a community, to bring some clarity and definition to "desingineering" - so kids coming out of school don't have to go through what I have gone through? It's obvious that this is a position that companies need, but it's not one that will be treated with respect until its own practioners - a fair number of whom seem to be on HN - actively come together to help define it.
This is how the company I work for right now does it and it is EXTREMELY inefficient. I've been advocating them to go back to one person to do html/css/js/php.
I can see the above work for large orgs. But with a 3-4 person tech team, super specialization has not worked at all
I'm looking for jobs right now, and it's been an exercise in frustration. The coding jobs require CS degrees, 5 years of experience, tech interviews with big-O notation and data structures (trying to teach myself basic CS theory, but need a job now). The UI and design jobs require a smidge of front-end knowledge, but are mostly mocking and wireframing. I want to be able to employ all of my tools, but I feel like the hiring market makes me pick between being a front-end or a back-end guy, and I don't currently have enough specialization at either to get a reasonably good job.
How can I find companies that could use someone like me, when their job descriptions are specialized? Any thoughts or advice?
IME, you need certain attitudes towards life to get good at both.
You need to be a visionary AND an engineer. Usually people are one or the other and prefer it because they suck less at it. Hence, they eventually get great at it. But this means the other suffers. To be in the designer+engineer category, you first need to figure out what you are good at (essentially what you spend a large chunk of your time on - dreaming or coding) and then what you are weak at.
Then practice doing the weak thing for a couple of years.
Pretty soon, you are a designeer.
Problem is, in the startup world, I still can't figure out WHY you should be both when you can hire people to complement your weakness. Steve Jobs was obviously only a visionary and he, through practice, became great at it. Dennis Ritchie, an engineer.
Unless, of course, startup is not your endgame. Unless your goal is self-improvement powered by a zesty thirst for knowledge. In my limited knowledge, though Learnado Da Vinci fell into the designeer category, he was still very much an idea person (visionary) than an engineer - mainly because he procrastinated like crazy with his projects (for years, at times). This shows that he preferred conceptualizing the project and loved cultivating the vision rather than actually implement it.
Thoughts? Please give me some feedback, this stuff is important.
1) Entrance of lower quality, inexperienced founders who want an end product and only know about the buzzwords that supposedly go into building that product. They don't have an expert grasp on the development process so they naively think the process is to collect a group of people with all skills.
2) The advances in work process efficiencies make it easier to do different jobs in tech. Consequently, this makes it much more possible for 1 person to wear many hats somewhat more effectively. 10 to 20 years ago, these sort of job descriptions would be 100% insane because it took so much more out of the different disciplines to put software together. It would be like a hospital posting a job opening for a doctor who can also drive the ambulance.
On the 2nd point it makes me wonder if eventually at some point in the future the startup team along with the need for venture capital will be obsolete. If we follow the current trajectory, I could see building tech startups being more and more the domain of one to a couple people with slim to none capital requirements.
The advantages of the "desingineer" is that you cut out a lot of red tape and inefficiencies in the early stages. You can implement things much much faster if you know both front/back and how they come together. IMO, this is crucially important in the MVP/early stages of a startup where you don't have a lot of resources and need to move quickly.
The downside to this (and what I'm slowly figuring out), is that there are limits. It involves a lot of context switching. Someone else mentioned it but it's true... you only have so many hours a day and it's insanely hard trying to become proficient at design, ui/ux, and programming.
What ends up happening is that you "feel" like you're mediocre at everything, and when your startup is growing that feeling SUCKS. I would much rather have a small team where we each specialize (with some overlap of course) in what we can be excellent at.
Because of this, I reckon they would do poorly at a lot of the types of technical interviews that are in fashion today, such as puzzle interviews and data structure/algorithm questions that you'd probably only do well with if you had a computer science background.
"Tell me how you would go about building an efficient maze generator" is the wrong kind of question for these people. "How would you go about building token-field interface from scratch in javascript" would be a better question.
Sites like InterviewStreet and CodeSprint don't optimize for hiring this kind of person.
That being said, it's hard to do both at scale or really well. One is going to suffer as soon as the project gets to a decent size, I notice this every time I try and do it myself. So, props to people who can produce extremely high quality code and designs, that takes a serious focus.
Designing for the web requires that you understand the limitations of HTML and CSS and not push our crap from Photoshop that would be a nightmare to implement.
When we're talking about "desingeers" are we talking about designers that can write markup and style or designers that can code out a great Rails backend?
Maybe we could become awesome at multiple things if we are willing to invest 10 years into learning something instead of investing a few weeks.
Every developer is a designer. (You can't make something without thinking about it at least a little.) Every designer can be a developer if they want. Both skills take plenty of practice.
Nobody is likely to be 100% amazing at both, but that doesn't matter: a lot of day-to-day work is pretty mundane, so nobody has to be amazing all the time. As long as you have somebody great that you collaborate with frequently, you can still get a great product, and everybody gets to up their game over time.
Skill-based division of labor is fine for assembly-line products, but for iterative, creative work (which is what all startups are), I think you need intense collaboration, which requires broad skills. That's why IDEO, a design powerhouse, looks for what they call t-shaped people: http://chiefexecutive.net/ideo-ceo-tim-brown-t-shaped-stars-...
It's a cheesy name, but I think the idea's spot on.
My day job is as a physical product design engineer for a consultancy and have a degree in Industrial Design. So I would do the mechanical and aesthetic design of a product including Injection Moulding, Sheet metal, machining ect. which is not to dissimilar to someone doing the user interface and back-end of the software/web product.
What makes me a little different is that I spend my evenings doing web development and although I have never done it "professionally" I think I am probably allot better than most at the front end development using html, css and javascript (I do like a dash of coffee script). I also have a fair bit of experience with Python on the back end mostly using Django but have also more recently been experimenting with Gevent and web-sockets to do some interesting live updating stuff.
So I suppose I'm a bit of an odd ball, I can't work out how to get both the physical product design and all my interest in web development (front and back end) into one job. I think I will just have to invent a job for myself that does...
EDIT: I guess I'm a web-mech-prod-desingineer...
Also goes without saying that the companies looking for this person also will typically be requiring mastery of cross-platform application design simultaneously targeting most every known desktop and mobile operating system; a long, specific list of diverse technologies at very particular version numbers; they should be willing to relocate at their own cost, with remote work and telecommuting unacceptable; and of course they should be willing to work for less than market rate for a practitioner of even one of the skills they are supposed to be masters of, which should be no problem since there is a low cost of living in the obscure one horse town they will be moving to but which features lots of outdoor activities and family values as long as you don't mind the rampant small town corruption, house break ins, ATV, copper wire and catalytic converter theft, weekly stabbings over a girl, and pandemic meth addiction.
Some will say, "well, you probably aren't on level with a rockstar coder." This is probably true, although my clients are very happy. I can wireframe, design and code a large-scale web app without having to consult a single person (other than the client, of course).
I am starting my own web company now and I am finding that the Designineer badge helps me in great ways. For example, I wanted to quickly create a prototype to show a potential client a better way to go with their website. Normally, in a web company of 5-10 people, this would require consulting a coder, designer and whomever else is involved in the drafting of a project. This could potentially tie up 2/3rds of the company for the possibility of landing a new client. For me, this was all handled inside of a few hours and it makes the company appear more staffed than it actually is.
Dealing with clients on design projects compared to code is like night and day.
I recently completed a four-year graduate design degree (architecture) after a lifetime of math, physics and not a whip of art or design experience. Here's my take on this issue.
Engineering and design are both fundamentally processes of creation. While both creations must meet one or more objectives, the types of those objectives often differ. Engineers tend to optimize for quantitative objectives and criteria; designers tend to optimize for qualitative objectives and criteria.
I think this difference has two significant consequences:
1. The solution space for designers (or anything with qualitative criteria) is much larger than for engineers. 2. There are many more opportunities for mediocre design than there are for mediocre engineering.
By point 2., I mean that not only is the solution space of design much larger, but there are also many more "attractors" of solutions. In engineering, the attractors have a strong pull and are more recognizable as such. And, because the solution space is more quantifiable, the relations between those solutions are more well understood and comparable.
In design, the attractors are more fuzzy and their locations in the solution space are often unknown. This allows anyone who can find a mediocre design solution (especially those who find "pretty" visual ones) to become a "designer". But good designers must do much more. They must understand the design space enough so that, from any starting point, they can justifiably navigate towards that same design solution.
This involves crossing certain thresholds -- bifurcations -- in which the nature of the design solution changes. Recognizing when to cross these thresholds is, in my opinion, a task perfectly suited for analytical thinkers. You don't need to be able to create visually pleasing designs to find the best design solutions. Visual aesthetics are simply one component of optimizing the already discovered design solution.
So my advice to engineers is this: forget about visuals. Design analytically, question the existence of design components and their relationships. If you cannot justify their existences and relationships, you need to somehow change their nature (bifurcate the design) until you can justify it. Often starting from the bottom-up is the best way to accomplish this.
Once a design solution is in sight, optimizing its visual aesthetics is much easier -- you've already framed its problem so well!
Finally, I must note the three tasks which are essential to the design process: research, experimentation and documentation. Surely these tasks are also vital to engineers, or anyone else involved in processes of creation.
---
(PS If anyone would like to talk about how many of the concepts of dynamical systems theory can be used in the design process (and the design itself!), I'd love to hear form you!)
This has been my problem breaking into the industry. A few years ago I didn't understand a lick of HTML/CSS and changed that by digging in and learning it. Now I can build WP themes from scratch (not the most semantic, but I can still do it), and write functions/code in PHP. Now I'm working on js and jQuery, while also trying to learn the rest of the LAMP stack.
Still, it seems like every time I teach myself something new, a new skill is added to the startup rockstar job requirement list. I get that startups want to fill big holes, and that many pay accordingly, but this is why so many junior level people decide to build their own companies instead of asking permission to learn a little on the job.
That's how I became solid (but not expert-level) in distributed systems, machine learning, web development, UX/UI design, and app dev.
Even for large teams, having people who have a deep understanding of all areas of work is underrated.
I think websites in 1994 looked better.
Regardless, I think most startups who hire this way are trying to have their cake and eat it too. It's probably part of the reason why some startups find recruiting so difficult.