It's 2016 and you want to become a developer

on 13 February 2016

I’m sometimes asked how someone should learn to code. This is my attempt at an answer.

So you want to build a site and can’t afford to contract it out? Maybe you’re looking for a career change. Perhaps you’re just interested, and curious about how things like Facebook are built. Learning to program is fun and rewarding (both intellectually and financially).

The environment

The development industry (and we wouldn’t really call it that) is incredibly open, mostly welcoming, but also fast-moving and that can be scary. People like shiny new things, and we often talk mostly about the new things while we actually do most of our work with the old tools.

For a beginner it can be difficult to know what to start with. Is it apps? Is it websites? Is it learning your way around the command line? There are literally hundreds of options out there. Accept that as a reality - you’re not going to understand or even know them all.

This continues to be a problem all the way up the skill-chain. First you’ll worry about which program to write code with. Then you’ll face choosing a programming language to write your software. As you get more skilled you’ll look at libraries of complex code that other people have written and have to decide which one to use in your project. Then you’ll have the choice of writing your own complex code or using someone elses. And finally you’ll decide that your problem is so unique that you need to write your own programming language…

You’ll never know where to start. Ever. So just get used to diving in. If it turns out you’ve dived into a tank of liquid shit, and not a five-star heated pool, then just climb out and take another dive.

Semantics

The terms programmer and developer mean the same thing. If there is a difference, it’s probably that a developer looks at a bigger picture than a programmer. A developer probably has more involvement in architecture, ideas, design, user interface and even the business side. A programmer is likely more focused on writing code. But as I say, people just choose the terms they personally like to use.

And us programmers all use different terms for what we build, but at its core we are creating software : websites, apps, games, programs that make lights flash on a Raspberry Pi - it’s all software. So when I talk about software don’t think it’s irrelevant for someone who wants to design websites. It’s not. It’s all the same stuff.

Designers vs Developers

There is definitely a difference between designers and developers. Designers are concerned with how things work, how users interact with them, and how they look. Some designers write code. Some just create pictures or animations of how things should look. Many people wear both hats - but they’ll definitely lean more to one side than the other. It’s very rare to find a developer with excellent design skills.

One area of confusion is the difference (or lack of it) between web design and web development. For me, a web designer probably works mainly with sites that don’t have much depth. They’ll build a great looking site for your local bar, or design a theme for a blog. A web developer probably builds more complex sites - an online shop, or Facebook. These aren’t rigid rules. I’d call myself a developer.

The people

I taught myself programming as I went along - mainly because I had ideas for sites but no money to pay anyone else to make them. I thought being self-taught was unusual - and I was always conscious that my solutions were often quite scrappy (some might say precarious).

But developers are actually quite unusual among the professions. My feeling is that about half of us are largely self-taught, and the other half have studied computer science.

In my experience someone’s educational background makes no difference to their perceived skill level or value. Passion, curiosity, and intelligence - if you had it when you were a toddler then you’ve got it now.

So if you’re coming late to the party - Don’t worry! You definitely don’t need to go back to college and study computer science to get started. Dive in and start learning to write code! Sometimes I think I’ll go back and fill in the gaps in my computer science knowledge - but if I do it will be because I want to, and not because I need to.

How to start

Get a Mac

Now this is controversial but I don’t care. If you can afford it, I absolutely recommend that you buy a Mac and leave windows behind (at least while you get started). Here’s why:

  • Most programming tools are built around an operating system called Linux (based on an older one called Unix). Macs are also based around Linux. Windows is completely different. When you read the documentation for the tools you’re using, you’ll find that the authors will generally assume you’re on a Linux-like system. Sometimes there will be instructions for windows, but often there won’t - or they’ll be out of date.

  • As a beginner you’re going to get stuck, and error messages are going to rain down on you. You’re going to Google these errors and you’ll find more matches for Mac-type errors. And more importantly, the solutions to these problems will be better and more up-to-date.

  • If you’re interesting in making iPhone or iPad apps then you can only do this on a Mac.

  • If you’re building websites then your Mac is very similar to what you’ll use on a web server when you come to publish your site.

