6 Things a Non-Engineer Should Know Before Founding a Web Startup

Despite the obvious look of shock and panic on the faces of my WePay teammates, I recently committed my first lines of production code.  Although It took over a year and a half for me to contribute to WePay’s code base, and it’s still not particularly substantive (a few lines of html on the exterior of our site), it still feels pretty darn good.

I’m not trying to become a developer. Trust me, there’s a ton of other stuff that needs to get done at WePay. I just discovered something that our site needed (and something that I really wanted because it would make my job easier), which wasn’t going to get built unless I found a way to build it.   We’ve received quite a few requests for “How To” guides, and I’ve also gotten tired of answering the same “how do I…” questions over and over again, so I built the How To section of our site. Specifically, How to Collect Money Online, How to Send Bills, How to Collect Donations, and How to Sell Tickets.

In addition to my first official commit, WePay also just hired Rasmus Lerdorf, the creator of the PHP programming language. All in all, I thought this was an appropriate time for me to reflect on the non-technical things I’ve learned about programming since founding WePay.

[Side Note: In a lot of my posts, I think I come off as a self-loathing non-Hacker, which is entirely unintentional and mostly untrue. During our summer in YCombinator, I was one of the few non-developers, and I was frequently asked: “if you don’t write code, what do you do all day?” The question annoys me for a variety of reasons, but mostly because I did a lot. I think there are abundant non-technical factors that lead to a startup’s success, and the responsibility for making those things happen tends to fall on the shoulders of the non-technical people (assuming the company has those – in our case, we did). At some point, I’ll write another post about what a non-engineer does, or should do, during the early stages of product development. In the meantime, I just discovered this post, which is pretty damn good].

