Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: Best business advice for software developers
847 points by zabana on April 19, 2017 | hide | past | favorite | 312 comments
For those of you who made the jump to entrepreneurship, what is the one thing you wish you knew before starting out ?

Since this is an audience of passionate technologists, here's the top piece of advice I have:

Do not be seduced by the technology!

I killed one of my startups this way. I've seen many many die this way.

It can hurt your pride as a passionate technologist to choose non-cool but mature and easy-to-hire-for tools. But it's those tools that are the most economical.

Remember, your customers care 0% about the backend technologies you're using as long as they are getting the value you promised them.

"Be regular and orderly in your life, so that you may be violent and original in your work." Gustave Flaubert

You're running a business, not a technological showcase for other engineers (who are not even your customers!).

Remember that the most economical tool for the job is often not the coolest or trendiest - but is some old boring workhorse that other engineers will scoff at.

Build your business for your customers, not for your technological pride or to demonstrate your technical prowess to friends.

Don't get me wrong though! There's certainly a time and a place to play with all the coolest and trendiest stuff, but if you're optimizing for growing a business, that is the time for choosing low-risk, simple, mature tools.

This is excellent advice. There is a local company near me that has been working on their SaaS for almost 2 years now and still yet to launch. They started it on Angular 1 and are now re-factoring it on Angular 2 (or maybe 4 now). During this time they released a small open source Angular library but not even an alpha release of their own product. Keep in mind their product is not gear towards devs. They also hit every Angular conference they can and are always doing dev meetups. That is fine for after you launch and are making $$ but seems like a lot of wasted time and money when you have yet to release a product after 2 years.

During this same period, I launched 2 SaaS products on boring PHP 7 and Python for the backend and HTML, jQuery/intercooler.js for the front-end. Both profitable and growing.

I think sometimes devs don't realize the hardest parts of starting and growing a business have nothing to do with code or the tech stack you choose. Marketing, getting and retaining customers and everything else in between is way harder than writing code.

Honestly, I'd rather use PHP7 or Python. I'm sick and tired of seeing Javascript now.

Being "sick and tired" of a technology is just about as bad a reason to not use it in your business as chasing the shiny new thing.

That is because Angular is a shit technology.

Why? Because it doesn't reduce cognitive load. One seems to require at least as much brain space to code things in Angular, as you do just writing pure Javascript. That's a no-no, that means it's not a labor-saver long-term.

Who are their investors, or if you can't name names, are they seed or angle or self funded or what?

From what I understand, the CEO had a previous company that repackaged, setup & sold custom social network software to companies. He made decent money while it was hot and is using that to fund this endeavor. I guess you can't really blame him if he is self funding. I don't feel right about calling them out by name. I hope it works out for them in the long run.

May I know what you built and they're building? Maybe different product easier with different tech stack?

I use Scala because Google App Engine didn't support PHP for example. It's an Android app, so I use Kotlin for that.

Both SaaS apps. Different markets but one of mine is similar in complexity to theirs. They could have launched a year ago if they were not wasting time re-writing the app in Angular 2 & 4 and spending time open sourcing Angular libraries.

I personally do not want to spend time re-writing my app every 6 months before it is even launched. I would much rather spend the time acquiring customers. I tend to choose a stack at least to start that I know I won't need to re-write in 6 months. Unless of course it needs to be re-written/refactored to accommodate all those customers knocking at my door ;)

That generally means I stay away from the front-end flavor of the week when starting a new app. Don't get me wrong, I myself have used Angular and Vue for a couple of projects but not in the beginning and not for the core product. I don't like the instability and constant changes of a lot of the newer frameworks.

I think the lesson here is use what tools you already know, and are intimately familiar with. There's no reason it takes two years to launch an Angular app, unless you keep updating to use all the latest and greatest features and versions. The same goes for an old workhorse technology like PHP, avoid using the new stuff in favor of proven frameworks and patterns.

Upvoted not just for the comment, but also the user name. Had to do a double-take on that one!

Javascript hipster echo chamber: you're not using react [or insert other trendy framework pushed by code schools and tutorial makers]? Product user: does not give a rip about your precious tech stack.

React has some excellent ideas and quite good performance.

Completely agreed. Here's another way to look at it from an economic perspective:

It's usually best to focus on propping up your differentiation and competitive advantages, going stock with everything else. If you rely on standard components for things that aren't your special sauce, then you get to ride market forces of commoditization which will drive the cost of those standard components towards zero.

Can you build your own backend database in Haskell instead of using Cassandra or PostgreSQL? Yeah, that would probably be really cool and do well on these boards. Then look back at how many hours you spent getting that to just understand simple SQL, and how many customer-facing features that could've been. Is it cooler to build that database than to set up an email auto-mailer? Yes! Special functional algorithms that operate on B-trees are far more exciting than simple state machines that send emails. But the latter is what the customer cares about, so therefore that's what you care about.

One interesting exception to using cutting-edge stuff may be making it easier to hire cutting-edge people.

It doesn't matter how smart you are. The opinion of the market is the only one that matters, and it expresses it in the form of repeat sales.

> Do not be seduced by the technology!

I want to emphasize this, and expand on it: Your cool tech startup is not about the tech.

You exist to solve a problem.

Sure, you might use your Cool Tech(TM) to solve the problem. But the salient point is that the problem gets solved. Your customers don't give a rats ass if you solve it with automatic hyperparameter selection for LSTMs, or if you solve it with an Excel macro. They just want. Their problem. Solved.

Agreed. It's one thing if the Cool Tech actually gives you a competitive advantage by solving the problem better, easier, with lower costs, faster, more personalized, etc.

Outside of that...it's all about the business. That's why so many successful businesses are built with Ruby and not "benchmark winner of the week" because Ruby tends to deliver on almost all of the business cases around solving problems and growth.

If you're a larger business and planning to deploy at scale to an existing customer base, the business problems tend to change more towards performance and Right Tool for the Job.

I remember when ruby was the hot tech a few years ago, frowned upon by conservative developers. I learnt ruby back then. I'm glad ruby is now recognized as a more mature ecosystem that does things well, even though it is one of the boring technologies now.

Is Ruby/Rails faster now? I built a few simple sites on Rails 2.3 via Passenger, and my God, it was such a performance hog compared to every other web stack I'd ever used. Probably mostly a function of how heavyweight RoR was, but I never got deep enough to figure out what was so slow about it. It may also have been user error, but it seemed like others were bragging about getting it to levels of performance that would be frankly embarrassing on most stacks.

One thing Rails has over, say, Laravel or Django is the JRuby option which has made significant strides in performance in the last 6 months. There's also Truffle Ruby, Graal and Oracle's Substrate VM which all target Ruby performance so my money is on a significant Ruby resurgence later this year by which time Oracle will likely have open-sourced Substrate VM.

It is. Come a long way since Rails 2.

There are still much faster options out there but it's nowhere near the beast that it used to be.

Great to hear, I might revisit it in a future project then - the experience was generally really nice, but the performance was really painful.

Don't get me wrong, I'm a huge Elixir advocate largely because you get the performance and scaling perks of other languages with very close to the development perks of Ruby.

I just get tired of hearing the "but Ruby is slow" drum beats when it's so consistently successful. Scaling web servers is easy. Scaling the database is hard.

Yeah, I was just asking if it had improved. Scaling web servers might be easy, but it adds administrative overhead, and if you don't have big piles of VC money to burn, it bites into budgets that would be better used hiring more people and working on product. And it makes it so you have to waste your time reworking your server structure earlier than you would have to otherwise - suddenly you need a load balancer, a shared session store, etc. When I ran a company, these were very real concerns.

It being successful doesn't excuse its slowness, in my opinion. There are lots of bad products out there that are successful by many metrics. Speed is an important part of making something good, and RoR added significant hurdles to making very fast sites. There are other stacks that don't have that issue that are also successful, but have other downsides.

Anyway, not worth rehashing these old arguments, I just wanted to know if it had improved. Sounds like it has.

There was a time when Ruby was "the cool exotic and unproductive technology". A lot of wheels had to be reinvented (and new ones added) before it became what it is today, there is nothing special about it.

All mature technology will come with a known set of tools and processes to tackle almost any problem very quickly, as long as you're familiar enough with the stack.

> there is nothing special about it.

One thing that's especially productive about it that helped to grow the 3rd party ecosystem is that the options you have for dependency injection in Ruby due to monkey patching give you an experience much closer to Aspect Oriented Programming.

It also makes it easier when you need to add functionality somewhere high up the inheritance chain without having to rebuild the entire chain around your new object base, or fork the library, use your fork as the dependency and make the change directly.

In the world of object oriented web development, Ruby was close to a miracle in time-reduction in WORKING with an ecosystem.

At that same flexibility in monkey patching makes the codebase rubbish in a year when it's time to upgrade dependencies.

It really depends on the interaction between the discipline of your team and the failure modes of the tool. A culture of code review which puts a high bar of justification and documentation-for-new-contributors on monkey patching can counteract this failure mode.

Do you code review what each new library does? It doesn't have to be code you wrote to cause problems. And most people treat a library as a black box with inputs and outputs. Which works well in a sane language, but often not ruby.

I would like to add that Excel macros are excellent; If Google Docs spreadsheet functionality were exportable I reckon that many existing startups could be built as a mere UI change on top of that backend.

What do you mean by exportable?

> Your cool tech startup is not about the tech.

In some cases it is about the tech.

Instead the suggestion should be to apply the concepts of a minimum viable product relevant to your business problem.

> You're running a business, not a technological showcase for other engineers (who are not even your customers!).

Unless you are building tools, products, or services for other engineers.

> Build your business for your customers, not for your technological pride or to demonstrate your technical prowess to friends.

I'm going to assume that if someone is going into business for themselves then they are planning on having customers. There are ways to show off that don't put your mortgage and credit rating on the line.

> Remember, your customers care 0% about the backend technologies you're using as long as they are getting the value you promised them.

I'm going to assume, this too, is obvious. What I mean is that anyone who has written a fair amount of software has probably already realized this.

What is it that makes people think programmers are a bunch of navel-gazing narcissists that take great pleasure in impressing other programmers? We do, but we're also rather intelligent people.