If you’re stuck on a Windows PC then install a different operating system called Ubuntu. You can use both at the same time. Ubuntu is a flavor of linux and you’ll have almost the same experience as Mac developers (in fact learning Ubuntu is very helpful anyway). Don’t even try to learn to program in Windows.

Your initial _stack_

A stack is what we call the collection of programming languages, tools and frameworks that we use. The term stack makes sense because these tools tend to be built on top of one another.

You’re lucky. In 2016 it looks like learning one stack is going to enable you to build pretty much anything for the next few years. That stack is:

  • HTML
  • CSS
  • Javascript

These three technologies are primarily for websites but increasingly you can use them to write all other types of software (apps, programs, games).

HTML

HTML is the language used for web pages. If you ‘View source’ on this page you’ll find I wrote it in HTML. It’s a fundamental building block, but it’s also very, very easy. Writing HTML is a great introduction to writing code. It’s not very interactive but that’s fine because the Javascript part of your stack will take of that perfectly. Learn HTML. It’ll take you a couple of days at most.

CSS

When you’ve done HTML, you’ll notice it looks very bland. CSS is the language that describes how HTML should look. What color things should be, what size etc. Just get familiar with the basics of CSS - you’ll get the rest as you go along.

Javascript

This is a proper programming language. It’s easy enough to get started, yet powerful enough to build the biggest websites on the internet. Instagram and Facebook are both heavily driven by Javascript.

Javascript initially was designed for use on webpages to add little bits of interactivity (a popup, or some little animation). But in the past few years it’s had something of a renaissance and is popular and likely to remain so. You can learn Javascript to build almost anything you can think of. Games included.

(Don’t confuse Javascript with Java. They are completely different languages with no overlap. Like horses and seahorses.)

How to learn

Use a text editor

Do not use an IDE. Uninstall Dreamweaver right fucking now. Code is text, learn to write text. Do you think JK Rowling writes Harry Potter using predictive text? Fuck no. So don’t even think about using an IDE.

Get a text editor - Atom, Sublime text, Notepad++, Textmate. Take your pick.

A note on editor wars: You’ll find people talk about two text editors for programming: VIM and emacs. These are old-skool editors that are very powerful. Users love them and there’s an almost religious fanaticism for one or the other. But these editors are way too complex for beginners - don’t waste your time. By all means come to them later and see if they work for you.

Read, type, repeat

The best way to learn is to type out example code. I learned programming by typing out line after line of BASIC code from printed magazines into a BBC Microcomputer in 1995. Copy and paste literally wasn’t an option then.

You need to actually type the code out. Don’t paste it. It will improve your typing and get you used to looking at code. You’ll make typing mistakes - and that’s great! You’ll have to find these mistakes and fix them (using the error messages you get.) And guess what? You’ll make these typing mistakes for the rest of your programming life so the sooner you learn to fix them, the better.

If you’re reading tutorials, open the window next to your editor and type. If you’re watching videos then pause the video and type what the presenter types.

I can’t emphasise this enough - do not copy and paste.

Explore

When you’ve followed an example, and it’s working, then get curious. Change the colors, change the messages. Fiddle around. If you break it, try to figure out why.

Where to learn

There are a huge number of completely free resources out there for beginners. Everyone learns differently. Some people want videos, others want websites with written tutorials, others want a paper book.

Sometimes you’ll try a course, get nowhere, and then come back to it in a few months and it all clicks together.

What I suggest is just googling around and finding things that look interesting to you and trying them. If it’s not making sense then move onto something else. That said, here are a few resources that are widely recognised as good places to start:

Some useful tools

  • Codepen is a playground where you can write HTML, Javascript and CSS instantly with just a browser. It’s a great way to do simple examples.

A note on tools

