Originally posted on Ethereum Blog:
View original 1,897 more words
Polyglot developer in the cloud
Originally posted on Ethereum Blog:
View original 1,897 more words
Although I’m sure this will evolve over time, here are my metrics for evaluating programming languages in a production environment:
Fun: How enjoyable is it to develop in the technology set. Fun increases productivity.Community involvement increases productivity (i.e. social accountability).
Legibility: How rapidly can you figure out what the code is doing. This ties closely into maintenance.
Tooling: How developed is the toolset in the language for the problems you are addressing.
Speed: How much time does it take to deliver the solution.
Notable that I put speed last. That’s because in many ways it is the most important but most difficult to get a sense of. It also varies significantly from person to person.
Also notable, that “fun” and “tooling” may be counterposed. Usually it is fun to work in on something new (i.e. you are learning or developing something), but often an already developed tool can do this for you. I think this is the sort of thing that needs to be balanced.
Notable are the things I’m not optimizing for:
Lines of Code: I find this a useless metric, potentially useful to measure growth but not any given solution. Something that is verbose but clear is almost always preferable to something that is dense but opaque.
Cost: Free is great, and cost does need to be considered. That said, hopefully if you are using expensive tooling there is someone who is paying you a good deal to do so.
Performance: Important sometimes, not as important others. Might need to be included.
Partially inspired by “Nobody ever got fired for picking Java” by Alex Payne.
Evergreen is my first startup. From the beginning I did detailed analytics on the basis of the weekly growth in the underlying code base, trying to average a 10% weekly increase in the overall codebase while things were in active development. Although I would have liked to continue this over an extended period of time, at a certain point I shifted my personal efforts into sales/promotion. This obviously diminished my personal ability to write code. Finances also dictated that we couldn’t hire a lot of devs to help us build things (ahh yes, fundraising).
Here are the total lines of code, including a fair number of config files. I have the details broken down privately (i.e. by technology set, etc).
Basically I have no major regrets to this point, except not being able to finish a functional form of the Android app — but realistically I didn’t have time to teach myself this. There was reasonable and regrettable slowness of development around the August-September timeframe.
Also some of the promotional/sales stuff was not particularly successful as far as a “product-market” fit goes, but that would require a whole different type of “business-y” post to discuss.
If you want to see more graphs, including growth in users and total transactions these can be found on our Facebook page.
Professional investors seem to fall into several categories, depending on disposition and capability:
(1) Analyst. I’m a former management consultant or i-banker, probably with MBA, and I can see the long term growth potential in a market. Come to me when you are growing and I’ll help you figure out how big the market size is and how much of you can capture.
(2) Hacker. Wow, new tech is cool! I build this cool widget in my basement that I sold to xyz company for a few millions, maybe I can help you do the same. Are you doing something cool?
(3) Market enthusiast. Wow, I love stuffed animals. I’ve been thinking for years about how you could get them adopted in Russia. You are doing that? OMG! Let’s talk!
(4) Market sniffer. I can sense there’s a big opportunity in this market. I’m doing research to figure out where I can put my pennies and grow them into dollars.
(5) Elite. I care first about people. Really smart, capable people. Put a few together and I’m sure you will do awesome things. Sure, I’ll take a piece of the pie too!
(6) Social investor. I’m trying to do good… and make money! First tell me how much good you are going to do, then tell me how much money I can make.
Here are some of the downsides:
(1) Analyst. I never really built anything myself, don’t really know what it takes in the early stage. Not super good at evaluating teams either, unless it means calculating the number of ivy league degrees.
(2) Hacker. Hmm, I don’t really like to spend the time to do market research. I also don’t really like the enterprise. Let’s avoid sales and just ship it to the end consumer!
(3) Market enthusiast. Yeah, I’ve been studying the market for a long time and I just love this one idea. It’s so awesome. Oh, you aren’t doing that? Oh, I guess I can’t be super excited any more.
(4) Market sniffer. I like the front-runner, because he’s in front. I never really cared about this market enough to learn the whole landscape, so I’ll just stick with safe bets.
(5) Elite. Hmm, I prefer to stay on the usual circuits and let flow come to me. If there is anything I miss, it’s probably not that much of a big deal anyways.
(6) Social investor. I have some complicated calculations to make. And not really that much money. Maybe I’ll call you in six months? Is that too long?
Obviously none of these skills are exclusive, but they tend to dominate a personality, and even a firm. I personally like hacker, elite, and analyst the most, and in that order.
If you are a sharp new resident of Italy, your first set of planning should be how to survive, ideally fully intact. This requires a good bit of forethought and consistency.
The first thing you should do is create a list of the things that you will and will not do. No doubt you are used to the reinforcement of your peers for these things. Here, you must write down this list, commit it to memory, and repeat it to yourself at least once a day. If not, you are lost.
Here are some suggestions for your list:
(1) “I will do what I say.” Repeat this to yourself more than the rest, at least three times a day. You will do what you say. If you say you will provide someone something, you will provide it. If you say you will arrive at a certain time, you will arrive. This is the cardinal rule. “I will do what I say. I will do what I say.”
(2) “I will tell the truth.” No habit is more defeating to the human spirit than the slipping of the tongue, perpetual lying, and the hiding over of undone deeds in a patchwork of pretty phrases. This phrase, “I will tell the truth,” requires not only repetition, but constant awareness. You must tell the truth even when it is painful. If you cannot speak it openly, write it for your own benefit.
(3) “I never take shortcuts.” For every task, there is work required to do it well. There is also some way to do it with less work that invariably compromises the quality. You work. You do not take shortcuts.
(4) “I pay my debts.” It is easier to acquire debts of various kinds than to pay them back. The unpaid debt festers in the soul. Should it go unpaid for too long, you will become a victim. Very rarely is a favor just a favor. It is a debt that must be repaid, and it is always better to be a net creditor than debtor.
(5) “I honor time.” Time is a precious commodity, that disappears when it is not utilized. You care about your time, so you must care about the time of other people. Would you pour your money down the drain? Why time?
(6) “I can take care of myself.” The person you want to be knows how to take care of their own necessities. They work. They exercise. They have their own place. They have their own money. They pay their own bills. They are not dependent on anyone else and desire to preserve the independence of others as well as themselves.
(7) “I will not fall in love.” Falling in love is a sure recipe for you to lose every resolution you have made, no matter how many times you have repeated it. The assault will come softly and subtly, but with a torrent of force whenever you are weak and vulnerable. You will be asked to compromise. You will be told it doesn’t matter. No matter how strong you are, at some moment you will fall. All your energies will become scattered and weak. Never let this happen to you. Whatever you do, never fall in love with an Italian.
There are a lot of things to learn and appreciate in Italy. Just make sure you plan ahead and ensure that you survive intact.
For first time founders, particularly those of a software engineering background, fundraising might be the most bewildering thing they encounter.
Here are some mind-boggling aspects of fundraising:
(1) Once you start thinking about fundraising it tends to take up all your mental bandwidth. I’m not sure exactly why this is, but you tend to not be able to function very well in other aspects of your life (noted here by PG). This means that basically it’s impossible to run your company and do fundraising at the same time, which may make your users unhappy if they are waiting for new features, etc. This is a good reason to have a technical co-founder who can work on code while you fundraise.
(2) There are no clear, measurable outcomes with fundraising, so it can seem like an enormous timesink with no immediate and obvious reward. Even worse is that it’s hard to know when you will be successful with fundraising. Is your “lead” (i.e. the enthusiastic first investor) just around the corner? Or maybe you will never get him? Should you wait another month before starting? Six? This is very tricky and it seems like a lot of time there are no right answers…
(3) Fundraising can be very emotionally draining. You need to tell “your story” over and over again. Especially as a single co-founder going out there, it’s quite easy to get “off track,” meaning depressed and/or disorganized. This is esp. so in the EU where fundraising frequently means a lot of travel. Investors tend to be a bit of a tease, and this doesn’t help. The system is sort of designed for you to get your hopes up, and then to have them miserably crushed as you are told “the timing’s not right.” As PG also notes, investors don’t say “no” so if you aren’t ready for it, you will be inclined to think you are further along than you in fact are.
(4) Accelerators are a mixed bag. Accelerators ostensibly help you get more time to develop more and get more traction and connections at the expense of equity. My general feeling is that they can be a bit of a drag, since you end up rubbing shoulders with folks who aren’t as motivated as you and the collective energy ends up at some middle ground (i.e. not that dull, but not that bright). Programs like YCombinator where there is a bit of a brand and higher quality connections tend to be a net win. Still not sure about any other ones.
(5) Story telling is key. In many ways its about connecting with passion while satisfying reason. This is partially because people won’t remember the specifics, but they will remember the energy of the story telling. I’m not sure I’ve nailed this one, but I seem to be getting better.
(6) You need a lead. There’s this sort of weird trick when it comes to getting started, and this apparently involves getting a lot of investors interested at the same time, showing each one that there are others interested (credibly), and then getting one to take a jump so that the rest follow. As it probably sounds, this is a lot of work. It seems to me also like sort of a waste of time, but maybe I’m missing something.
Next stop: the nature of money….
“Doing good” is a challenge many of us have in our lives, which often include normal jobs and other contexts not optimally calibrated towards making a positive benefit.
Let’s consider some of these:
(1) Normal day job + nighttime action (i.e. Batman). This can be done if you have a day job with constricted hours and/or you have no need to sleep. Software engineer by day, involved with community benefit stuff at night. A lot of lawyers do this sort of stuff with occasional pro bono work.
(2) “Save the world” non-profit. These are potentially a much better way to put all of your passion into something that wouldn’t get done otherwise. Generally speaking you will be supported by the donations of other people, and potentially spend a lot of time fund-raising on this basis. However, a lot of topics (i.e. protecting endangered wildlife) don’t fit into any for profit model. There’s also the danger of being underfunded and/or disorganized, both common problems for non-profits.
(3) Big money now, philanthropy later. This is a classic American model that I have a lot of sympathy for. If you love what you are doing, why not do it all the time? And if you are going to make a business, why not make a big one? Providing valuable services that people will pay for can be a positive good now, and if you do it well you can turn it into an even larger windfall later as you invest in educational projects and other projects for the next generation.
(4) “Do good” company. This is really only possible when a company achieves a near monopoly in a particular market sector and has a massive windfall that allows it to pour money into innovations in other sectors (i.e. Google and Google maps). More perfect competition, on the other hand, tends to be messy. This is why I’m in favor of certain types of monopolies, inspired by providing a service that is better and which attracts people who are both really good and want to do good.
Personally, I think all of these can be great options at different points in someone’s life. My own personal desire is to be in the last category. A big company with a huge vision that encompasses the world and attracts people who want to work hard to make the world the best place that it can possibly be.
If this interests you feel free to send me an email (jd |at| evr.gr).
All things considered, I’m rather new to dealing with professional investors. For the developer turned startup founder in need of investment, there are a whole lot of things to consider. Many of them involve wrapping your mind around the different mentality of the people you are likely to encounter.
Here’s some things that are generally true:
(1) Professional investors have never started anything: Very few professional investors are entrepreneurs of any sense, and if even if they deal with entrepreneurs frequently don’t appreciate the psychology of a startup.
(2) Professional investors are not technical people: Very few professional investors have an engineering background and, thusly, are not likely to appreciate the nuts and bolts of a solution. Potentially they don’t even care about technological innovation.
(3) Professional investors have no time: They are running around doing a lot of things in order to get the optimal “flow.” This generally means they don’t have time to seriously think through any complicated problems or consider the solution fitted to the problem space.
(4) Professional investors have calculating minds: This is a nice way of saying “they have no guts.” It’s hard to bring together calculation and intuition, so most people opt for the former.
(5) Professional investors love to delay: The best way to understand this is to consider the incentivization process for investors. You are considered valuable when you make money. You make money when you invest in something that becomes hot before anyone else does. Thus, you are incentivized to invest just before it is clear that something is going to be the “next big thing.” Realistically, this means that most investors invest in something that is the next big thing after it already is big, and miss the super-big deals that require getting in early.
(6) Professional investors are thinking about money: While ostensibly governments and potentially other large entities (i.e. Google) can think about innovation for innovation’s sake, investors, both by their name and incentivization, require increasing their pool of assets by their investments. If you think about crowd-funding, crowd-investment, public funding, and other vehicles, the primary consideration may not primarily be the amount of money returned.
(7) Professional investors are thinking about “hotness”: “Hotness” is a social value. The more people want you, the more valuable you are. That’s why most investors look carefully for indications of “hotness.” For an early-stage startup, can be a case of “herding” investors to a gate, but this is tricky. Traction is a key factor but not the only one.
(8) Professional investors are nice people: In general, professional investors are too nice for my liking. They never say “no,” and rarely give any sort of critical feedback. This means sometimes they are a bit of a “tease,” that wastes your mental bandwidth with minor upside.
For more valuable advice, see Paul Graham’s essay on the same.
It’s worth noting that many of these features are changing as more successful entrepreneurs move into investment after exit. This has dramatically shifted the Silicon Valley landscape. This appears to be less so in Europe, where it seems that $1B is still a scary number and you don’t see too many large companies or exits in that range.
I talked about fundraising in the last post, but once you decide you do need some money, there are a few different potential routes:
(0) Don’t actually be a for-profit company
(1) Friends and family
(3) Crowd equity funding
(4) Angel networks
(6) Debt of some other sort
Let’s run through all of these very briefly:
(0) Don’t actually be a for-profit company
-. There are lots of cool options for non-profit ventures these days, including various collectives, etc. One problem with this is that rules vary substantially depend on where you are, so it is very difficult to scale a non-profit that has a collective profit-sharing element. If you want to be a non-profit, you certainly won’t get investors, although you can get donations. So it depends on what you want to do.
(1) Friends and family
- Small amounts of money fairly fast, but they are unlikely to really understand what you are doing, and it can be a lot of time talking to people for relatively small sums of money. Doubly so if you have lawyers involved.
- Awesome vehicle to get money for certain types of campaigns, but it also tends to be very time intensive and not actually connect people with the real worth of the company (if what you are building is a company). I think if you are building something where you are charging fees on top of a service, you should give something back to the people who put money into you.
(3) Crowd equity funding
- Awesome new thing but there is no real international version of this. You can sometimes feed EU crowd funding into a US entity though, which is pretty cool.
(4) Angel networks
- The classic way to raise a seed round. Go around, meet some people, meet some more people, get introduced, hopefully go up the value chain as you impress people. Eventually you will hit your “lead,” and he will pull the rest of the people on. Unfortunately they are relatively weak in Europe (i.e. not too many people with real success beneath their belts).
- VCs (esp. here in the EU) are generally not super concerned about product and generally follow the numbers. That means that if you are a super-smart super-motivated technical entrepreneur, they still will give you the cold shoulder until you show them something that makes sense to them in the form of a spreadsheet.
(6) Debt of some other sort
- you have some other options here but they are mostly for the desperate and generally should not be considered at all (i.e. credit cards, taking a loan from your mom, talking to your bank). That said, there are new awesome crowd funding platforms that do P2P loans (i.e. Zopa), so this is emerging as a possible source to get funding for your startup.
If building a new company out of nothing, you have a few different options.
(1) Do it on the side of your normal job.
Pros: Stable income source
Cons: Limited time. Unlikely to convince investors that you are super serious since you haven’t “left everything behind.” You also need to have a light job where you have substantial free time. And ideally no significant other.
(2) Find co-founder(s) and go for it!
Pros: Team ideally produces synergistic effort, both in terms of motivation and talent (i.e. back-end + front-end guy and/or sales/fund-raising + tech guy)
Cons: Large downside risk in bad co-founder, difficult to find co-founder if ideal candidate not already present in network, not always easy to match up talents.
(3) Quit yo’ job and just build the mofo!
Pros: You can bootstrap your way to traction.
Cons: More difficult to stay motivated and focused if working by yourself for long hours. Only suitable for technical founders who already know the technology set.
(4) Get me some money, then I’ll get to work.
Pros: You can potentially hire a larger initial team and iterate faster.
Cons: You have to fund-raise first, which means giving up more equity at the outset since you have neither product nor users. Team that congeals over regular paycheck is likely not to produce awesomeness.
(5) It’s an awesome idea, I’ll get people to work for free!
Pros: Enthusiasm is awesome, if you can get people to work for free it means you have a great idea.
Cons: It’s not sustainable in the long run, unless you and your team live inside a commune. You also definitely can’t hire anyone with a family, which generally means you will be limited to 20 somethings (i.e. people without a lot of experience).
Phase 2, Post-prototype:
Okay, so you have a prototype, now what?
(1) Network like hell in order to get some funds
Pros: Unless you super rich to start with, you probably need some funds by now.
Cons: Fund-raising is super time-intensive. Also, if you are a technical person, you probably aren’t super good at networking. Also, probably you are not really going to like professional investors and are going to get annoyed dealing with them.
(2) Hire someone else to fund-raise for you
Pros: Less time investment.
Cons: Likely to get really dumb investors or nothing at all.
(3) Buckle down and get some motherf***ing traction
Pros: You know investors will magically arrive at your door once you’ve got traction. Also, you might even be ramen profitable by then so you can wait for them.
Cons: You might be close to out of money by now, just how long can you stretch t
hose last few pennies? Also, you still need to fundraise.
(4) Raise a wee bit of money
Pros: Less time intensive, maybe you can get serious traction by the time if you stretch things just a bit further.
Cons: You still have to fundraise, so maybe you might as well get more than a few dollars. Keep in mind you have to get lawyers involved and they take their cut.
(5) Whore yourself
Pros: If you are really good at something, probably you can whore yourself out for a bit in order to get some funds to pump back into the business.
Cons: Not sustainable. Sooner or later you actually need to fund-raise. But then again, you might just get traction this way…
how we’ve tracked progress in relevant codebases, rough guideline has been aiming for 10% increase across all technology each week
Personal experience: Technical founder with “financing” focused co-founder, but co-founder drops out because of family medical issues. Builds prototype w/ personal effort (teaching himself relevant technologies). Mixed team emphasizing experts in relevant technologies (i.e. Clojure, iOS). 2.5 months to get to prototype (+ $25K). Extra 6 weeks building requested features for initial customers (+ $15K). + 6 more weeks from training customers to launch (+ $10K). Emergency funding infusion from friends/family. Working on more funding, but examining all possible strategies.Company in question: www.evr.gr