I say: be seduced by technology. Programming is beautiful. Hard problems are a joy to solve and bring great value to the world. Do what pleases you. Life is short.

The specific business advice I have is: learn to be a leader. Take responsibility for outcomes, give ownership to your team, and learn to guide people. If your business grows and takes off you might find you won't have much time to program everything and will have to act more like a guiding hand and lead your team in the mission and trust them to take you all there.

My other advice is: avoid intuition and gut-instincts. Use data: analyze commit history, watch your issue manager, track performance indicators just as much as sales and marketing. A business is always shifting and changing. Rely on data to help you identify trends and make effective decisions. A gut decision should be a last resort.

> I say: be seduced by technology. Programming is beautiful. Hard problems are a joy to solve and bring great value to the world. Do what pleases you. Life is short.

It's far easier to fall into a hole of technical debt this way. The extra costs incurred could be too much for your venture to bear. Among all risks new ventures take, this is probably has one of the least cost:benefit ratios.

to expand on this, i'll trot out my little adage again: most startups are marketing problems, not technology problems.

marketing encompasses the 4 P's: product, price, promotion and place. product is literally the finding of the fit between your offering and the market's needs. price is the portion of the value you deliver to the customer that you capture. promotion is finding and providing potential customers with info about why your product is the shizzle. place is how you deliver the product to your customer (e.g., physical store, direct sales, saas, app store, etc.).

build things that support your marketing activities, rather than building tech that you hope you can market.

What you're saying sounds reasonable but I think it is completely wrong.

I strongly believe that startups very rarely fail because they have chosen to build on a particular immature technology. Some fail or stall because they cannot bring themselves to stop redesigning and rebuilding on the next new technology or design philosophy every couple of months.

But these are completely different issues (related by psychology for sure but not by necessity)

My opinion is you should choose what you find coolest and most exciting now and then stick with it!

Of course the technology you choose should have some traction but don't choose technologies of the past! Whatever you choose will be the past soon enough and that is when you must find the strength to stick with it and get on with creating value for users.

I don't think his comment says that they failed because they chose the wrong trendy language. They are failing because they are too concerned about the language and the process rather than the result.

While I don't really agree, I do think that if one intends to work on a side project or a bootstrapped company, they need to do it in a way that is somewhat enjoyable for them.