As I write this in Spring 2016 there’s a lot of fragmentation among developers about which tools to use for their code. Everyone agrees on Javascript, HTML and CSS, but we’re just not sure of the most efficient way to put them together - there are many options and they all work. You don’t need to worry about this for now - it’s something that only matters when you start making complex applications. To me it seems that a tool called Webpack has the most momentum. If you’re confused then take solace in the fact that we all are too! But as I said, don’t worry about it. By the time you get to this stage you’ll have your own opinions and preferences and you can make your own choices.

And finally

If programming is for you then you’ll know it fairly quickly. You should enjoy it and get satisfaction from solving problems and a buzz when things ‘click’. It might not be for you - and that’s ok.

But if it is, and you love it, then you’re in for a treat. I don’t think there’s another career which offers the flexibility and rewards of development. You can work in a huge glass building for Google, a windowless basement for some publishing house, at home (for yourself, for random clients, for a long-term client, or for an employer). You can travel, freelance. Go to conferences and meet loads of other developers - or never meet another developer in your life. Hang out on forums. Build your business, help other people to build theirs. Make games with your kids. Program robots.

I was going to write this in a Facebook message to a friend of a friend but I thought I’d just post it here. It’s a stream of consciousness.

Twitter's opportunity

on 2 February 2016

I’m sure there’s lots of opportunity for Twitter. Real-time is its current strength. Here’s what I see:

Twitter is for connecting with people you don’t know in real life. But discovering, commenting and creating content on Twitter is far from good. It has seriously user experience problems.

Facebook lets people connect with their friends and family. Strangers aren’t welcome. It’s a personal space. Using Facebook is an outstanding experience. The interface and design encourages content consumption, interaction and creation. Liking, sharing and reading are all very high.

LinkedIn is oriented around work. Bullshit is high here, but connecting with strangers is between Facebook and Twitter on the acceptability scale. Everyone has an agenda.

LinkedIn is never going to become more personal. It’s entire userbase is focused around business.

Facebook has tried (with its mysterious ‘Follow’ option) to become less personal, but I’d argue it’s failed and will struggle to do so.

Twitter has the chance to be Facebook for people you don’t know (which is, by definition, most people). It just needs to sort out its UI so that it’s as inviting to browse and share as Facebook. It’s possible that they already see this with the change from ‘Favoriting’ to ‘Liking’ of Tweets, and the rumoured move to long-form content.

My focus at Twitter would be to move away from cliquey bullshit like Tweetstorms, .@ mentions, shortened URLs and the 140 character limit. I’d be heading towards thumbnail previews of links, inline comments, and a clear, untechnical user interface.

The Essays of Warren Buffett

on 24 January 2016

Every year since 1978 Warren Buffet has penned a letter to shareholders in Berkshire Hathaway, his investment vehicle and conglomerate. These letters go far beyond the statutory requirements of a Chairman’s Report, and set out the philosophies and strategies of Buffett and his longtime business partner Charlie Munger.

I’ve just finished reading The Essays of Warren Buffett; a collection of excerpts from the letters, rearranged into topics and lightly abridged in places.

I’m not enormously familiar with Buffett. His business interests are highly US-centric, and in fact I had to research some of the businesses mentioned in the book. He holds stakes in some international brands (American Express, Coca Cola, IBM, and Heinz being the most recognisable) but for me the more interesting areas are the operating companies that are 100% owned by Berkshire. These include:

  • Clayton Homes, a manufacturer of pre-fab homes (I guess trailer parks)
  • GEICO, an insurer
  • General Re, a reinsurer
  • The Buffalo News, a local newspaper and online publisher
  • NetJets, a fractional ownership business for private jets.
  • See’s Candys, a chocolate and confectionary brand.
  • Fruit of the Loom, a clothing manufacturer that supplies primarily workwear.
  • And dozens of others.

With the exception of NetJets I’d never heard of any of these businesses.