So, without further ado, what I’ve learned:

  1. Don’t be Helpless. As the only non-developer at WePay, it’s pretty tempting to become technically helpless. That would be a big mistake, and there were times when I’ve gotten pretty close, and it has paralyzed the company. Programmers != Technical support, and a team of developers does not an IT department make. Installing software, setting up a network, changing copy on the site, etc. is not necessarily the job of the developers (in fact, it may necessarily not be their job). I’ve seen arguments about the difference between a programmer and a hacker, and from what I understand, the difference boils down to one thing: hackers will always find a way to get something done.  If you’re a programmer, you can also be a hacker (I would argue that our programmers are), but you don’t have to be a programmer to be a hacker. One of our corporate maxims: everybody’s a hacker.
  2. Almost nothing is trivial. I used to say: “this should be a pretty trivial change,” a lot more than I should have. Just because something is logical and it makes sense, does not mean that the code can easily support it. From what I can tell, nothing is more frustrating to an engineer than a non-engineer asking for something complex, and treating it as if it’s trivial.
  3. The 90/10 rule. When you first start building a piece of software, you can pretty much do whatever you want because you’re not constrained by what you’ve already built. So the first 90% goes by very quickly, and you can see a ton of tangible progress. You go from nothing to a lot very quickly, and it’s exciting. The other 10% takes forever (literally forever, see #4), and it’s hard for non-engineers to see that progress being made.
  4. Software is never finished. Software is like a living breathing organism. It’s never “complete”. For startups this is obvious: the application changes and morphs, it adds features and takes them away, it scales, etc. Even for non-startups, though, the software is never finished. It needs to be updated, vulnerabilities need to be patched, and bugs need to be fixed. I used to think that you build the product and then you get people to use it. As it turns out, these two things happen at the same time, from the beginning, and throughout the entire lifecycle of the company.
  5. Non-engineers are not “designers” by default. It’s easy to say: “since I don’t write code, I’m in charge of designing the site and improving the user experience.” And after saying that, it’s easy to put together a bunch of wireframes and say: “make this”, then do some QA and say: “fix that.” That’s not design and it’s certainly not improving the UX. There is both an art and a science to design and UX work, which takes as much time to master as it does to master most technical skills.  I think most non-technical founders working on their first Internet company miss that point. Because you are non-techinical, does not mean you are by default an authority on design and product; in fact, it could easily mean the opposite. If you want that role, you have to work for it (more details in a later post). Edit: Just read a comment that said: “don’t automatically assume engineers can’t design!” I couldn’t agree more.
  6. Don’t pretend to be more technical than you are. Especially in the Bay Area. First of all, it’s incredibly transparent (even to non-technical people), and you will lose all credibility. It also pisses off engineers. On the other hand, being honest about your technical skills, genuinely asking for help, and trying your best to contribute, is like trying your best to speak the local language in a foreign country- it’s a sign of respect and humility.

Good advice? Give WePay a try, it’s free to sign-up!

52 Comments

  1. You pretty much spoke my mind.

    Thanks for the post!

  2. Bit Zesty says:

    Great post, I look forward to the one on ‘what a non-engineer does, or should do, during the early stages of product development’

  3. steve says:

    All very good points. Also reminds me of things I have to do when not doing the engineering. Thank you

  4. Great post, I completely agree, especially with the “non-engineer=!designer”

  5. Elle McTavish says:

    Let me add a 7th thing to the list of what non-engineers should know before founding a web startup. Here it is: The web developers programmers, and hackers you’ll have working for/with you aren’t engineers either. Okay, there might be the odd one who made a career change, but the rest aren’t.

    I come from an industry and currently work for a company in which a wide cross section of different engineering disciplines are required for our product development teams. Among those we need embedded firmware engineers for hardware control. The first rule in sifting applicants for firmware engineering is to discard all that lack an engineering degree. The second rule is that a computer science degree is not an engineering degree. The third is that having an engineering degree is a starting point, not a destination. We don’t have a rule for web developers applying for an engineering role because that scenario is just too silly to bother.

    You might be tempted to suggest this is elitism, but it actually comes from long experience. Computer programmers are highly skilled folks and we have a lot of them on our product teams too. They develop the workstation and server software that are components of our systems. Their training is quite different from that of engineers. Match the skill set to the role.

    If your non-engineers are trying to misrepresent themselves as engineers, look over your shoulder – that’s trouble coming.

  6. raberman says:

    Somebody made the same argument (with the same abrasive style) here: http://news.ycombinator.com/item?id=1300343

    It sparked a lively debate. Some highlights:
    - “If you apply cleverness to solve problems, you’re an engineer. Engineering is the verb form of ingenious.”
    - “At many (most?) of the biggest software companies, “engineer” is the term used to divide technical people (including devs) from non-technical people.”
    =”Personally I think engineer is a better term than “programmer”
    -” very precise definition of an engineer: Engineers build tools. Artists build amusements. Scientists build ideas. Programmer = Engineer.”

    If you are talking about formal levels of academic achievement, yes, I suppose you are correct. Otherwise, it’s a relatively nitpicky point, true only in a limited context.

    “If your non-engineers are trying to misrepresent themselves as engineers, look over your shoulder – that’s trouble coming.”
    -yes, on our <10 team, our "non-engneers" are surreptitiously and malevolently "misrepresenting" themselves. I will indeed look over my shoulder.

  7. Pingback: 6 Things a Non-Engineer Should Know Before Founding a Web Startup – WePay.com « Tech4buziness – Eng

  8. Paul Heath says:

    If a developer gives you a large #hours and/or extended timeframe to implement something, it means they don’t want to do the work as “specified”.

    Primary cause for this scenario is usually that (1) you have not explained/documented the feature cleanly/concisely enough (2) have not thought through all the implications which means (3) the developer has to do all the lead-up thinking, designing, coding, testing and taking blame if it doesn’t meet the murky spec. Not an attractive proposition.

    As the “non-engineer” you add huge value by doing the necessary heavy-lifting up-front to clear the way for the developer to do their job in a streamlined way.

  9. Patrick says:

    This article is riddled with errors relating to the legal status of engineers.

    An engineer is someone who, at the very least, has graduated with a Bachelor of Science within these general concentrations: mechanical, electrical, aerospace, chemical, industrial, nuclear, software, computer, systems, genetic, civil. In many countries it is illegal to call yourself an engineer without the degree + a license.

    A bachelor of computer science is not put through anything close that resembles an engineering program. In addition, a “hacker” has nothing to do with development. It is merely a word thrown around by buzzword-drones.

  10. Sam says:

    Some great points, now all we need is the article that points out the 6 things an Engineer Should Know Before Founding a Web Startup which will cover off the points that the non-engineers deal with.

    There are a range of people and skills that are required to ensure a startup or any professional project runs well, all are crucial and the project will fail or blow out if they dont work together via tried and tested processes.

    Thx

  11. Reeta says:

    I like this point “Software is never finished”. this is very important to understand as a product owner.

    BTW congrats to have Rasmus Lerdorf in your team.

    cheers.

  12. fabiengoulam says:

    Nice post, as a software engineer I couldn’t agree more ! Especially on #2.

    Have a nice day

  13. Izzy says:

    If you claim to be a structural engineer but have no credentials, that is fraud. If you claim to be an engineer, you could pilot an invisible choo-choo around the moon. There is no legal accountability for the latter example and I challenge you to produce one shred of evidence to the contrary in ANY country. And regarding hacking having nothing to do with development… Seriously??? Next you’ll tell me holes have nothing to do with *sses.

  14. Daniel says:

    The problem is that “Engineer” is an overused and diluted term.

    I have a BS and MS in Electrical Engineering and am a web developer. Partly because I’ve made a career out of not actually ever doing any engineering. Partly because I love development.

    In my career, I’ve worked with technical support “engineers”, software “engineers”, and so forth. It’s all the same. Just give someone an “engineer” title and you’re good to go.

    Interesting point: Nothing I’ve done as a software developer has been as challenging or difficult as the stuff I did in school.

    I still love what I do though.

  15. james says:

    Hacker is actually a derogatory term in most programmer circles. It’s someone who does a half ass job. They may get the job done but good luck maintaining it.

  16. Palak Mathur says:

    At last someone understood the technical people’s frustration when dealing with non-engineers and it was good to see that someone who himself is not an engineer sorted that out himself. These things are true for everywhere where the engineers are involved.

    There are different set of people that make a company a success and if each set of people may understand and appreciate the others work it would be great for the company. Dissatisfaction would be less because of this (I don’t say it would entirely be removed).

  17. Free Offers says:

    “Almost nothing is trivial”….so true.

  18. Jeff says:

    Except there are plenty of universities that put their CS program in the engineering school and thus the students take all the same classes outsid their major. Those are very much engineers.

  19. Jrisken says:

    I’ve never felt that ‘engineer’ properly differentiated what tech folk do.

    Back in the day, one could refer to oneself with pride as a ‘programmer’. Nowadays that term has been devalued to mean ‘coder’, and ‘engineer’ has been stretched to mean ‘someone one level up from a coder in the food chain’.

    The closest I can come to what ‘programmer’ used to mean is ‘software architect’. But that sounds impossibly pretentious.

  20. Hector Partidas says:

    Great post, I think I will be forwarding this to several people I work with.

    In my experience, an engineer is anyone with the capability of understanding a given situation, analyzing all the possible implications and come up with the optimal solution for that situation.

    I have a degree in software engineering and of the hundreds of people of my promotion, I can only call a handful, engineers. A degree doesn’t automatically make you an engineer, to me, being an engineer is linked with the thinking process.

    If you think like an engineer, you are an engineer. Degree, or no degree.

  21. Diane says:

    Interesting generalization regarding computer science not being an engineering degree. You are obviously not familiar with schools that require csc majors take the same courses as other engineering disciplines. That being said, there are obviously software engineers who do not have the skills/knowledge to develop firmware, just as there are other types of engineers who do not have to the skills/background to develop software (whether it be firmware or not).

    Next time, you might want to look up the definition of “engineer”.

  22. raberman says:

    I don’t even know where to begin….

    “In many countries it is illegal to call yourself an engineer without the degree + a license.”

    - Yes, you are correct (well, in some countries at least); Canada being one of them. I wrote this blog post from the US, if that helps (not one of those countries). I think it has a more general definition in the US (both colloquially and literally).

    “An engineer is someone who, at the very least, has graduated with a Bachelor of Science within these general concentrations…”

    - Edit to: “IF YOU ARE FROM ONE OF THESE COUNTRIES, AN ENGINEER IS SOMEONE WHO…”. Otherwise, you are incorrect. Because where I am sitting, the word does not have such a limited meaning.

    “A bachelor of computer science is not put through anything close that resembles an engineering program.”

    - I will assume that you have gone through both a bachelor of computer science program and through an engineering program (AND assume that the two are necessarily different, which they are not in many schools), which would be the only way to qualify you to make such a judgement. Wait, no it wouldn’t… you would have to sit through EVERY bachelor of computer science program and EVERY engineering program.

    “In addition, a “hacker” has nothing to do with development. It is merely a word thrown around by buzzword-drones.”

    -Crap. I wish I would have read this first because I would have saved time by not responding to the other stuff. Read this article (from Paul Graham, who knows a thing or two about development) about “The Word ‘Hacker’”. http://paulgraham.com/gba.html An excerpt: “To the popular press, “hacker” means someone who breaks into computers. Among programmers it means a good programmer. But the two meanings are connected. To programmers, “hacker” connotes mastery in the most literal sense: someone who can make a computer do what he wants—whether the computer wants to or not.”

  23. darin says:

    There is not a black and white line delineating between engineer and programmer. I have programmers on my team who are great coders and can make things work, but I wouldn’t trust them (at least at this point in their development) to design/architect a system from the ground up. But others on the team excel at these activities.

    I also have programmers on my team who are adept at UI design and understanding user work flow and processes, while others are less capable.

    If you rated my guys on artistic, scientific, and engineering abilities, each would get different scores in each area. The bottom line, for me, is that some programmers cross the line into engineering while others do not, but there is not a clear definition saying you are a programmer or an engineer but not both.

  24. raberman says:

    Not in Silicon Valley.

  25. raberman says:

    +1

  26. Gary says:

    I would argue that there is often too much emphasis on the degree. I’ve been developing [and babysitting] software for 25 years and I’ve worked with all of them. Some of the most impressive developers I’ve met or worked with do not even have a bachelor degree. Some of the most educated developers I’ve met or worked with do a really lame job. I have a BS in math. Some math people are great developers; some not so much. The people who worry a lot about the degree are often working under the old rules like the doctors doing the 36 hour ER rotation … “we’ve always done it this way”.

  27. Pingback: Lessons From a Non-Technical Co-Founder

  28. Pingback: Lessons From a Non-Technical Co-Founder « Coworking Congress

  29. Pingback: Lessons From a Non-Technical Co-Founder | Tech News Ninja

  30. Pingback: the hive » Lessons From a Non-Technical Co-Founder

  31. Brian says:

    A computer science degree is not an engineering degree. I did both and the difference in the level of difficulty was quite staggering. The majority of the computer science students would not have got through the first year of engineering. In fact, half of the first year engineering students did not get through the first year of engineering, which was kind of the point. To be an engineer you not only need to be intelligent but also thorough and really committed. An engineering degree guarantees smarts and a hard-working attitude, where as with a CS degree it’s hit and miss.

  32. raberman says:

    Again, probably depends on the school.

    The word “engineer” is used pretty loosely in Silicon Valley (doesn’t mean that it’s wrong).

  33. Pingback: Top Posts — WordPress.com

  34. Pingback: links for 2010-04-28 | Michael Ong | On9 Systems

  35. Jrisken says:

    An engineer is the guy who catches hell when the train leaves the track.

  36. Christine says:

    Actually I think you may have your terms mixed up. A hacker is, as mentioned above, either someone who breaks into computers or is a good programmer. A hack, however, implies a hasty, often difficult to maintain edit of code, as in, “Sure, throw another Singleton onto the fire, that way our hacks can keep us warm all winter!”

  37. Sean Josiah says:

    +2

  38. Sowmya V.B. says:

    That was a nice post. Albeit, with one small doubt:
    The post almost synonymizes “Developer” and “Engineer”.
    An Engineer, who does not actually write code – should be considered a “non-engineer” then, according to this post?

  39. Elle McTavish says:

    “If you think like an engineer, you are an engineer. Degree, or no degree.” That’s just ridiculous. Am I a medical doctor if I think like a doctor?

    As it happens, raberman, I am a Canadian engineer and yes in Canada “engineer” has a legal meaning. But the casual abuse of the term in the US or anywhere else is not a good thing and there are plenty of folk in the US who do not accept your view of its importance.

    Let’s say I have a biomedical engineering degree. In Canada and the US that is not sufficient for me to call myself a medical doctor, nor can I practise medicine. Now, if you and I happened to be located in a country where that designation was not legally protected, would you allow me to practise medicine on your family anyway? No? Why not? There’s at least a little overlap with my degree and medicine and perhaps I think like a doctor? Surely that’s good enough.

  40. Pingback: Lessons From a Non-Technical Co-Founder « 全球网摘 – 贴凹网

  41. Pingback: Lessons From a Non-Technical Co-Founder | DB NEWS

  42. raberman says:

    No, that is a logical fallacy.

    If one is a developer, then one is an engineer != if one is not a developer, then one is not an engineer.

  43. Pingback: Lessons From a Non-Technical Co-Founder | STMGZN

  44. Good post. Liked and agreed with all points mentioned. Esp the last example of local language is too good to miss. Thanks for sharing!

  45. Pingback: Tasks for non-coder founders — giffconstable.com

  46. Ryan Graves says:

    I’m a non technical startup guy running UberCab. I’m in a very similar boat. I’m the “design & product” guy without much experience doing either.

    I agree most with your, don’t fake it point. By doing that you’re missing out on so much that developers would be happy to teach you.

    Great post.

  47. Jim Norcal says:

    Wikipedia defines engineering as so:

    Engineering is the discipline, art and profession of acquiring and applying technical, scientific and mathematical knowledge to design and implement materials, structures, machines, devices, systems, and processes that safely realize a desired objective or inventions.

    You can see the above paragraph here: http://en.wikipedia.org/wiki/Engineering

    I once held the title of ‘Intranet Systems Engineer’ for an ISP. During the course of my duties there, I created systems that worked over multiple networks and multiple servers (windows and BSD servers) using code from different programming languages. When it comes to creating such a system, one could say that I engineered the system, making me an engineer of that system.

    Because of these kinds of systems that I create which involves in depth knowledge of networking engineering, software engineering and server systems engineering, I do indeed consider myself an engineer. I may not be a civil, mechanical or electrical engineer, but I am still an engineer.

  48. John Boukis says:

    I have a degree in EE. Many of my casual friends can be heard saying, “Well you’re an engineer…” I am not an engineer, my full time role is administering an open systems software product. My real title includes “Analyst” (which I always thought was weak.) However I do not correct my friends because I know what they mean. People equate a degree with a profession and a mindset, which is not necessarily true.

    Professional Engineer: A state licensed engineer is the only one who should be called an engineer. (A non-licensed engineer should probably be called engineer in-training.) Anywhere there is a license for a profession, calling oneself the same title without a license is misrepresentation. Of course, it would be rare for a state authority to prosecute abusers. A “software architect” is not proactively trying to pass themselves off as someone who designs buildings and assures the safety of people who use the building. So we continue to live in this quasi-land of terms, the thinking being live and let live.

    Despite the legalese, personally I agree with Jim Norcal. My partner did not have a degree until after he had been programming for thirty years. He is one who can figure out any system that involves code, fix it and modify it. We were just discussing titles and I was just telling him that I think Systems Engineer is an appropriate title for him considering his experience. Even agreeing with the poster above that engineering studies are infinitely more difficult that CS studies, programmers who reach the level of Jim Norcal and my business partner, they do in fact create and modify coded systems on a level similar to that of an engineer who works with mechanical, chemical, and electrical systems.

    I suggest a state license for Systems Engineer. The testee would have to modify or repair two or three disparate systems. This license would distance individuals on that higher plane from POP (plain ol’ programmers.)

    Onto some comments about the post itself. I like the first rule, “Don’t be helpless.” When forming our Startup, I felt somewhat helpless. My parterns are highly skilled programmers. With my skills and expertise, I envisioned my role as GUI design, B2B relationships, service, advertising, and marketing. I originally questioned the importance of my role in a web & software development company. Now I have grown to understand that the skills I bring to this startup are excruciatingly important in creating success. I round out an otherwise overly-technical group of founders. Like the author implied about his experience, I get ribbed dramatically by one of our founders. Which is okay, because as far as our users go, I am the ultimate “user”, sometimes the only who looks out for their interests!

    One of our clients we are programming for was astounded. They thought we would meet, they would give us the web site specs, and we would program it. We brought many marketing and design ideas to the table. From that they decided, even though our schedule is behind other programmers they can hire, that we must do the site for them because of all of the good ideas that we brign to their project.

    Least of all I hope this inspires some of you who are stuck in a roomful of highly technical people who think they do it all, but who rely on you for things they sorely lack, like PEOPLE skills. (No offense to my partners…)

  49. Pingback: 6 Thins a non-engineer should know before founding a web startup | The Official Joroto Blog