It requires lots of energy to see these projects through, and it's hard to emit that energy on something that you don't enjoy doing. If using a less common technology is going to get you working on the problem enough to start getting some velocity, that may well be a worthwhile tradeoff (as long as it's not too out there).

The other thing to consider is that while a basic library supplied by a young language may suit your needs when you're starting out, larger ecosystems are likely to have more advanced libraries that have better performance characteristics, support more obscure use cases, etc., which will only become more valuable as one grows.

A wise engineer once told me: be not guided by the beauty of your weapons. They are tools, fit to serve a purpose.

Since hiring for engineers is so competitive, it is arguable that choosing fancy tech can give an advantage there. It has been done successfully (in a hiring sense)... Twitter pushing Scala, Jet.com on F# are two I can think of.

The downside is it could backfire on who you're able to hire. It could just lure people who will either want to migrate to the next new-and-shiny or just leave quickly.

I think one thing a lot of startups think is that they absolutely have to be able to attract the best and brightest. In 90% of cases, average level programmers can build your product just fine. Unless you are building for enormous scale or your product is using cutting edge technology, you simply don't need a bunch of programmers from the top 1% or even top 10%.

In my company, we hire middle of the pack programmers for a bargain and use commonly known tech stacks.

The customers will not know the difference.

> you simply don't need a bunch of programmers from the top 1% or even top 10%

Having done some recruiting at a startup last year, even getting the top 50% to reply to an email is a tough proposition. The problem really stems from brand awareness. No one has heard of your startup, so in a sea of "help wanted" postings on Angelist, Stack Overflow or Craigslist or cold emails, it's extremely easy to be ignored.

Using novel technology and getting the word out (as Twitter and Jet.com did), can at least get technical awareness within a motivated subset of engineers who are interested in said new stuff -- and of all skill levels.

That said, Peter Norvig made a pretty good refutation of your core point[1]. Say your initial site was successfully launched by average engineers. If you're not always trying to hire better than the average employee at your company, your team just gets worse over time.

[1] - https://research.googleblog.com/2006/03/hiring-lake-wobegon-...

[edit] -- btw, using the new-shiny stuff is not all-or-none. You can still use tried and true tech along the way.

I'm sure he's right when you are building a one percenter company. But my team will likely never grow to a size that it will ever take on a life of its own outside my control. 5 engineers tops when we hit market saturation. Each new hire I make is more skilled than the last because I can pay more as time goes on.

I just don't think research done from the perspective of the biggest tech company in the world has any relevance on 99.9% of small tech startups.

Doesn't this say more about the flaws of the business and/or the management than it indicates this being a good idea? Many of the most successful software companies do everything they can to attract and retain the upper end of software engineers and they don't do this because it's bad for businese. Presumably they do this because it provides more value for the company than having more programmers or trying to save money on salaries/perks.

Perhaps, but I actually think getting the best and brightest is more of a factor of having tons of VC money. In that case, you need to move as fast as possible, and every little bit helps. If you are building a niche business with limited TAM, you just don't need the top tier, assuming of course you aren't building something groundbreaking from a tech perspective.

Interesting perspective. Kind of reminds me of the discussion yesterday about programming contests not being the best indicator of software engineering success. Personally I love programming contests, but reading your comment I can see how it's not the most important thing to be in the top 10% in Algorithms.

Your main focus should always be to ship good user tested product, and I agree you don't have to be the best programmer to build something that users want and like.

I love this advice. Here is a blog post that I keep coming back to regarding this.


Wow, love this article. The context of this article is how I ran my consultancy and the developers didn't enjoy my choices to choose the "boring" tech over what new tech they wanted to bring in, in the middle of a project. "Secrets of Consulting" is a great book if you've never read it, too

Couldn't have been said better.

I'd like to add: if you find the time, try to have a side-project on your own time where you apply all these cool new things you were looking to apply in your company. This will help you keep your sanity and it will let you experiment with that technology so that you can make a better informed decision on wether to implement it in your company or not.

This, absolutely. And if you're not willing to spend your free time learning, then you're probably not really tuned in to be a business man either.

Yeah you can make a good business. Yeah you can make a living. But you're probably not going to make a unicorn.

And yet, 99% of founders out there don't care about building a unicorn. It's just a handful in silicon valley doing anything they can to be the next big thing.

Most entrepreneurs are happy building a good product that helps their customers while making a good living at it.

I'll throw in that this doesn't necessarily mean just use Ruby on Rails and get coding.

I mean, that will probably allow you to ship a bare bones MVP pretty quickly, but making improvements to said MVP in a timely manner may be a different story.

Case in point: I used to work for a company that developed a product that was made in RoR and was probably actually pretty nice looking at one point. Unfortunately customers had ideas for what sort of improvements should be made to the MVP, and very few suggestions were turned down. So, after some time, the codebase grew pretty hellish, and it became harder to release substantial improvements in a reasonably timely manner. If I remember correctly shortly before I left they decided to replace it with something built from scratch using a leaner Ruby framework called Sinatra.

For that reason I'll typically write projects in Node or Golang, but typically Node. They're flexible, they're not a framework, they're not opinionated, but at the same time they both still have robust package ecosystems so I don't have to reinvent the wheel.

And actually, by all means use new technology if you can honestly tell yourself and your customers that it allows you to ship faster. Just remember, you writing code faster != you being able to ship faster. You'll probably have to bring on additional employees, so your choice of tech has to factor in how quickly you can hire and train someone to use your tech stack as well as how well they can reasonably perform with it. That being said, developers who like using your uncommon technology or tech stack are typically going to be a little more enthusiastic, just don't go too far.

> Case in point: I used to work for a company that developed a product that was made in RoR and was probably actually pretty nice looking at one point. Unfortunately customers had ideas for what sort of improvements should be made to the MVP, and very few suggestions were turned down. So, after some time, the codebase grew pretty hellish, and it became harder to release substantial improvements in a reasonably timely manner.

This is the problem, not Rails. I've been using Rails for years since 2009 without any problems. I've also used PHP, Java, and Node. These projects have survived 5+ years not because of any language or framework but by treating code as a craft.

Ultimately you're in business to convince customers to pay you money in order to use the thing you built. If the code base goes to hell after making customer-requested improvements to the MVP then that's a problem with the design of the MVP code base combined with a lack of refactoring to improve said design. It could be that management didn't want to spend the time or money to rebuild the codebase to let those new features be added in an organized way; that's a management problem. A very experienced developer/lead could translate from nerd to English and from English to Management so the people in charge could understand why they needed to not get new features for three months while the code gets refurbished. If management still says no, because there's no money or they've got impatient customers then that's a different issue.

The specific part of "code as craft" that you need here is a recognition of the value of what chefs call "mise en place". You need to have your work environment in an orderly state that it enables you to work efficiently.

This is true and I totally adhere to it, but, I also think sometimes it's useful to choose the latest and greatest not for the technical aspect, but to attract good devs to work for you.

Reminds me of an article by Paul Graham written in 2004 about Python developers. http://www.paulgraham.com/pypar.html

I don't know. I think there's room for a high-end niche shop that only deals in functional languages, for example. I see enough data now that 1 line of functional = 4 lines of Java/C/Go for the same amount of work done, to think that perhaps, SOME trendy technologies are actually worth their mettle.

I think the real limitation is not jumping on trends but managing cognitive load. That is your real limitation, the capability of the programmer-mind to fathom all the states their code can get in. To optimize towards that, you have to pick technologies that force the least amount of cognitive load on the developer. Functional languages such as http://elixir-lang.org/ seem to accomplish this (according to those who have switched to it and blogged about it, example http://mattscodecave.com/posts/elixir-for-pythonistas-pt1.ht...). In the javascript space, Elm seems to accomplish this. http://elm-lang.org/

But lastly, if you pick the right technology, you might naturally get access to a pool of very high quality developers, the type who are already interested in that very technology.

I don't get the point of hiring "Java people" and whatnot, anyway. Polyglots are the way to go.

The thing that made Paul Graham a thing was his use of Lisp to edge out his competitors at the time. The fact that Viaweb was later rewritten in [whatever it was rewritten in] is irrelevant. That's my final point.

Totally agree with you. In thread of "Linux is obsolete" Ken mentioned the same thing[0] as "...Most users could probably care less if the internals of the operating system they use is obsolete..." Although, He is talking about OS, but it is true for other as well.

[0]. https://groups.google.com/d/msg/comp.os.minix/wlhw16QWltI/P6...

I disagree.

Technology is actually an advantage. I would look at it this way, if you used N tech, and it actually results in a faster, better app, meaning happier users and therefore more business.

TLDR; use technology that gives you an advantage.

Doesn't really give you an advantage if you don't have customers. Even after you have customers, oftentimes the old/boring technology actually results in a faster, better app.

There are always tradeoffs, though. Using technology X instead of technology Y isn't free; maybe there is an additional up front engineering cost, or maybe it's harder to hire devs who know X, or something else. And it's impossible to generalize, of course, but usually the tradeoffs for using superior tech aren't worth it in the short-/medium-term, which is all that matters as a startup.

I think "opportunity cost" is the phrase for which you're looking.

I don't think you and he are in disagreement. Obviously you should do what will give your business an advantage. He is just saying that it is easy to think that certain new technologies will give you an advantage, but then realize later that what they cost you in bugs/complexity/maintainability etc. make it not worth it for the business. So it's usually better to go with tech that is tried and tested rather than always reaching for the latest new thing.

> and it actually results

Big if there...

new tech & research usually make little business. but are often a win for everyone.

Second this...do the boring work that no one else is willing to do..

what if the customers are engineers?

All the more reason to stick to tried and tested tech. Engineers like to experiment themselves, not have the foundations they stand on be experimental.

I don't think that really answers the question. If your customers are developers, then you need to bring something new to the table or you won't have any customers. You can't sell them someone else's products...

You're talking about two different things. "Technology" in the phrase "don't be seduced by the technology" means, the tech used to build your product. Not the technology of your product itself. Obviously you should innovate when making your product itself, but the tools used to make the product don't need to be bleeding edge for you to do that.

E.g. if you make a website, it should be a unique and engaging website. But you can make a unique and engaging website with Java. Even though it's old tech, your users will not know or care.

I understand what you're saying and totally agree. However, I was under the impression that the parent poster was talking about the products, not the tools, due to the way that it was phrased regarding "foundations".

Our customers are (I work at https://paw.cloud) For us we are happy with django for backend since we can trust it, but when we do cool stuff with django we take a few days to right up a blog article that for us is direct marketing.

>Remember that the most economical tool for the job is often not the coolest or trendiest - but is some old boring workhorse that other engineers will scoff at.

When I read this, a voice in my head yelled PHP.

It could be anything in the top 20, really [0]. The problem is that devs have an impulse to do something experimental and cool, since they have to work with workhorse languages all day at their day jobs.

The myth that they tell themselves is that $REVOLUTIONARY_FEATURE_Y will greatly improve their productivity, but the fact of the matter is usually that no matter how revolutionary the features, it's hard to overcome the benefits that come from an active ecosystem of well-tested and widely used libraries. Even if productivity is improved 20x by the revolutionary feature, a library that has 10 man-years of effort in it will take you 6 months to implement. Rinse and repeat.

This is not to mention the availability of online references and established conventions/best practices, the impact of hitting esoteric errors, and so on.

A good example of this is probably reddit. Originally written in Lisp, they eventually gave up and compromised down to Python due to improved tooling and library availability. [1]

[0] https://www.tiobe.com/tiobe-index/

[1] https://redditblog.com/2005/12/05/on-lisp/

These days Ruby on Rails is fairly orderly as well.

Wrote about this here in an article titled Just Build it in Django or Rails:


It's just really hard to beat the reliability, community, ecosystem, and features that are table stakes when using a competent web framework.

When you're poking at a new market, you really don't have time to give a shit about writing CSRF middleware. That's one less customer interview or feature request to grow your business. I'm sure you can do it, and no one's doubting your capability to do so. But these are just things that are tricky to implement and takes everyone time and effort to do so correctly.

I have a couple of criticisms of your article. Firstly, you give a list of successful companies who made the "safe choice" you're advocating, but you fail to mention that at the time the companies adopted those projects they were actually the cool, risky new upstarts. Your first example, Twitter, started in 2006 - a mere 18 or so months after Rails 0.8. If Twitter had followed your advice of using a 13 year old web framework when they started, what would they have been using? ColdFusion? They succeeded by using the productive new technology - which at the time (absolutely not now) was Rails.

And secondly, some of the features you list the frameworks as having are questionable at best. Rails has built-in user accounts, permissions and admin interface? Since when? And action cable is a great example of everything that's wrong with Rails - kludge together a frankenstein solution to tick a feature box. I do not know a single production user.

I think you confused the two messages of "don't build your own web framework" (I heartily agree) with your assertion that a startup in 2017 would be somehow remiss to not be using frameworks developed in the time of Windows XP, with which I do not agree.

For me the current "Rails in 2006" framework is elixir/phoenix, and for the slightly less adventurous, something in nodejs - maybe meteor or plain express. Of course Rails still works, and is not an absolutely horrible choice, but it's for last decade's web, and has profound disadvantages compared to today's technology.

I agree with you completely that these frameworks are old. They don't get features like websockets immediately. From a performance standpoint, they are lacking with respect to compiled languages. Statically-typed choices have come a long way.

However, for new business owners who don't care so much about getting an A+ for technical excellence, I would still stand by this advice. The benefits of technology maturity and ecosystem are extremely compelling.

Today, for someone who just wants to let their users log in with Facebook, Elixir has far fewer user-friendly resources and will require more technical expertise to produce the same result. How many StackOverflow questions address common woes in these popular frameworks as opposed to the up-and-comers? How easy is it to hire someone to build + maintain? What about for hiring on the cheap? What existing libraries and integrations exist?

Of course, these things get better for new technologies over time. Until then, I can't tell people to use them if it incurs a disproportionate cost to achieve the same return.

Lastly, that "it's old" is not a compelling reason to me to recommend something else. GNU/Linux was created in the 90s, and it's still everywhere and growing. There's a job for an operating system to do, and GNU/Linux solves it well enough for the amount of effort required to use it. I believe the same to be true for Django or Rails in building a fast business prototype for most enterprise or consumer use cases. I think measures of suitability for the task are more relevant than age.

Well, I agree with you of course. Re-reading my comment, I overstated my case somewhat. The truth, as always, is somewhere in the middle. I suppose I was reacting to the previous comments as well, asserting that anyone choosing anything other than the boring, tried-and-true mature stacks for any new project whatsoever was being "seduced by technology" and otherwise an irresponsible and non-pragmatic neophilic dilettante who is not a Serious Businessman Like Me.

For the use case you're describing, I agree completely with your comments. Perhaps a useful razor is - if you can't state specifically why you can't use rails (and don't say "it doesn't scale"!) - then use rails. I concede that 90% of the time, this is probably the case.

And yes, harping on about its age was silly of me. Age does not inherently mean anything. I'd use postgres (1984!) over mongodb anyday. And erlang is older than ruby. Right tool for the job is far more important, thanks for pulling me up on that.

All that said - I still think that categorically stating "use boring technology" or "just use rails" for absolutely any new project is harmful. New technologies are not always just about the new shiny, they can provide capabilities and functionality simply unachievable with the old. Look at what you can do with concurrency with phoenix. Look at what you can do with react native. Roundly writing off the whole idea of using this new tech as "magpie development" is just lazy.

> And action cable is a great example of everything that's wrong with Rails - kludge together a frankenstein solution to tick a feature box. I do not know a single production user.

The whole point of ActionCable was that it is being used by Basecamp: https://medium.com/@dhh/rails-5-action-cable-demo-8bba4ccfc5...

I have to agree. Rails is so much more productive now that the cowboys are gone... they're all writing node.js now snicker

I would use NodeJS for MVP. I think it is super important that you can have backend + frontend in the same technology.

Why? If you're proficient in multiple languages, there's no real upside, especially if each language is easily hireable.

And it's particularly irrelevant if the front-end or back-end is weighted more heavily than the other in terms of product value, when you might hire distinct rather than "full stack" devs someday.

Two big reasons are:

1. Your devs can always go to where the work is - if you divide FE/BE and suddenly you have a feature that needs a lot of BE dev, you can move people from the now-mostly idle FE team rather than try to hire them

2. You can share business logic between FE/BE for client-side functionality. I've seen a surprising amount of bugs that boiled down to "oh we updated code on the back end but forgot it surfaced somewhere in FE code as well and didn't update there"

Of course, YMMV and this probably highly depends on your project, architecture, quality sensitivity, etc etc. But to say sharing FE/BE languages has "no real upside" is a bit... optimistic IMO.

Point 2 is a good call. Hadn't thought of that.

In practice, Point 1 isn't too realistic though:

Front-end and back-end almost always use different build/debugging tooling, different unit/integration testing frameworks, and even different paradigms. Unless your developers are good at constantly switching modes, it's hard.

"no real upside" is wrong, as you point out, but I would stand by "no guaranteed upside" :-)

Node JavaScript and browser JavaScript are not the same technology, they just use the same language (and even then, not really).

C# and Java: looking at you!

It's a skill that can be learned like every other skill. You can take the "in 21 days" route or the MOOC / University course route, or constantly read business articles, Steve Jobs videos, etc.

But some top tips stand out for me over time:

* Talking to people, networking > Not talking to people

* Bug free > Elegant code

* UX > UI

* Simple products that do one thing well > Complex products

* Understanding entire market > understanding some people

* Building brand > Making quick money (for the long run)

* Sleep, exercise & healthy food > late night coding

* Solving your problem first > Solving the worlds problems

* Adaptability, pivoting > Ego

* Knowledge of where the money is > No knowledge of it

* Overestimating cost/expenses > Underestimating it