In any event, Buffett is well known for his soundbites and quotes (at least one of which I had printed on my business card at one time.) He’s also a skilled writer, with a unique style and a sharp wit. Some of these essays are highly technical (I skipped Federal Taxation…)

Making investments

Buffet repeats almost verbatim in most chapters his approach to making investments. He looks for large businesses with understandable, enduring and mouth-watering economics that are run by able and shareholder-oriented managements. He seeks to buy outstanding businesses at a sensible price, rather than mediocre businesses at a bargain price. Having spent 20 years buying ‘bargain’ businesses, Buffett discovered that “making silk purses out of silk is the best we can do; with sow’s ears, we fail.”

Having found these outstanding businesses Berkshire’s intention is to hold them forever.

Buffett is generally against diversification in equities for a know-something investor, as opposed to a know-nothing investor. He advocates finding and holding five to ten sensibly priced companies with long-term competitive advantages.

In many industries, Charlie and I can’t determine whether we are dealing with a “pet rock” or a “Barbie.” We’ll stick instead with the easy cases.

Fluctuating prices

Given the above criteria and the intent to buy into a business as a long-term investment, rather than speculation, Buffett isn’t afraid of declining stock prices.

If you plan to eat hamburgers throughout your life and are not a cattle producer, should you wish for higher or lower prices for beef? Likewise, if you are going to buy a car from time to time but are not an auto manufacturer, should you prefer higher or lower car prices?

[…] If you expect to be a net saver during the next five years, should you hope for a higher or lower stock market during that period?

I particularly like this point, and it is equally applicable to house prices.

On goodwill

See’s Candies is prominently featured in the book - Charlie Munger has said it was the first ‘good’ business that Berkshire bought. Buffett rails against the accounting treatment of goodwill, and contrasts it with the increasingly value of goodwill resulting from a well-run company in the ‘real world.’

It’s hard to think what else I learned from this book. Much of it was too technical for bed-time reading. But I greatly enjoyed the general writing, and particularly the storytelling.

Buy it or build it: Etsy

on 19 January 2016

I’ve been contemplating whether Amazon or eBay would acquire Etsy given that it’s now trading at around a $1bn valuation. This is down 75% from the $4bn it was was valued at when it floated last year.

I’m going to break out a few numbers and take a run at calculating whether Amazon, for an easy example, could just build a new Etsy rather than buy the one that’s there.

Technical

Building the Etsy site and infrastructure is going to take a team of 20 outstanding developers less than a year. Not many top developers would turn down $200k per year for a greenfield project for Amazon. We’ll add $50k to fully load this. So let’s say that’s $5m in salaries. Add another $2m for some product managers and recruiters.

And let’s give everyone a 100% salary bonus if they get this thing shipped by year end. So we’re at $14m for staffing.

Server costs are basically zero. We own AWS already but even if we didn’t, I doubt we could push beyond $1m in the first year (especially given we take a year to get a product up.)

iOS and Android apps - $1m each is a huge budget for outsourcing them. So $2m for both apps.

(I’ll say right now that I’d agree a fixed price to clone Etsy’s site for $2m and I’d have it done in six months.)

So a total for technical of $15m. Let’s double it for no real reason: $30m for a team of c.25 top people.

Office space

We’ll need an office. SF rents are the most expensive in the country at $80 sq ft so let’s base ourselves there. Our team is going to need some luxury digs so let’s give everyone 300 sq ft of desk space. We’ll need 7,500 sq ft of office space, doubled to make room for our ping-pong, fussball tables, Lego kanban boards and more. 15,000 sq ft @ $80 = $1.2m annual rent.

We’ll take a five year lease and pay it up front: $6m. Plus an outrageous $4m of agents’ and legal fees, and fit-out costs. $10m

Business development

We’re going to need to absolutely nail our sales. We need to attract both sellers and buyers - let’s take them separately:

Sellers

