Desingineer – the mythical person every startup is looking for
brajeshwar.com
brajeshwar.com
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.
One thing I've noticed about some (not all clearly) people who are very good at one thing (let's say back end programming) is they might not really want to do something totally different. Dealing with customers? Writing documentation? Writing front end javascript? Its a bit like pulling teeth.
I don't mind in the least. Documentation writing is great. Making beautiful products is great. Listening to customers (and investors) is great. And yea, I like coding too!
I keep hearing about the demand, but I keep not seeing it. Unicorns looking for unicorns?
In a product, you'll deal with:
- Coding the product back-end
- Doing its front-end and UX
- Writing the documentation. (I like that too)
- Design the landing page (and may be the Interface, if it's too important/creative)
- Marketing, branding and copywriting
- Customer support
- And finally getting some gigs (and you can charge well for them) from time to time
So you get to try everything. There are lot of opportunities on the web, you just need time to grow the ideas and validate them.
That knowing things is more important than knowing people
Hence (most good) programmers will find dealing with customers and doing phone support a tedious chore.
What you are looking for then is a programmer that doesn't passionately love programming. If you find them I am willing to bet that as far as their programming skills go they are not so good.
----
Alternately, look for someone who used to be a hot-shot programmer, but then dialled it back, "got a life". Look for programmers in their 40s or 50s who are more into the social aspect of life. The problem is, they won't work 80 hours if you're only paying them for 32.
If you are waiting for somebody else to figure out your worth, you're trying to make them do your job, and it's not gonna work.
You have to tell them -- or better yet show them what your value is.
That's the only way to sell products, or sell yourself. The people in the seat on the other side of the desk see a lot of candidates. They don't have time to fully investigate every one. They trust that if a person doesn't have the confidence or self-knowledge to sell himself, or herself, that it's not worth their time to dig deep and find it.
I say this as a person who's kicked ass at job interviews, gotten every job I ever applied for -- 3/5 of which were not open positions, but made for me by my request -- and also done quite a bit of hiring.
Anyway, I'm pretty sure that's a quibble on my part because your post still gave me an adrenaline shot of motivation to GET OUT THERE and MAKE PEOPLE LOVE ME!
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.
I think more important is just to get out of the engineering mindset and try to think like a user. I bet just sitting down with a non-technical person and working through the UI design would help a lot to keep me from going into my engineering mindset.
As in any profession there will always be some extraordinary individuals that are heads and toes above the rest.
I don't think that the skill set required is actually that different, but your right in saying discipline is required in order to excel in both.
Then I think the key point is those that do possess both skills and the discipline/drive to excel at both are usually either doing very well doing their own thing and aren't looking for work.
And yes, it often takes longer to code features than it does to draw and place their UI elements.
For almost all situations I think you are better off getting two developers with complementing skills rather than two jack-of-all-trades that can do "everything". If you can only afford one person then seriously consider how to contract out some tricky parts of the weaker skills to an expert. Then you have a good foundation to build on.
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.
I believe strongly in the value that knowing both can give you, and for certain classes of small project it's a huge win.
But you're right: context-switching is a limiter. You only have so much free time and mental energy.
For me, I know that I prefer working with competent UX/visual design guidance. I can get some really pretty results from doing my own designs, but it's a wonderful freedom to know that I'll spend 15 minutes in the morning iterating on a piece of paper with a designer today, and then just go away and do my thing. I'll get a PSD that will make the prototype UI more concrete late-afternoon, and the next morning we can talk about how using the UI makes us want to change it.
But if I was doing it all myself? I doubt that even with twice the time, the overall result would be equal, either on the code or the design side.
That designer keeps all of his visual design acumen and photoshop 'muscle memory' loaded into cache.
I keep my emacs key-chords, the code's secret sauce, my bash and git aliases and the topography of staging environments loaded into my cache.
There are definitely projects that exist where you can 'do it all', but ... node.js' model is great for maximizing throughput, but when you've got drastically different types of work, that's what you have multiple cores for. ;)
More than just the same work 2x, but more like 3x or 4x because of holding it ALL in your head and trying to balance it.
I had the same experiences you did. So, while I'm a good back-end developer, and a great front-end developer, I've chosen to focus on design because A) I'm amazing at it -- it's my best skill, so that is the best use of my energy, B) I don't have the time or energy to do it all any more.
That said, I do still pay attention to the overall shape of the code (and my husband/biz partner pays attention to the design).
Several times, I've been able to wade into a drawn-out discussion between my biz partner and one of our freelancers, & cut thru the crap with a beautifully architected solution. Which always makes me feel warm & fuzzy. And they look at me and go "Oh yeah, you DO know what you're doing," which is worth it just for that. (Because my biz partner has this irritating tendency to tell me "that's impossible" as if he forgot that I damn well know it isn't ;)
Being entirely wrapped up in the code OR the design can be dangerous. ("That's impossible!" - ha.)
I wouldn't trade my ability to do both for anything. I'm glad my husband & I are both "desingineers," at slightly different mix percentages.
The problem is, he ignores deadlines because he hates the brain dead abstractions and bad code, and decides to unilaterally refactor.
I feel sorry for him because I understand that he can't stand the sloppy code, he is working with nimrods and mediocre people (and awful tools), what he should do is quit. (some of the mediocre code is, I admit, mine, I've stopped caring and I just want to build a nest egg to quit)
Unless I'm working for myself I find I rarely have this freedom. This is why I left my last startup. If I'm trying to do both there are too many things that I'm accountable for on a daily basis to the boss, who in my experience doesn't want me to stop coding to "waste a day" designing.
And in the end I feel like I just end up doing a half-assed job on both. More power to those who can do the switcheroo, be excellent in both, and keep the writer-of-paychecks happy!
"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.)
If we accept the initial premise that designers who are also engineers are as rare as ninja-unicorns, then surely the logical thing to do is to turn them into managers?
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.
Simple! Pay 'em less & give 'em equity!
Also, if you're in the situation where you have to hire generalists instead of specialists, you are likely a small business, rather than a high growth startup. If you have a war chest and are looking to scale, it's a mistake not to hire specialists -- you as the business owner should be able to tie everything together, not an employee.
Defining an engineer is easy: can build systems that optimize for function. Can build a UI that the user can understand to the point that the user can gain value.
How do you quantify design? How do you quantify a designer? If we had metrics, then it would be easier to understand which freelancers actually are "Desingineers."
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.
And... I think you are taking on more than you need to for the discussion at hand.
If you are an excellent JS programmer, you don't need to keep up on the latest libraries. You can code what you need yourself. Sure, maybe you do something from scratch that could have been done with a newer library, but the 10 hours you lose there is more than made up by not having to do those 15 hours a week keeping up.
Likewise on your other tech points. Constantly churning your toolkit doesn't speed you up. It slows you down. There is a balance to be found where you keep up "enough", but still focus the majority of your time on delivering work.
I choose to spend a day or so each month trying to keep up, then roll with what I know for a while.
Likewise with some of your other activities. Meetups and business models? They may help you be a consultant, but that is adding yet a 4th role to the topic at hand.
Many of your other points also apply more to a consultant than a heads-down designer/coder.
In general, it sounds like you are trying to be an even rarer breed. More power to ya, but it may be overkill for most people.
As the only link I can find to your work that you've shared so far is this http://cookbuk.com/ (from http://news.ycombinator.com/item?id=2289991)
The design's not bad and avoids most developer designed pitfalls, but it's not great either. HTML wise you've resorted to nested divs, there's errant elements floating in the wrong place and there's also a bunch of commented out code in each html page, which imho is always a massive red flag for me programmer wise. You shouldn't have to comment out code if you're using a VCS.
Obviously this is from 2 years ago, do you have any examples that better show off your skills now?
I'm not trying to pick on you here, it's more that I am honestly interested to see some of your work.
I pretty much check the source HTML of every startup or demo site I see on HN as a matter of professional advancement and to see what they're using. People sometimes put easter eggs in their HTML or headers too, so it's fun too! Or even better when they're not minifying their JS and leave stupid comments in.
You'd be surprised about how much someone's HTML can tell you about them.
(Is this how German got started?)
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...
Would you say over the years that you've oscillated between points of the stack, based on the needs of your current team? I've found that to be the case for me.
At my last job I did a lot of front end work, at my current gig I'm focused on the backend. I enjoy the oscillation and try to keep interesting side projects where I focus on the opposite of what I do in my day job.
There's usually an opportunity to do all this stuff over time, you just have to be willing to jump on it when it comes up.
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.
Clients seeking consultants have different interviewing tactics, even though the clients themselves have an engineering background. A good consultant is too expensive / too busy to be asked about detecting loops in linked lists or about how many balls can fill a bus. Therefore for a consultant references and a portfolio are what's taken into account.
And these can be built through hard work. At first you could build something for demonstration purposes and open-source it. Or you could work on a project pro-bono. Of course, consulting requires good marketing skills - but we are talking about generalists here.
Part of the problem is that many programmers still don't get to do open source work (I couldn't have revealed the source code to what I was working on at the time in an interview), whereas many other fields (design in particular) provide more opportunity to show off your work publicly. But there is a choice here, and as you've pointed out, it's important to make sure that at least some of your work is publicly available.
Even "demo" sites don't strictly need to be demo anymore - a small "real" app can be created, deployed, and used, even if the main purpose was to show off skills.
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.
Generalists are considered to be mediocre (jack of all trades, master of none). I don't know why though - maybe it's because many developers calling themselves specialists in a domain are doing the same thing for 5-10 years in a row and it's scary when other people take a different path.
The reason that everyone thinks 'desingineers' should go into entrepreneurship is because of the tremendous advantage this gives them. Bigger companies are failing to capitalize on people with these skills. These same skills allow desingineers to produce higher quality work at a faster pace for a cheaper price then any other combination of programmer and/or designers. This naturally leads to a competitive advantage that can(should?) be capitalized on.
In my experience, a designer-coder is always in demand and can name their price.
However, right now I am debating which direction to go in since it has a mess trying to get anyone to take me seriously without being 100% designer or 100% programmer.
1. You don't command respect (either in posture/body language, the way you communicate, your portfolio/lack thereof, some combination of the three)
2. You are trying to work with nimrods
If you don't personally command respect, you will never get respect, no matter what you do. Unless you shore up your body language, communication style, and portfolio.
If you're trying to work with nimrods, nothing will ever please them. There's nothing worse than an ignorant client who thinks he knows what it takes.
Sometimes it's a 1-2 punch with all factors, in which case you're screwed. Better work on your clients (charge more) and work on yourself (take improv training, fix your body posture, etc.).
Indeed, this post was not meant to be bitter - and I think I would do it again - but it was meant to point out that the longer we take to pin down a definition, the more out of control it will get. I have half a mind to start some sortof of "Desingineers Association" to help get this solidified, in much the same way the Interaction Designers Association was so crucial for solidifying that movement in the late 2000s. Thoughts on that would be appreciated.
They all hired me for what I had already shown I could DO.
I even put on my resume "School of Hard Knocks" - back when I actually had a resume.
If I were you, I would wonder that the common thread is in your experiences.
But seriously, I'm more concerned with the student who is interested in doing both and is still unsure of their career, than in the competent professional like you or me. It is obvious that the field wants desingineers, more than self-teaching can produce - what can we do to encourage them, either at the educational or at the job title/industry level?
"We understand that- they just didn't start here- or anywhere else that is hiring, for that matter..."
I started messing around in photoshop making paintings of websites and dreaming up ideas in high school. In college, I convinced a programmer to help me build one of my ideas, and he agreed on the condition that I had to code the front end HTML and CSS. So I learned how to do that and surprisingly enjoyed it.
Then I realized I could quit my job making websites for people, so I got even better at building and deploying static sites.
I started going to meetups and built more side projects and sites with friends and started to get more comfortable with Rails, JavaScript, Git, etc.
After college, I went to work for Olark (YC 09) and realized that I could be far more useful if I knew how to program. So I've been working hard to get better at the various languages and frameworks that comprise our stack. And I'm well on my way to becoming a desingineer.
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
Designer starts on the project a week ahead of programmer. Gathers requirements (with the programmer tagging along). Does paper sketches which get a general a-ok from everyone.
Does html prototype, ideally already in rails.
Hands off to developer, developer wires up. Over time they iterate together on the same codebase.
Your designer seems to do both (1) and (2) which is more manageable and something I've had work well. Likewise, your programmer seems to do both (3) and (4).
The problems arise when you need to tweak a small feature. You end up needing four-five people(if you count product manager) to touch it to make the change happen. It's not efficient at least for a web start-up(I can see it work for larger enterprises).
That does sound pretty nuts - seems like almost every layout/front-end/design change you'd ever need to make would touch both HTML and CSS, requiring two people to handle it separately.
It works really well. We also continuously try to expand to the others territory.
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.
Anyway, I think I can say without exaggeration that I'm better than average in both engineering and design. At least for me, I think you have to be born that way -- you get pleasure both from aesthetics, and from solving problems. And when left alone by a world that sees both as separate, you just do your thing.
I started got a computer when I was 11. Other people played games. It seemed completely natural to me to spend almost all my time programming pretty graphics demos.
But how do you get any better? I think you have to be the kind of person who seeks challenges, who seeks a ladder to climb.
For computing, I think we all know that drill. Open source has made it so that you can start anywhere and go all the way to OS development, if that's what you want. You can also get work (even if you have little experience) and use other people's resources to educate yourself.
For design, it's a bit harder. Perhaps I was lucky in that I continually wavered between science and engineering, and design and journalism.
In my teens and early 20s, I was the production/layout guy at student newspapers. So I could educate myself, with thousands of dollars of other people's money, in a way that was almost ridiculously unsupervised. That sharpened my appreciation for typography, photography, design, etc., as well as gave me some experience managing people, budgets and deadlines. But I guess that other people in that role might not have gone as crazy as I did for the design aspect. Especially for the entertainment sections (where design was allowed to be more fun) I was trying to top myself with every single issue that I did. You know that you're doing it right when (a) the bloody thing actually makes printing deadline, week after week (b) you walk around the university and you see people putting your layouts up as a poster.
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.
web design as a kid + DT at school + always inventing things -> Industrial Design at uni -> interest in developing product from both the user facing side and technology behind it.
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!)
One is on my master's thesis and how a design can actually be the result of a complex dynamical system. The other is on the process of navigated a design state space during the web design process.
I'll be sure to post both here when they're completed.
What I also find fascinating is the way words shape the way we see the world, instead of letting the world shaping the words we use.
I believe that we are creating artificial limits between jobs. Unless you are coding some really complex piece of software, programming is not that hard, at least not as "engineeringy" hard as electrical or civil engineering.
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.
Except this is a discussion in text. Sure, yes, walking and talking are two different things, but how else are you going to know what point of view someone is speaking form unless then tell you in their comment? No reason to assume people are just tooting their own horns for 'hn-cred'. Does your comment mean so little you'd ruin it by belittling people?
As for the rest of your comment: to be fair, from the sounds of things, your still very much new to all of this. You are a junior developer, and that's nothing to be ashamed of. The problem is you are looking at these startup rockstar job requirements and deciding for them. That doesn't mean you are ready, but you shouldn't be the one to decide that. After all, good companies are always looking for good people. And while that position they have posted might not be right for you, they might have another place for you.
> this is why so many junior level people decide to build their own companies
Maybe. I don't know, personally. That being said, though, is that starting your own company requires another "rockstar" requirement list all it's own. Don't fool yourself.
If you're put off by "startup rockstar job requirements," starting a company won't be any easier.
Anyway, I'm not ashamed of it at all. I went through a job search and had a lot of bad luck. I'm not actually expecting to be given a rockstar job, but even the local small-time shops have the same requirements. Every single company I've seen is looking for the mysterious rockstar unicorn programmer.
So, after eventually finding a job, I decided to build a bunch of projects on the side, and we're getting a lot of traction. If I were to claim rockstar status at anything, it would be persistence. I guess you probably didn't look at my bio.
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.
Even before I started my own companies I was a product manager at a large company, and groking the hardware, software, UX, manufacturing, and marketing aspects of the product gave me uncommon influence with the real experts in each of those domains -- because I had and could communicate that end-to-end vision of what was possible.
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.
Once you do make it into the right places though, it is an incredibly fun and diverse job. I take most of my satisfaction from the notion that I can go from concept to (prototype) implementation on my own if I have to. It is one of the most empowering feelings in the world.
For example, I do a fair amount of design work in photoshop etc. I can implement simple front-end stuff. But my co-founder can get complex front-end engineering stuff done 5-10x faster if I just help him pair program it. If I didn't understand code, we'd be unable to do that. Something similar probably to be said about his sense of design since he often ends up giving me really good feedback in the middle of building the page out.
I wouldn't expect my designer to write a sorting algorithm, or a web crawler, or anything that's more code-y, but HTML/CSS/JS and the frameworks which hold them are part of the toolset.
Please keep in mind that I have met quite a few people that dabble in everything but a true professional at both is quite rare.
The funny drawbacks are usually that you can hardly win a discussion with people that don't know you well since they will usually corner you on your other 'personality' such as "says the interior decorator" when talking about CQRS or REST etc.
I currently work on 'Evil Enterprise Contractor' building web-based products but I too get to switch context all the time, from conception to live.
I know the article in question is talking about front-end/back-end design...but I'd argue that software and hardware engineering are just as peripherally-related-yet-substantially-differentiated enough.
So, just find yourself another Steve Woz...
i've been a web/graphics designer for 9-10 years and coder for 3.5 (python at first, but this year i started ruby/rails)
from personal experience i can say almost all creative/visual people are scared of logical/geekish computer stuff ... i was scared and lost at first too but then i realized i'm quite good at architecture and once i put my focus on becoming a better at it things weren't scary any more. my designs improved, my love of internet expanded and i can't imagine doing anything else!
the most important mistake designer make is that they think they need to become REAL "software engineers" like building compilers or even worse thinking they have to master java or C++! (nothing against java, it's just that designer shouldn't start with java or similar programming languages)
for all you designers first learn html5, css3, a bit of javascript and then start with python/ruby (django/rails) and go from there. it's not a 1 night journey, it will take couple of years but it's worth it!
I know what you mean and it is easy to pick issues, just wanted to state these differences.
My true expertise lands in the front-end development side of things but I can do it all. I prefer not to though. It's a job for multiple people. However, having the ability to understand all the layers is a big plus when managing/leading a team.
No, I'm serious. That is not a joke. And it works.
as for being able to add input into simplifying user experience, reducing clicks, using certain jquery widgets over html elements, etc, i can provide ample input. so it's really the visual piece that i lack. maybe it's time i picked up a phtoshop or illustrator book for myself :)
anyone hiring?
Startups almost certainly would do well by hiring generalists but I doubt it's often that they seek them. The demand for specialists will have altered the supply of generalists in a way that probably makes searching for them costly.
I am a generalist although not a "Desingineer" as I haven't picked up very many design-related skills. I personally disagree with many people in this thread on what being a generalist means. Being a generalist does not mean you have several discrete skills, and it does not mean you are a good a programmer as a "programmer" or as good a marketer as a "marketer", etc. I think this separation is a projection of a formal education. Instead I would describe generalism as about having one big formless ability accrued from every discipline you have studied. This is a potent skill as it gives you a broader understanding of how things work and sometimes the cross-pollination of ideas allows you to make much better decisions, and act in a way that others consider wildly creative.
Of course, that's not to say that being a generalist is somehow better than being a specialist. Unless you're a genius [1], specialists will often outperform you in their area of expertise. It can also be a little depressing. Sometimes it feels like you've taken 100 steps in a 100 directions and ended up very close to where you started. However, it definitely has its pros -- for me, it satisfies a thirst for all kinds of knowledge.
Ultimately the rigid distinction between specialist and generalist is artificial. Few are pure generalists and few are pure specialists. I don't worry that I will be held back by other's difficulty in fitting me into a role. I might have multiple abilities but like most of you I have some which I am slightly better at. I doubt that even the most fervent self-proclaimed generalists can avoid becoming a little specialist at something. ;)
I'm pretty sure there MUST be a person better than me in all those areas, but not because I'm not a master of my skills, but because there is just always someone better. Becoming a Designeer happens only if you have the time (a decade?), and the inclination (interests in the right fields and skill sets at the right intervals in time) to learn the things you need to learn to do the job. Of course, there's also the fact that you need to be lucky enough to have people to hire you to do those things so as to get enough quality experience performing the tasks you need to perform.
Interestingly enough, I'm in the office right now... and this is the list of stuff I've done today: 1) Finished coding a Windows service that acts as a data bridge between an two applications and three types of databases. 2) Worked a UX prototype for an IPad app (made in Keynote) that integrates with an in house product. 3) Finished a redesign for another in house app (this one is a ERP type WebApp). 4) Modified a series of E-cards the in house designers made because they where not optimized for email and had some alignment, whitespace, and typography mishaps. 5) Worked on integration of commerce hardware with 'special printers'. 6) I'm currently designing the visual aspect of an interface for yet another of our in house products.
BONUS: Yesterday I spent 3 hours securing the web servers for our website and a ticketing tool that our customers use.
I am by no means the best programmer, sys admin, designer, or UX architect, but I find all those roles are second nature for me and I have no problem getting a job (I literally get a call every couple of days by recruiters or companies offering me positions), and I only work in places I know I'll be having loads of fun and interesting challenging work. Designeers are not hard to get because they don't exist. They're hard to get because they want to make their own rules and work in things they actually want to work in. Offer them this and you'll invariably be able to score someone that will fill this often looked for but generally not realistic position.
What are some good books/resources for a code dude to learn som design and UX? I feel lost with this stuff....
I myself am an 8 + 4, at least in my mind.
this line of thought just stems from the conflation of graphic design and interface design. the skill in demand is the latter. to be good at it one needs to be able to be proficient in html, css, javascript, and have basic abilities in whatever server-side technologies are in use.
so, yes, these folks will be hard to find. just like any other good engineer, they'll either have a job, be kicking ass, or doing their own thing. c'est la vie. try offering a wage they can't refuse.
I really don't follow. A kick-ass interface designer can know nothing more than Photoshop. A front-end guru can be terrible at interface design. There's very little connection between interface design and the technologies used to implement it.
The best designers will know HTML+CSS+Javascript pretty intimately for a variety of reasons.
Can you name a few? I work with an absolutely brilliant designer who can't write a lick of HTML/JS/CSS however he intimately understands how his designs will translate to a browser.
For starters, whatever you design in Photoshop typically looks 10-30% different in the browser when converted to HTML. That is significant enough to make the concept look very different than the actual browser interface implementation.
An interface designer who only operates in Photoshop thus cannot deliver accurate-looking concepts.
HTML isn't the culprit here. Any design done in a static medium is going to change when actually implemented on a device, for a platform. But it could just as easily be Flash as HTML. Good designers understand and account for the target medium (flexible sizes, variable fonts etc).
Also I reject your initial hypothesis. With a knowledgeable designer's design I can get a pixel perfect HTML implementation. If your design changes 30% just in the implementation then your designer doesn't understand the medium very well.
contrast that to being able to rapidly iterate on the real code.
i don't mean iterate as in "code a feature, commit to the repo, send for review, do over". i mean the tweaking while coding.
Good interface designers should definitely know the basics of the technologies used to implement their creations, in the same way industrial designers are expected to have some understanding of materials and manufacturing processes. It's often said that designers thrive on constraints: a designer does his best work when he knows the limitations of his tools, and works with their limitations and defects to create something useful instead of pursuing some impossible level of perfection. Designers, too, have to ship, and they ship best when they know what's behind the facade.
"They’re doing something on their own, are already kicking ass and are not available."
It's not that they can't use an extra $10k per month. They most certainly are available.
They're not available at 'speculative, "startup" wages' with unknown prospects even if you get them on board with a token amount of equity and even if you get funding.
They can do it all, and are doing it successfully. They don't need you.
So what? I don't need Google, I don't need Microsoft, I don't need IBM. These companies would hire me by putting some money on the table.
The key to the 'desingineer' is that, you know, they don't really need you. One of your skills (the person looking for a desingineer) is putting the pieces together, finding the people and getting them on board, none of whom can singly do everything. So, they need you.
THe desingineer doesn't need you. If you want them on board, you're going to have to actually open your pocketbook. Imagine that.
There are just as many patterns and underlying systems in design as codecraft, and vice versa. And they're not that dissimilar.
Design isn't "art" -- it's a type of making things fit for purpose. You can have purely functional design that meets the purpose without soul. You can have purely functional code that meets the purpose without soul.
The best design is crafted with soul. But so is the best code.
As somebody who does both, I speak from experience - they're just not that different. Superficially yes, but not at heart.
https://github.com/analytics-machine
Contact me: tblobaum@gmail.com
...and designers who, when pointed out why he forgot something obvious like logoff links, just claims they do not fit the design...
...all i can say is that both are slackers and lazy.
the Engineer is just avoiding painful tedious work.
the Designer is just avoiding painful tedious work.
I not even a good coder nor a good designer. But heck i can identify slackers using only common sense.
I possess: Taste, attention to detail and aesthetics, an understanding of human factors as they relate to computer interaction.
What does that make me? :)
Right now I am working in C#/WPF for one company and Sencha (ExtJS) for the other.
I know the article is probably referring to someone who is equally talented in development as they are design, able to create the backend along with the frontend, but I feel that being able to implement my designs in Windows Presentation Foundation, ExtJS, JQueryUI, Wordpress, etc make me a desingineer as well.