* Patience > No Patience

* No procrastination > Procrastination

* Reading books > Not reading books

Small clients > one big client

Especially at the beginning, you read here how often big clients can put you under at the beginning because you're not ready to deal with them.

Ohhh, yes!

After four years in which I frequently worked in a 6h/1h work/sleep rhythm for weeks at a time, I just left town and decided to never again have any customer that I couldn't fire and forget about on the spot if I wanted.

Big clients and projects were, at least for me, a complete nightmare. Worst were the lawsuits which, even when we ultimately won, would basically ruin whole years at a time.

Now I'm working for a few thousand customers at maybe $50/year average. When some technology or idea seems interesting, I'll spend 48h straight trying to get it working. When the weather starts to get warm, I'll spend the day in the sun with a bottle of white wine and no appointments until November.


A few big jobs > many small jobs

Low-paying jobs will consume more time than you expect. Be careful when quoting these. Always charge more than you think you need to cover your time.

Big clients tend to be very slow at signing contracts because their legals would examine every word and will keep asking you to revise the contract. Furtheremore, real big clients tend to be slow at adopting the techology they just bought, so you may not get feedback quick enough to improve your product. Big clients are more likely to argue for discount as they would use "I am big name" as leverage.

This, and sales concentration is a real risk as well. If you have few big customers and even one of them churns, the impact this will have on you is certainly going to be material.

Yes, the strategy for big client is to lock them in for long engagement (like a 3-YR term). Throw in some nice support package, longer trial period, whatever. Since big customers often take months to fully use a product (6-12 months is very common), I wouldn't worry about "oh now I got big name, I need more infrastructure, more money to pay my cloud vendor." It won't for 6-12 months and you probably can keep all the pennies from the big client monthly. If you get a downpayment (say 1-year for a 3-yr term), you get ammunition to grow your team and get more smaller customers.

That is true for consulting and manual/in-person kind of service. However with SaaS the automation is crucial to service the masses.

This. When small shops land their first big client they're always so excited. To me it's like having a stone tied around your neck. Big clients can often be more trouble than they're worth and become a financial risk when they send you packing and you've hired extra people just for their account.

Reminds me of https://www.python.org/dev/peps/pep-0020/

Beautiful is better than ugly.

Explicit is better than implicit.

Simple is better than complex.

Complex is better than complicated.

Flat is better than nested.

Sparse is better than dense.

Readability counts.

Special cases aren't special enough to break the rules.

Although practicality beats purity.

Errors should never pass silently.

Unless explicitly silenced.

In the face of ambiguity, refuse the temptation to guess.

There should be one-- and preferably only one --obvious way to do it.

Although that way may not be obvious at first unless you're Dutch.

Now is better than never.

Although never is often better than right now.

If the implementation is hard to explain, it's a bad idea.

If the implementation is easy to explain, it may be a good idea.

Namespaces are one honking great idea -- let's do more of those!

Good advice. Some of these (most?) apply to the business-side founder types as well:

> Simple products that do one thing well > Complex products

It has been my experience that business people constantly make this mistake. They feel a product has to satisfy all needs. The engineers I have met have consistently argued to remove features that are expensive to develop and add little value.

Both of those are anecdotes. Your milage may vary.

Possibly slightly controversial:

* Doing something you're interested in > all the self-help and motivational quotes in the world

* Doing something potentially meaningful and failing > doing something you don't care about and muddling through

Being able to stand up in front of people and tell them something. And make them laugh.

Listen to people, figure out what 90% is bullshit or irrelevant and what 10% is interesting business opportunity.

This is great, thanks! Could you do a blog post or something. :)


2009 post, but still one of my favorite distillations of the issues around b2b customer types. Particular impactful if you read it when you end up going above and beyond with support, feature development, and contract negotiations with both rabbits and whales and you're running out of money.

> It's a skill that can be learned like every other skill. You can take the "in 21 days" route or the MOOC / University course route

Sorry, what did you mean by "in 21 days route"? Also, do you have any MOOC on doing business to recommend?

There's a trope of technology learning books whose titles fit the pattern "Teach yourself X in 21 days".

the 21 days are in reference to Peter Norvig's article: http://norvig.com/21-days.html

Nice, but I'm not entirely sure about this one:

> * Sleep, exercise & healthy food > late night coding

Looks like it's against other points. I have a full-time job and I'd like to create a brand, too. Thus. I have to do late night coding.

No you are wrong. In order to get there (build successful brand) you have to take care of your self. With coding marathons, buckets of coffee and fast food (because "I don't have time to cook") you will end up with heart attack before you achieve what you planned.

Not only that but adequate sleep, regular exercise and healthy eating contribute enormously towards healthier cognition. As a developer, I tend to find myself far more productive and successful in a shorter period of time when I am living on the healthy side of things. Everything that is me just works better when I go for a run three days a week, eat clean foods and get in a solid 8 hours of rest a night.

Tee hee. 8 hours of sleep.

Sounds like someone doesn't have kids.

Mostly tongue in cheek, but also slightly serious. There are plenty of life circumstances that preclude all those things.

You are 100% correct - I have no kids and have the luxury of not having major life commitments blocking my ability to do these things.

A full time job is a 9-5. Let's say you commute from 8-9 and 5-630. That means you can gym from 645 to 8 (including travel time), eat decently, do some coding, hit bed around 1030, and be sleeping around 11 (so you have enough time in the morning by waking up at 7). Cook on the weekends, code on the weekends, social life Friday and Saturday night...

Do you work more than 40hrs a week? Why? Sounds like you're creating someone else's brand if so.

In my country I work from 08-15, excercise 1 hour. I still have 6 hours left for cooking food and coding before i go to sleep 22

Let's say you have half of this spare time to work on your side project, that is 3 hours. Excluding weekends, how much time would it take to build a business out of your 15-hours-per-week side project?

Well, typically building a business is a full time job. I'd recommend someone make extra money in their spare time to facilitate a work-break rather than trying to do two "full time" jobs at once.

Rome wasnt built in 15-hours :-)

That's so unreal it hurts

No it's not.

If it is, it means you're probably working too much for someone else!

Maybe you're right. Unfortunately. Thanks for the heads up anyway.

Good luck out there.

With exercise, I'm finding cycling to work and lifting weights are effective in terms of time. I spend half an hour of my day getting to work and back - probably about 10 minutes longer than it would take in a car. And with weight lifting, I never do any more than 3 sets of 10. The actual amount of time it takes is short.

This isn't exactly olympian conditioning, but I do notice a benefit and the time investment is low.

Running from the start as fast as you can will never help you win a marathon.

The principle is that you have to maintain health.

I think late-night coding is a near-constant because of our brains automatically optimize us onto what pg describes as "the Maker's Schedule". Context switching is anathema to effective coding, so people automatically go to the time when they'll be least-interrupted, which is when the rest of the world is asleep.

You also need to maintain a social life and relationships with family and friends. It will boost the productivity more than you believe

You need around 7-8 hrs of sleeping to focus and proper brain functions. Only 3-4% of world people can survive and work perfectly with 4-5 hrs of sleep.

getting 3 solid hours of working on your brand a day is much better than 7 bad ones late at night. Wake up earlier, work at lunch, work immediately when you get home. Late nights are not always necessary.

* Solving your problem first > Solving the worlds problems

Any chance you could expand a bit on this one?

I don't think it's accurate if you take it at face value. If you genuinely solve the world's problems, that's a better place to be (business-wise) than having solved your own problems.

But trying to solve the world's problems vs. trying to solve your own is another matter. You probably better understand your own problems.

It means: Solving your problem first > Solving others' problems (that don't affect you). The reasoning is that you are an expert in problems that affect you.

If the problem affects the whole world, including yourself, then it falls in the left bucket.

Thanks for the list, I'll refer back to it

I get some of these, but "don't procrastinate" and "understand the entire market" are kind of ridiculous. You might as well throw "know everything" and "work hard" in there.

I'm a dev who's starting a business and running up against some of this -- for me 'understand the entire market' resonated.

In my case that means knowing the major datapoints about competitors in my space (public vs private companies, who's making/losing money, appannie stats), knowing everything available about cost of user acquisition, and looking at psych studies on user motivations.

These are things I would have benefited from knowing on day 0 but instead only learned after building a prototype that I had to scrap.

If your business is enterprise focused rather than consumer focused, understanding one or two customers is probably good enough for a start.

Seriously. Your proof that you understand a market is only as good as the frequency that your understanding is tested, whether the test is profits or rote knowledge.

This is true for many things. I'm the best developer as long as I don't compare myself to a better developer.

Also, make sure not to confuse understanding your customers with understanding how the industry works.

Some of the craziest and successful startup ideas come from people who don't understand the industry at all and if they had they probably would have never tried to do what they did.

Survivorship bias. Some of the biggest flops also come from people who don't understand the industry at all, and if they had they probably would have never tried to do what they did.

You can't understand your customers if you don't understand their industry. Picking customers is like investing: if you pick a bunch of customers that are not going to win their industry, you won't thrive either.

That may be true, but it isn't a reason not to try. Heck in the process you may learn the industry, just too late for current venture. It is however a reason to be willing to recognise a flop and abandon it for something else.

Yes, but what I'm actually trying to do is cast suspicion on the dichotomy between industry and customers. Industry is not a thing that exists. There are only people, their objectives, their resources, and their problems. Those are the things that need understanding.

Perhaps I chose the wrong word. I was looking for a word to describe the biases of people entrenched within an industry.

I don't think that's what the parent meant: your time is better spent understanding the whole market than a subset, and your time is better spent getting the important trivial thing done now than working on the not-as-important nontrivial thing.

I found out pretty soon that setting up a successful software development business only receives 20-40% of your time developing software.

Business, like developing software, is a strict discipline, and there is a vast amount of knowledge that only comes from experience.

I found myself trying to do everything, until a friend taught me a clever trick:

1) Write down all of the tasks you have to do on a daily, weekly and monthly basis.

2) Write a short paragraph for each task's job description.

3) Write a job application from yourself for each of the jobs.

4) Contemplate why on earth you would ever hire _you_ for the job!