At its IPO, Etsy claimed 1.4m active sellers. Rather than debate the merits of this number, we’ll just take it at face value. (Their definition: An active seller is an Etsy seller who has incurred at least one charge from us in the last 12 months.)

Total sales through the platform were $2bn ($1,400 per active seller, per year).

To launch our new marketplace we want Etsy’s biggest sellers to join. So let’s apply the 80/20 principle and pursue the top 20% of their sellers, that’s 280,000 sellers. We’ll just give them all $1,000 in cash for signing up: an irresistible offer. And to get the word out we’ll hire 5 home-based salespeople in every state to pound the streets and visit every craft show and market. We can get these guys for under $100k, including a car. So that’s a salesforce of 250 people at an annual cost of $25m.

So our sales costs for attracting these sellers will be $25m ongoing and an exceptional $280m in cash payments to get them onboard. We’ve got six months to build this sales team while the product team get something built.

Marketing to buyers

We also need buyers. That means building a brand for the general public. So we need to go insane on the advertising.

We’ll pump $50m into developing a brand.

I was surprised to find that 36 US companies spend over $1bn annually on advertising. We’ll be competing with McDonalds, Apple (a recent entrant), and Coca Cola. Going the traditional route is probably not for us but let’s put $200m aside for general TV and print advertising. We need to think a little outside the box.

Some ideas: It’s probably going to work out cheaper to just buy the top 25 craft magazines at $5m each rather than pay for their advertising space. So let’s do that. $125m spent - we’re now the biggest publisher of craft magazines. Some of these mags might even be profitable! But let’s just assume we have to write the whole sum off after a year, and give everything to the staff for $1.

So, at the end of a year, we’ve spent:

  • $30m on building the site.
  • $10m on office space. (prepaid for five years)
  • $25m on a sales team
  • $280m in cash given away to get sellers on board
  • $50m on brand identity and development.
  • $200m on TV and print advertising.
  • $125m on the top 25 craft magazines in the US

A sum total of: $970m

Basically it’s going to come down to a cointoss.

Some notes: Etsy made a loss of $15m last year, so we don’t even have to consider that we’re losing profits by taking a year to do this ourselves - we’re actually saving money!

It’s clear that the value in Etsy is the brand. I don’t know how far into the minds of Americans our $375m annual marketing budget is going to take us.

Etsy’s current annual operating costs are c. $140m

The impending tech slowdown

on 17 January 2016

There’s been talk of a bubble for at least two years, and so far there’s little sign of it bursting (or perhaps even existing). That said, it feels like a few unrelated circumstances are aligning and some sort of downturn this year is now likely.

Public market sentiment

Almost every startup that floated in the past two years is massively down on its IPO price.

Union Square Ventures’ is one of the best regarded funds. Their entire post-IPO portfolio is down over 50%. This worries me.

  • Etsy is down 75% from its float price,
  • Twitter is down 50%.
  • Zynga is down 75% from float.
  • Lending Club is down nearly 80% from float.

And Andreessen Horowitz:

  • Box. Down 65%
  • Groupon. Down almost 90% from float. (although it traded this low in late 2012 before recovering somewhat).

Kleiner Perkins:

  • Square. Down 17% from IPO two months ago. Not as bad as I expected.
  • Teladoc. Down 40% from float.
  • Invuity. Down 50% from floating less than a year ago.
  • Chegg. Down 30%

(I’ve skipped quite a few for Kleiner Perkins because I’d never heard of them…so this might not be representative)

Others recently IPOed:

  • Shopify. Down 30%.
  • Atlassian. Marginally down 10% on its float last month.
  • GoPro. Down 70% from float.
  • Fitbit. Down 48% from float.
  • New Relic. Performing (relatively) well, down around 12% after a stable year on the market.

Having actually researched these prices it’s clearly a bloodbath at the moment. No-one is heading into the public markets in these conditions. An investor looking at these numbers and comparing them with late-stage private market valuations is going to suspect that VCs have been offloading turds while hanging onto the diamonds. I doubt this is the case.