My advice is to work out exactly what tasks there are in running your business that you are not an expert at, such as accounting, sales and marketing, copy writing, etc. and hire people to do those parts for you. You'll see a return in no time... unless you don't... in which case your business model would never work.

For anyone who's interested in more advice like this, your friend's trick almost certainly originates from Michael Gerber's book The E-Myth [Re-visited]. Highly recommended reading for anyone starting a small business.

On GoodReads: http://www.goodreads.com/book/show/81948.The_E_Myth_Revisite...

On Amazon: https://www.amazon.com/gp/product/0887307280

Yes! I didn't make the connection having not read the book, but The E-Myth is another bit of advice that the same friend is always touting.

Thanks for the links, I may actually get around to reading this one soon.

It's too bad I can only upvote this once, great advice and a clever way of looking at things!

Thanks! It's advice that changed the way I saw business.

If you build it, they will not come!

Scream it in a loud voice, IF YOU BUILD IT, THEY WILL NOT COME!

You are going to have to build it, find them, plead with them, fight their refusals and shove it down their throat.

There are many unknown "unicorns" that currently exist as code. The code is done, there's just no users, because the world doesn't even know it's a thing and those that do know have not being convinced that it's needed.

My opinion, my advice. Forget the code, find the customers/market first.

A software developer with complete code and no customers is just a software developer.

A business person with tons of customers and no software/product is in business.

So decide if you want to be in business or to be a software developer. I suspect that most developers just dream about business as a means of escape from their day to day reality, but secretly don't even want to be in business, they love writing code more than being in business.

On the other hand I've encountered folks who claim to be forming a start up. They've got the name and the logo. They've got the whole pitch ready. They sound enthusiastic and passionate. But... they still have to find a technical person to actually build it. They basically have nothing.

And I often think there are too many people going around spouting wisdom for example about how you _must_ let customers and market demand drive your product design before writing a line of code. It's actually not true. There's plenty of good businesses which are built upon a fairly deep technical idea, which must have required a lot of development work in isolation before it saw the light of day.

...but I agree it's also a trap leading the death of many unknown unicorns.

Having a name, logo, pitch, passionate doesn't equate having customers. Having customers means you know who you are going to sell to, you have gotten commitment in terms of cash or signed contracts that they are going to going to buy your product if you build it.

My favourite was a slide deck pitched to me where they had 9 people on their 'team slide' with not one of them being a technical person. They were trying to build a phone/fax social database to compete with facebook.

It still hasn't shipped and that was 5 years ago.

>On the other hand I've encountered folks who claim to be forming a start up. They've got the name and the logo. They've got the whole pitch ready. They sound enthusiastic and passionate. But... they still have to find a technical person to actually build it. They basically have nothing.

These people are usually imposters who are asking for things that are totally unrealistic or generating interest for a concept that doesn't make any sense from a technical perspective. They have an idea and assume it can be done.

It's sort of like saying "Let's build a perpetual motion machine." Everyone is really interested in it, because it's a total fantasy. If the idea is practical, it's usually not hard to find someone who will implement it.

As a technical person, you know the limits. That means that when you go out and sell people or kick up interest, it will be for something that's at least plausible.

The frank truth is that software and technical work is relatively cheap. It cannot be the basis of your business because someone can come in and clone your product after you've done the hard work of introducing an innovative product and establishing/educating the market (I know because this happened to my business).

It doesn't matter if the clone is way worse than your product, because people are only looking at the very high level. If the clone can provide the basic functionality 20% of the time as opposed to your 99% of the time, if combined with substantive marketing, that's more than enough to win. Anyone who has done any amount of product research knows that the good products are almost never the most common ones.

Your brand, reputation, and intellectual property are 100x more valuable than any software or technical feat. Consider that Google and Facebook could lock 4 engineers in a closet for a year and come out with almost any software they wanted for around $1 million.

Ask yourself why, then, they pay $1B+ for companies like Whatsapp and Instagram. It's certainly not because it's too complex to figure out photo sharing or text messaging. They want the brand and the users that come with it, and it's that simple. The one thing that is most expensive in business is user attention and loyalty.

There are many apps that dominated app stores and were probably hopeful that they would be bought by Google/Apple and achieve fame and fortune, only to find that in the next iteration of the OS, they had been "NetScaped"; their core functionality baked into the OS either as an extension of an existing app (many souped-up camera and photo effects apps) or as a new bundled app (e.g., Keep).

The most important thing for tech entrepreneurs to understand is that while the technology is important and can give an edge, it is not the main value in your business. The main value will always be the brand and the users that come with it (and, as intimated above, beware of platform vendors, because they will always have the option to divert most of your user base to a first-party clone). Technology is comparatively cheap.

> while the technology is important and can give an edge, it is not the main value in your business.

Going out on a limb here, but I've been searching for a way to define this for a while, but... maybe those aren't tech companies? I'm talking about companies like Snapchat or Uber or AirBnB which, while they do exist as smarphone apps and lean heavily on the Internet, which unarguably involves a lot of technology, but they're brands, and not tech companies. Nothing wrong with that, but there are "tech" companies where the tech is the value... there are just a lot of non-tech "tech" companies, a majority of them B2C.

Companies that are doing things that humanity previously hadn't done are tech companies. Intel, as an early semiconductor company is, at least originally, a tech company. SpaceX's technology is the company. Regardless of who ends up winning, self-driving cars are going derive a lot of value from their technology in the form of patents.

Intel and SpaceX are less vulnerable to competition because it takes hundreds of billions of dollars to compete with them (nonetheless, they do have competitors). This is not the case with anything that's in bootstrap or even VC territory.

In principle, the same concept applies, it's just that it's too expensive for new entrants to come in to those industries, so they mostly don't have to worry about it. It should also be noted that businesses in other industries often attempt to install similar barriers to entry for themselves; suppressing competition is a huge part of remaining the big dog.

I hate to say it, but "tech companies" are "patent companies". If you have a patent on the technology and someone decides that it's not worthwhile to try to work around it, they'll license the patent, or maybe even buy your company if your patent portfolio is strong enough. In terms of an unpatented innovation by itself or actual software, it's not worth much on its own.

SpaceX's technology is not building a >$10B launch backlog and pulling in over $1B in funding. The SpaceX brand and culture are bringing in the right people to build the technology and the right customers to buy it: this path towards success, by definition, started before the technology was complete.

I have seen this advice throughout this thread - "first find customers, and then build it" but I can't seem to understand the following:

1. why will those customers wait for your software?

2. what if you delay launching your software?

3. As a software dev, I've noticed that 90% of the product is built in 10% of the time. However, it's the final 10% that make/break it - how do you account for that (as you have already promised your future customers a product that you have yet to build) ?

When people say, "first find customers, then build it", they mean find people or businesses with problems that they will pay you to solve. With this in mind, your questions have sensible answers:

Customers will wait for your software because their problems are not being addressed in the marketplace.

The consequences of launch delay are that you erode your credibility and allow opportunities for competitors.

You will want customers to start that will work with you closely so that as you continuously deploy your always-working solution, they see benefit with every release. The second highest compliment you can get is "Your product just gets better and better". The highest complement you can get is payment.

I try to think of the "market" as a pond. The customers are the fish. If you manage to catch a few fish, but can't hold on to them because your product isn't ready yet, it's not the end of the world. At that point, you know that some of the fish like your bait, and there are probably more out there who will want it when the product is ready.

Agreed. The advice should be.

1) Build an MVP, and get it to beta. 2) _Then_ get customers to try it out (give them an incentive, such as giving it to them for free). This works well with individuals, or small businesses. Larger company's won't give you the time of day, and you probably want to wait until you have some sort of following before you approach them; or you'll get squashed. 3) Get feedback. 4) Repeat steps 2/3 until your out of beta.

It's also key to know the software can really solve the problem.

Some primitive folks think computers are magic, but it is human sacrifice that makes their religion work at all.

In my experience, finding customers without code works only for specific products. Best of luck trying to find customers for stripe or intercom without any code.

Better advice is to work on them in parallel.

Yes! 1,000 times this.

Everyone thinks that when they announce their product is released that they'll have hundreds of signups the minute you launch.

What really happens is no one notices or cares.

You have to put on your sales hat before you launch.

I'm doing half and half. I'm building the core functions first, which is easily demo'd. Then once I get enough interest, then I'll build the app that handles user accounts.

The best advice I've had (and seen applied in practice) is this:

You need to get your company to 10k USD monthly product revenue within three months. If you can't, either the product, target market or team needs to be revised drastically.

It's hard advice to follow, but it will save you a lot of time because you can't wait months and years doing unessential tweaks to the product and marketing, hoping that sales miraculously grow.

It's also useful as a pricing yardstick early on. If you have very few customers, they need to be paying enough that you reach $10k almost immediately. If your product isn't worth that much, then you need to scale out. It's best to figure this out right from the start.

If it feels like you can't do $10k MRR in three months on your own, then you need to find a cofounder who can do it together with you... So it's a good way to calibrate cofounder expectations as well.

This seems really aggressive, especially for bootstrapped companies. My startup took 31 months to hit $10k MRR, and now we're at ~$130k MRR. I'm really glad I didn't quit after three months. I barely even had the product built after three months.

I think that for most people, if they abandon anything that's not already a huge success three months in, they'll just end up bouncing from one thing to the next and never seeing anything through. It's virtually impossible to bootstrap that quickly, and I'd be surprised if many of the big VC-backed startups we've heard of hit that either (certainly not Google or Facebook who weren't even monetizing yet at that point).

I strongly agree. Let's do the math: With a brand new un-proven product with an unproven pricing model, how many customers does it take to get to $10K MRR? In three months, how many qualified leads can you find and reach, and what percentage of those will close? (with an unproven product in an unproven market, 2% is probably a realistic estimate).

Of course there are scenarios where $10K MRR is possible quickly, but there's no way that is what most successful software businesses look like in 3 months.

It's certainly not a hard goal -- I wouldn't pretend that even SaaS businesses are all that similar. (The degree of reassessment after 3 months is up to you, after all.)

It's really a way to frame the product launch by forcing you to ask hard questions about what you're doing. If you don't even see a way for the product to reach $10k/month with a short-term plan, maybe it's a side project rather than a startup? Or maybe the product niche is too vague or unprofitable, and you need to work on that first?

(I can't edit the parent comment anymore, so a clarification: when I wrote "not a hard goal", I meant that the $10k number is just a rough ballpark -- not that the goal would be somehow easy to accomplish.)

Have you already accomplished such a goal?

Yes, but no thanks to myself. I wasted about a decade being a crap entrepreneur that didn't have such goals. It was easy to rationalize spending time on the work I liked doing under the pretense that I was improving the product's fundamentals. In retrospect, I would have been much better off facing my fears and doing clearly delineated 3-month efforts with revenue targets rather than persisting with products that don't quite work.

I'm still a crap entrepreneur, but I've become slightly better at teaming up with people who can make it happen.

Have you started a side project and after 3 months you were making 10k per month?

No, but I've been in a startup that got to $10k MRR in under three months after launching the product... And that opened my eyes to what all the talk about the mythical "traction" actually meant.

If it's a side project, that's a different game. A side project doesn't need traction to be successful for its creator.

3 months after launch is a lot more specific, your first comment suggests 3 months after starting...

Yeah, while this may be good advice for some types of markets/businesses/circumstances, there's no way that it's useful as general advice, especially not for side projects or small companies that only need to support one person. Getting that initial traction is the hardest part. Quitting after 3 months is silly.

I don't know how much Atlassian made in its first three months, but they are one of the only bootstrapped tech companies to go public in the last 2 decades. It took them 15 years. While this is not necessarily the fastest path to success, I 100% believe it deserves immense respect. They're one of the biggest success stories in tech as far as I'm concerned.

(Of note, Atlassian has mainly focused on enterprise markets)

I think the $10k goal is sort of a brain hack. From my understanding, the real goal here is to force you think differently.

I think $10k MRR is a good target. It's basically a limit of ramen profitability for a small team of 2-4 (depending on the family etc. responsibilities of the team), plus a little bit of extra to run the business. When you hit that, it's possible to commit full-time without extra financing and you don't run out of your savings.

I wish all my competitors would take this advice.

$10k MRR in 3 months seems like a lofty goal to me. Is that from product launch? or from day 0? with or without investment?

From product launch. The point is to launch something that you can imagine selling $10k/month; that you have some kind of plan how to get to that level of sales; and that you'll hold yourself accountable after three months if it fails (and figure out what to do next, not just stick to the thing that wasn't working).

$10k MMR sounds like a lot of money, but it is not. Most people who have never run a business fail to realize how much overhead there is - costs that the business has to pay that isn't labor or obvious materials. If you make a widget from iron it is easy to calculate the cost of the iron in the widget. Did you ever consider how much toilet bowl cleaner is in each widget though, what about your time to clean the toilet? (once you are making more money you pay someone else to clean the toilet, but you still have to account for your time checking that they actually clean it) $10k MMR sounds like a lot, but after overhead I would expect it would give you the equivalent of $50k/year in salary - I think most people reading this make more than that.

To answer your question: The day all your other investment dries up in the worst case. If you have no job or savings you can probably live 3 months on things like your credit cards and not paying the landlord - after those 3 months you better have enough income to start paying your personal debt. That is you need to send the landlord a check for at least 1.5 months rent and with a promise to pay the rest off soon. Likewise you need to be able to buy your groceries with cash and pay down the credit card dept you ran up. It should go without saying that in those 3 months your personal bills should be just enough to stay alive.

Note that the above is the worse case. If you are in month two of the above situation and realize that you won't make the $10kMMR number you should cut your losses, declare bankruptcy and find a day job.

You probably have some savings to live off of though. This means that you have some flexibility. If you are in month 2 and realize you won't make the 10kMMM you can decide if you cut your losses now or not. You have an idea of what your overhead is, who your real competition is and what your leads are (and thus likely future MMR - though don't get over optimistic), if you think things will get better continue, if not cut your losses: you can probably sell to a competitor for a small price and make everyone happy.

If you have investors who are any good at all they have considered your business plan. Sometimes they will insist on the 10kMMR or they will exit, other times they will agree to fund a plan that won't make money for months - but the plan covers that and you have enough income from the investors to live.

There are always other considerations to. 10kMMR is a good number, but you have to figure out how it applies. If your target market is snow plows you should expect your entire income to come during the 3 winter months, and 0 the rest of the year. Thus in winter your MMR needs to be at least 40kMMR, and you need a savings plan of some sort to get through summer.

Don't forget that you can sometimes moonlight. Maybe your ideal is only worth $2kMMR. If you can support this business working only 8 hours a month you keep (or find) a day job for most of your income. That extra 8 hours a month works out to $100/hour after overhead. This again changes the calculations.

> You need to get your company to 10k USD monthly product revenue within three months.

You probably need to add how much you can spend on customers acquisition to your equation.

Generally speaking, I'd say $10k MRR in three months from a dead start is only really doable if your "product" is in large part a service....e.g., a visualization tool for enterprise customers so they can better understand their data sets (requiring extensive setup and bespoke integrations), or something like that.

I'm sorry but I find this advice deeply misguided. Few startups get to $1k MRR in their first quarter, let alone 10X that. Three months is a good timeframe for a first release and hopefully a few paying customers, but this is unrealistic.

I think this is a rough rule of thumb, obviously there's nothing magical about the $10K figure, but it does get you thinking in the right direction.

Really interested in hearing more about this. Do you have any examples of who is pitching this?

Pitching? I don't know if there's really anything to pitch here. It's the kind of thing I've been told over lunch a few times, and seen happen in practice. That's all.

1) Figure out who you are selling to and what problem you're solving for them BEFORE you build something. It's very easy to fall into a routine of building the best software ever while forgetting you need someone to buy it.

2) Banks will loan you money when you don't need it and won't loan money when you do need it. Apply for a loan or line of credit when you're flush with cash in case of a rainy day.

3) Running a business is a different skill than developing software. Be prepared to learn a lot of new skills.

4) Don't hire too quickly. Payroll + benefits can eat through profits like crazy in a software business. The counter-point is that a good salesperson will bring in far more revenue than they cost in salary and commission.

5) Know your numbers. You should have good accounting records and know from week to week if you are on track or slipping.

6) Don't hire a 'marketing' firm. They will charge 10's of thousands of dollars to ask you questions like 'What do you think we should do?' and then feed it back to you. If the product is positioned well with customers, you know more than the marketing company ever will.

7) Don't let a single customer account for more than 10% of your revenue. If that customer leaves, you'll be in a painful situation. It's difficult to do this at first but it keeps you from chasing a big fish to the detriment of the rest of your business.

8) A good reputation and word-of-mouth is better than buying the #1 spot on Adwords.

9) Figure out how to sell again and again to the same customers. A one time sale makes means a high cost of customer acquisition. Once the customer likes your company you should see what complimentary products and services you can sell too.

10) Once you've had a taste of the freedom (and stress) of working for yourself, it will be very difficult to go back to a regular job and work for anyone else.

> Figure out who you are selling to and what > problem you're solving for them BEFORE you build something

Prototypes. Powerpoints. Smoke and mirrors. Demos.

Don't build a thing until you have a buyer. A buyer usually is equally happy buying software or watching a powerpoint and buying software that will be delivered in a few months.

Having a customer who has money waiting makes all the other things simpler. Need to rent an office? Tell them you have customers but no money at the moment. They'll figure out a way to get you into that office. Etc.etc.etc.

7 brings back painful memories. Good advice.

Excellent points beyond the boiler template on what to do to succeed. This reads like a lot of personal experience in here.

I wholeheartedly agree with 10.

I was a software engineer for 10 years (first 10 engs at LinkedIn -> first 10,000 at Google -> first 10 at Factual). After that I was about to start a company but fell into venture capital instead. Here are a few things I've learned about business from the VC side that I didn't appreciate very much when I was an engineer:

1) Customers don't care about the technologies you're using, the elegance of your XYZ algorithm, or the novelty of feature ABC. What they care about is solving some problem they have, making their day easier, becoming more productive, etc. When you're pitching your product, talk about how it helps the customer, not about how it's built. A great 5-minute video on this is "Understanding the Job" by Clayton Christensen: https://www.youtube.com/watch?v=f84LymEs67Y

2) Think about monetization early on. Like most engineers, I had dozens of side project and business ideas. For each idea, I had thought about the features I'd build and how I'd build them, but not the business viability: who would I sell to? What would the pricing model be? How much money would that translate to for a typical user? Would users have the work/personal budgets to pay what I wanted to charge? Was the price enough to cover marketing and user acquisition costs? I haven't read it, but have heard that a great book on this topic is Monetizing Innovation (https://www.amazon.com/dp/B01F4DYY1I). Another good book to think about business models is The Art of Profitability (https://www.amazon.com/dp/B000FA5TTM, brief notes: https://codingvc.com/the-art-of-profitability)

3) Finally, think about marketing and customer acquisition in parallel with product. After almost 5 years as a VC, I can readily confirm that most products don't sell themselves. Even the really good products need sales, marketing, etc. A great book to get started on marketing is Traction by Gabriel Weinberg (of DuckDuckGo) and Justin Mares (https://www.amazon.com/gp/aw/d/B00TY3ZOMS/)

I think your last link for Traction is incorrect.

Fixed. Thanks for letting me know!

If you choose to run a software development agency:

- Shoot for between 3 and 10 clients. Any less and you'll be very stressed about losing a client. Any more and you'll be overwhelmed with juggling too many balls.

- Fire bad clients. They aren't worth the stress, frustration, and opportunity cost.

- Work on your process. Doing an hour of client works earns you one hour of revenue. Improving your agency processes can earn you a large multiple of that.

- Don't be a <insert software technology> shop. Be a solver of a specific business problem for a specific type of business. Example: "We streamline backend processes for multi-million dollar trucking companies." The most valuable contracts are for solving expensive problems.

>Be a solver of a specific business problem for a specific type of business.

Totally agree in principle, but I've found it's very hard to do this in practice.