Interest rates are rising

Large amounts of capital have been put into tech startups during this recent period of near-zero interest rates. This is obvious and easily measured for late-stage private companies - those which would, in a normal environment, be pushed into the public markets by the amount of capital they need.

Now that rates are moving upwards this capital will likely dry up - and very quickly if sentiment turns against techs.

At the same time I believe a larger effect has been from the smaller amounts of seed-stage capital deployed into total dead-end ideas (basically 75% of Product Hunt’s front page), tying up anything from one to ten people, and increasing competition for talent. It’s at this end of the market that funding will disappear the quickest and have the most immediate effect. These companies generate zero revenue and have no cushion or scope for downsizing.

Paul Graham has stepped away from YC, the industry’s flagship incubator, and I think this might represent their high-watermark for a few years. But equally the reduction in early-stage funding may return to a situation where startups seek out YC because they need the money, and not because of the prestige and network. I think a lot of lower tier YC-clones will close or hibernate for a while.

Mobile is mature

The mobile operating systems are now clearly either Android or iOS. Blackberry, HP, and Samsung are dead on the software side.

The goldrush on app development is coming to an end. 10 of the 12 top mobile apps in the US are owned by Apple, Facebook and Google.

Gaming on mobile has failed to move beyond ephemeral puzzlers with a simple game mechanic - time-wasters rather than immersive experiences. In-app purchases are widely recognised for the poor value they offer. There will continue to be break-out successes but a lot of the money that flowed into app development, and into marketing and monetizing those apps, will evaporate. Small companies will shut down, large companies will take their write-offs and close divisions. The slack will not be taken up by VR immediately.

Advertising

Anecdotally I see a small drop in CPM rates for adspace on my own properties. Adblocking might become more mainstream. Big publishers with high costs are being greedy with display advertising and pissing off their audiences. I suspect we might see a viscious circle come into play where ad revenue drops, leading to more audacious popups, leading to more ad blocking.

There are also theories that considerable advertising spend is from startups advertising on other startups, and that this pyramid type situation will collapse. The most aggressive advertisers in the sector (Rackspace, Media Temple, InVision and New Relic for example) will all see material drops in their businesses and consequent reductions in spend. None of them is a profit powerhouse (to my knowledge).

Costs

The costs of technology and servers are at rock bottom (effectively zero if managed correctly). But the costs of staff are beyond absurd. Office space and hotels in San Francisco are at record levels - the highest in the US.

The good news

Awesome things are still being built and I think a slowdown is going to trim some fat off the industry. If anything it will increase innovation and we’ll see the huge numbers of bullshitters go back to peddling timeshares or spreadbets. Good startups should hopefully be more recogniseable.

I hope any downturn will free up talent from working on crap, and lower the costs of building products. The fully-loaded cost of a good developer is an absolute minimum of $100k per year in most places in the world now (cheap offshore talent is a myth in my experience.)

Apple, Google, Amazon and particularly Facebook, continue to outperform and I think they might be strong buys if they are pulled down by the rest of the market.

I predict huge growth from Facebook. Their advertising business is still in its infancy. They are attracting top developer talent, and their reputation is strong both among developers and the general public. Facebook have made very few mistakes over their ten years - Facebook Credits and Gifts are two that come to mind. These are petty cash compared to Google - Glass, Hotpot, Wave, Plus, Motorola, those barges…

Some strong companies might come into the public markets this year - Dropbox, Airbnb, Uber. This is probably the make-or-break situation - if they are well-received and sensibly priced then things could go well. But Uber in particular needs capital to sustain itself and may be forced into the market.

Virtual reality might be the next big thing. I don’t know. It will probably be a big thing for a few years and take the pressure off the collapse in mobile apps.

So that’s the end of my rambling thoughts with no real conclusion. I’m far from gloomy.

I own a small amount of stock in Facebook and Twitter.

Newer posts Older posts