Unless you have a priori knowledge of an industry, before your first consulting gig in it, it's hard to just step into a business domain and know what specific problems an industry has that can be improved with better software and which of those specific problems are generic enough to be shared by many companies in that industry – while not being served "well enough" by an existing product. And you have to figure out if it's a niche that's big enough to support a company, while balancing other desires, e.g., not spending weeks traveling around the country to sell and work with companies in this sector.

I'm not saying it can't be done. It can, obviously; there are companies doing it. But it's not easy to just go do it. From my limited exposure to consultancies taking this approach, many kind of kept their eyes open and fell sideways into it, i.e., they worked with one client in a sector and realized the client's competitors had similar problems.

I agree that it is challenging for all the reasons you stated and more.

This book really helped me overcome many those issues:


Fire bad clients. This is a very important piece of advice. Bad clients will kill your energy, drive and time.

Define bad clients. Is it: 1) clients not worth the money for the effort (but good learning), OR 2) clients who are unprofessional i.e. don't pay up etc (I'm sure there are multiple such delineations on what a bad client can be)

Can you elaborate on what you mean by improving your agency process?

There are certain core things that your agency will have to do in order to succeed. Some high level examples:

- Aquire Clients - Do client work - Manage projects - Bill clients - Do pricing/timeline and estimates - Hire employees or freelancers

Within each of these high level tasks are numerous subtasks.

You do not want to re-invent how you do those things each time you need to do them. You want a tried a true process that you keep evolving and improving based on a historical success and experimentation. This will allow you to scale and handle larger and larger projects. It will also allow you to onboard new team members quickly and when they leave, the things they learned won't leave with them because you'll have documented the learnings.

This is the book that inspired this line of thinking in me.


> Can you elaborate on what you mean by improving your agency process?

I think he means what this person said: https://news.ycombinator.com/item?id=14147079

* You get to be your own boss, but that’s not always a good thing. Because being your own boss does not mean that you are a good boss.

* Execution>Idea. Don't work on multiple projects till at least one is shipped.

* Pairing up with other like minded folks is better than going solo, but only if you can get along really well.

* The highs are higher, and the lows are lower.

* Develop good habits

* Make your first project a small one

* Failure (at least small ones) is not a problem. Failing to recover is.

* Sales and Marketing are very important. They need as much time as working on your products/ideas

* Start now, you'll never feel ready

This is the tl;dr version of a longer blog post I wrote about my personal experience http://www.dotnetsurfers.com/blog/2016/03/29/lessons-learned...

We've already established that the main thing to know what makes your customer tick so I'm surprised this isn't mentioned yet:

Your first MVP is simply a static website describing problem, solution and signup, with Google Adwords and analytics.

* Given that your target market are going to be ideally using Google to search their problem or solution, with Adwords, you can test exactly what they are actually searching for when they are looking for your product.

* Analytics will be powerful to measure the engagement of the user to your desired product. Have buttons or measure scroll for engagement. Do they read your problem and leave? Obviously not relevant. Do they continue onto your solution but leave? Wrong market-product fit. Have options on the website for easy A/B testing to figure out your demographic.

* Static website is super easy to change and make pretty as so many templates out there, and even if you don't use A/B testing tools, you note when you make changes, so you can compare sets of user analytics data.

This approach was popularised by lean startup methodologies, but what I love about it is it takes a couple of hours to setup, and an hour each week to tweak and monitor, and you'll know early on whether it's worth even developing the software from the very beginning. The saved time is worth the adwords cost (you can set a budget per day on their dashboard) and cost of static website hosting.

Beware the dangers of the green field. It seems to be every developer's dream to have a green field for a project. You're there at the beginning, so you think you can spend the time to make the correct design decisions early on to ensure you don't end up with the kind of technical debt you've seen at the companies you've worked for before. You'll thoroughly enjoy being a perfectionist, refactoring your code to your own idea of code standard bliss. Immersing yourself in code will keep you busy and make you feel like you are doing important work. The thing is, you're probably not.

Build something, get it in front of customers as quickly as you can and get them to pay you. You'll likely need to do this multiple times to get the right product or features that people actually want and will pay money for. Skip anything nonessential at the start. Focus on the key features that customers will pay for. It will feel broken, but it's only broken if you can't get any customers. This seems like obvious advice, but you're a developer, it will be difficult for you not to aim for perfect before you ship.

Know going in that you will probably be embarrassed by your codebase, but it doesn't matter. When you find the right product formula and need to scale, you'll probably need to refactor or rewrite large parts of it anyway. Even if you build it "perfectly".

Whatever you do, don't use this time as an opportunity to learn some new language or framework. Use whatever you are most efficient with - now is not the time to be learning React/Vue/Angular or whatever else you've been wanting to get stuck into recently. If you can build it faster with mostly server-side views, then do that. Don't stress about picking a language or framework based on future problems like how you'll hire a team - worry about getting that far first. If you're a pro with PHP, use PHP - don't worry about others thinking you're less of a developer because you're not using Go or whatever the flavor of the month is.

Oh and keep it cheap and lean. Don't go building out a huge microservices infrastructure that you may never need. Build a simple monolithic app first and host it on a dirt cheap VPS. Once you get traction you can start splitting it out and worry about scaling individual services.

I've written a little more about this on Medium - https://hackernoon.com/shit-startups-do-episode-1-cbfa73f9c2...

"It seems to be every developer's dream to have a green field for a project."

I've managed at least one developer who was a genius at bug finding and fixing but who was completely lost when given a "green field" part of a the product to work on. I found this out when I "rewarded" him by giving him a "green field" to work on....

I would say: be patient and determined.

1. Your idea and your software will probably not be aligned to your market needs at first;

2. Go out and talk to your customers;

3. Do not just focus on code;

4. When your customer really needs something that is not in your software, do not hesitate to bill this customer for special developments: it will finance the feature for all your customers and keep your feet on the ground;

5. CIO are overstretched by sales rep, so B2B sales cycles can be really long (at least in France).

Disclaimer: CEO of a French Cybersecurity software company. French market is known to prefer service over software and "On Premise software" over "SaaS". As a result, we switched from SaaS mode to On Premise, and we started with Penetration Testing to join the end of the month. While my advices might not be the best, we are in our third year of business and should finally reach profitability :)

I have been walking the line between technology (working software engineer my whole career) and business (small business owner, technical cofounder, startup employee several times over) my whole life and if I had one thing that I wish I had known earlier it's this: trust yourself! Just go, learn, and repeat - action is king.

Let me elaborate on that a bit. Seeking more and more knowledge and wisdom in an effort to learn some kind of system or trodden path to success is understandable but can quickly consume all of your time & energy and likely won't provide much real value over the long term. Nothing, and I mean absolutely nothing, beats jumping in, doing stuff, being objective and introspective enough to identify what works and what doesn't, and iterating. What people are doing now will change. What people are using to do those things will change. What won't change, though, is the value of being able to take action and move through that world with confidence and resilience.

Reading, research, and listening to people is good but you should trust the laboratory of action above all else, especially over other people's opinions. Why, if you're a normal, intelligent, rational human being, would you ever put the opinion of some arbitrary person above what you can observe yourself? Because it's on the web or in a book? That's silly. Be extremely selective in who you allow to be your advisors - you wouldn't indiscriminately sleep with just anyone at the drop of a hat, would you? Don't just take advice from everyone, either.

Don't let people pigeonhole you, don't let people project their ideas onto your passion, and learn to identify where you should spend your precious time & attention - most of the time, you should spend those on action, not navel gazing and not "preparation" for action.

There are maybe a handful of books and blog posts that are really worthwhile. Once you have read those, everything else is simply other people regurgitating what they have read and is therefore not very useful. Also, on points that are very crucial, like legal and financial matters, I would hope you have an attorney and accountant to help you make those decisions - don't try to learn everything yourself and carefully establish and nurture your inner circle so that you can focus on - you guessed it - action.

"There are maybe a handful of books and blog posts that are really worthwhile."

Can you recommend one or two favorites?

Sure. I like Hello, Startup by Brikman and Zero to One by Thiel and follow Y Combinator's content on YouTube. I also love Disciplined Entrepreneurship - the book used in MIT's Entrepreneurship 101, 102 & 103 courses. There's a corresponding workbook, too. A lot of this stuff is subjective, though. That's the stuff that has proven useful to me, personally, but as always, ymmv! Anything on basic business & economics is probably enough for a smart person with a good head on her shoulders to get going & pick up the rest on the move.

Overall, the number one most valuable skill in my opinion, and the one that I keep coming back to over the years is critical thinking. For that, I love Understanding Arguments, the Philosopher's Toolkit & Ethics Toolkit by Baggini & Fosl, and anything "legal", which sharpens your critical thinking, like Farnsworth's Legal Analyst or even Intro to American Law on Coursera. But those three books on basic reasoning will serve you well for the rest of your life as a business and technical leader.

The number one thing is understanding what customers want. Every business guru and product person in the valley will tell you to "talk to your customers". The major exclusion there is how you talk with customers. Simply asking people how you can improve your product or being more deliberate and saying "what do you want? If I could add any new feature, what would it be?" is wasted time. These questions feel normal and correct, but they'll lead you down the wrong path. What you instead want to figure out is the contextual situation which has lead your current customer or prospect to you. Figure out what that customer wants out of that product _for them_. That's how you start to build great products.

Two books that can help understand it in more detail:

. The Mom Test - good and bad questions for customer discovery

. Competing Against Luck - introduces the concept of "jobs to be done" - people are hiring your product for a specific job they need to get done

1) make an MVP. minimum viable PRODUCT (not prototype)

2) Pick an idea that you would pay to use (product champion). If you are not the target market, you need to find a product champion who will join your team prior to the MVP creation.

3) Do things that don't scale. don't future proof your MVP, just make it so you can validate that your product has a market beyond your product champion.

4) Create a website for your MVP and make sure you can run it at low/now cost for at least 6 months before you decide to abandon. Marketing is hard and product discovery might be the biggest challenge you face. As long as you have more customers every month you are doing ok.

5) Even if you give your product away for free during MVP/beta, figure out some way that customers who want to pay you can. This is very valuable for determining product fit. if nobody wants to pay, figure out what would make them decide to, and use that for determining how to pivot.

source: myself, I made/make phantomjscloud.com

That it takes industry longer than you expected for it to move on to the next new thing.

I made this mistake in 2012 thinking that my product would no longer be wanted by 2016 and so didn't invest in expanding sales. 2017 has arrived and our sales are at an all time high and I have no idea when the market will start to decline. I lost a huge amount of money getting this wrong.

In my defence eveyone else in our industry thought the same thing and made the same mistake.

Regarding your particular circumstances, is it because sequencing centers are slow to upgrade to the newest sequencing technology (probably because the investment in the last-generation is so large)?

No. It is because the next-gen sequencers just don't do what the old sequencers (sanger) do (sequence small regions of DNA at high accuracy). The new machines can sequence a whole genome, but if you only want to look at small part of a genome then there is no replacement for Sanger sequencing.

Another surprising reason is the OEM manufacturer of the instrument (hitachi) basically over engineered the machines and built a tank. The machines just keep running and running.

Industry loves a solution that works. If your grassroots customers are happy they'll tell people.

Keep it cheap and keep it good.

You mean, keep it good. Keeping it cheap is almost never a good idea if you are able to sell it expensively.

I'll never understand why developers almost always underprice themselves.

If I had to pick one piece of advice for software developers looking to jump into entrepreneurship, it is that most companies fail because they build something no one wants. In fact they build it really well.

Thus technical debt, scalability etc. simply don't matter until you iterate your way to solving a problem other people care about. That's much better than solving a problem well, a problem that not enough people have.

Ie. in short, stop engineering software and start figuring out what people actually need. Not just 'nice to have', but a real need that causes real pain. To see if enough people need what you are planning to build - you don't need to built at all, just draw it out, explain it in a doc, and go ask people. You have to really ask them and push beyond their initial "sure yeah, it'd be nice to have". Ask them how they do the task / fulfill the need now. Ask them how much that costs. How much would they pay if you built a better one, etc. Really try to get a "no i don't actually need it" instead of being content with the polite lie of people wanting the product.

I know you said one thing, alas here are 6 one things

1) It takes longer than you think/imagine

2) Start smaller, no smaller still

3) Self fund for as long as possible

4) Be positive, stay positive

5) Identify people you can talk to about your work

6) Be honest with yourself, hard/brutal honesty

Regarding (6), what were a few brutal truths you had to confront?

Sales is tough.

The product is not as cool as you think.

Cash flow is king.

Interest does not mean shit, turnover is the only important indicator. The difference to gt somebody to go from excited to hand over money is day and night.

Nobody cares about how cool the code is. Nobody cares about how pretty the application is. Those are side issues, does it solve a problem that people are willing to pay to get solved. Excel solves many problems and people are already paying for it.

Your application/idea is not as unique as you think it is.

Disruption and innovation are words that have little meaning these days, most of the time one is trying to improve a process or business, that does not equate disruption/innovation only improvement. Improvement is a good thing.

There are going to be hard days, acknowledge those. Know that everyone who is trying it on their own has those days. Most people don't show them to the outside world it does not mean they don't have them.

For me it was "nobody needs my app, except myself"

Thanks for your insight !

Coming up with the idea is easy. Sustaining the motivation to grind over long periods of time is hard. Entrepreneurship is an internal struggle more than anything else.

If you are working a day job as a programmer (while setting yourself up to go down the startup route), go with contracting as soon as you can, the rates are what you set them at and you should always set them high.

The other advice that has been invaluable to me is NEVER EVER reveal your salary to recruiters. Always state what you want to be paid and go from there. When you reveal what you are earning, you are immediately weakening your negotiating position. This may seem obvious but it would surprise you how many people just go along with their very invasive questioning.

OP is talking about a jump to entrepreneurship. Why would an entrepreneur talk to a recruiter about their salary?

If OP is considering a move to contract software development work, your advice could be relevant to OP not offering his/her hourly contract rate to third party recruiters who ask for it, but most independent contractors have an hourly rate because they know the market for their skills.

>If you are working a day job as a programmer (while setting yourself up to go down the startup route)

Any advice on how to transition from a day programming job to contracting? Any useful resources? Where to find contracting jobs/ through agency or directly approaching clients?

Only just noticed this, I guess if you check your comments you can pick this up at some point.

Best advice is do it early, use your usual job sites (Monster etc.). Resources will depend on your country but the only real administrative hurdle is insurance and taxes so you will need to look up what your country's business rules are. Most people tend to set up as a small limited company or something of that nature and then get the necessary insurance and taxes once you actually land your first contract.


A developer with marketing skills can build products and achieve revenues far in excess of their skill set.

This is excellent advice. As a startup with some extremely talented engineers we build amazing products but if no one knows about it, then you've got a bigger problem.

I can't speak highly enough about http://tractionbook.com/ which I recently came into - it has pragmatic advice on marketing approaches and systems justifying with real data how and why to do what.

It's co-written by the DuckDuckGo founder, and as an engineer who is thoroughly tired of marketing "hackers" who justify expensive campaigns with hand-wavy nonsense, this book changed the way I view marketing in general.

A lot of the reviews are positive about the first 2 chapters, but complain that the remaining chapters lack depth. I would like to own a good marketing book for techies written for this age, but I like to see concrete advise.

How do you feel?

This book is great. First few chapters outline the general framework and give you the overview of strategies("traction channels"), and the remaining chapters just explore each strategy in more detail.

Definitely worth buying even for the first two chapters.

If you want a TL;DR:


SHIP IT. Even when you are embarrassed about it. Ship it and try to sell your ugly baby. If you can't sell it, ask why and iterate on that.

I've seen what happens when you keep the product secret, trying to perfect it before you show it to the world. You'll run out of money making a pretty baby that no one wants.

I agree. I developed a Pinterest-like app around the same year they launched. I even had a perfect domain name for it. Being a perfectionist, I never shipped. I was worried about things like scaling to support tens of thousands of photos, a "similar images" feature, etc. A few years after abandoning the project I discovered Pinterest. ¯\_(ツ)_/¯

sad, but made me laugh

* Learn to say "no" to feature requests that don't fit.

* Look after yourself. The body supports the mind and vice versa. Neglecting one is neglecting both.

* Delegate.

* Create a distraction-free environment. Co-working space, public library, converted garage/shed, quiet cafe. Only work from home if it is truly free of distractions & interruptions.

* You can't be an expert in everything. Focus on the value creating activities.

* Serve people, not problems.

* Solve problems, not people.

I posted to my twitter/medium but will copy here:

I wish I knew that I could start saving and investing the money I was already earning — and retire while still young. Your odds of success as an entrepreneur are basically zero. (I know some of you are going to do the startup or nights/weekends project anyway and I wish you the best of luck.)

If I knew this I could probably have shaved years off of my FI date.

I assume your software development skills are second to none and you could apply them to any problem.

You won't get anywhere solving any problem.

Find a niche for what you can offer, and only go forwards once you've saturated that niche. For example, find a specific line of business that you're passionate about and approach them. Get a name for yourself and excel.


Learn how to do sales end-to-end.

How to listen to a customer and understand their needs, how to market to those needs, how to convert those leads into contracts, how to bill those customers, how to make them feel valued and show value to them, how to upsell when the contract expires (how to get more value from them).

Learn sales. Mostly because it helps you understand the whole of a business, and will guide any prioritisation of your engineering like nothing else.

It turns out, you really don't need to build a great thing, you just need customers who pay.

mattjaynes nailed it pretty much. On a slightly different spin though on the 'wish you knew vs what you know' my journey was a bit different.

When I came to the Bay Area I knew I wanted to be entrepreneur but I also knew I had a lot of gaps in my understanding. The two big ones were sales and marketing, and the other end production and release. I took positions at established companies (Intel and Sun) to learn what these functions do in "real" companies. I then joined as an early employee a start-up, and learned everything I could about funding and equity and the unique environment of small groups tackling big problems. Then did it again and got to learn about the whole acquisition process, the challenges of taking things public (or not), and learned I still had a huge gap in what MBAs called the 'business model.' I went to work at a company that had an excellent leader and business model at the time (NetApp) and started internalizing what adds value, what doesn't, and what is and what isn't a reasonable way to look at things.

If I had to do it again, I would probably have gotten an MBA while I was at Sun (my second job). While there is a lot to dislike about 'MBA culture' that would have been a faster way to accumulate an understanding of how to evaluate a business to see where it could be improved.

- that it's all going to be worth it in the end (it would have been comforting during those 100-hour-weeks)

- Some of that quick & dirty temporary code would be used for the next 18-19 years.

- I might as well have used PHP instead of Perl. Same (bad, messy) code quality, but even faster development and much easier hiring.

- Costly hardware early on was a waste of money (we outgrew it so fast that a beefy desktop PC would have been a saner investment at that point).

- Managing people is the one thing that you can't "fix" permanently. It's always an uphill battle unless (presumably) you're naturally talented/charismatic/psychopathic.

- don't bother with marketing people, advisors, business consultants early on and don't create product dependencies (e.g. by building a specific version of your product for others). It's not worth it until your product is polished and proven.

- Don't hire people carelessly because you don't want to invest precious time. Don't hire friends/acquaintances unless you've seen them working. Firing people is one of the most difficult tasks.

- Bad things will happen. Don't spend too much time trying to prevent them, or worrying to much. Just make sure you know what your options are when you need to put out fires and manage basic info (don't go searching for your hosting provider's phone number when you need it).

I made the mistake to not focus on the business first. The tech is interesting but priority number one, two and three should be the business. Finding customers and serving them efficiently should be the main focus. Only then think about what tech to use.

There's a ton of stuff in 'Start Small, Stay Small' by Rob Walling. It's a bit dated, but lots of great advice.


I wrote a post on this topic back in 2013. Can a software developer be a successful entrepreneur: http://adeelraza.co/blog/can-a-software-developer-be-a-succe...

4 years later, happy to report that I have a successful startup.

It's rare that I ask someone to self-promote, but what do you do? :)

I founded an email marketing / lead generation startup, MailMunch. We saw 1 billion unique pageviews in the last year :)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact