Yesterday I had the sincere schadenfreude to explain the concept of a ‘brogrammer’ to my boyfriend, a software engineer. He told me he didn’t think he’d ever met a brogrammer. I’m not sure I have either – I have heard people talk about “slinging code” and read detailed descriptions of the hard-working, hard-partying, hard-assery of Valley start-ups. I suppose, read one way, it’s supposed to be a recruitment driver: eager young Turks, chomping at the bit to change the world will feel a kinship with this kind of ethos – and nerds will get to feel cool.
I find myself increasingly – disillusioned isn’t the word, annoyed is – annoyed with the rising Silicon Valley cool factor. I’ve written before that the problem with the advertising industry is that it’s full of people who want to be cool, and that cool people can’t, almost by definition, be nerds because nerds are passionate to the point of absurdity about something, and cool kids must be dispassionate at all costs. So I’ve got good news, everybody! The cool kids are moving to the Valley.
I’ve known lots of cool kids. They take great pleasure in pointing out the hypocrisy of others, while almost never noticing it in themselves. When pointed out to them, they take it in stride as all part of the lifestyle of cool. They talk a lot about making things, when in point of fact, they rarely make a thing – they ‘brainstorm’ and ‘ideate’ and ‘direct’… But because the thing itself is rarely produced by them, there is a tremulous fault line of doubt rattling under all the coolness. This is why we argue, in the ad business, about who owns the ‘idea’.
It’s probably also why, in start-up culture, we’re moving from an ethos of “he who slings the code, builds the start-up” to something more personality driven – “he who has failed visibly before and assembles rock star dev teams, builds the start-up”. We’re shifting away, in start-up culture (or at least as tech-blog press would have it) from a culture of makers to a culture of entitled-by-capital power hoarders.
Some are even threatening that the Valley will turn Republican.
Which is a tidy segue to something I’ve been thinking a lot about over the past month or two. I’ve been ‘building’ the site for my business. But I choke slightly on the word ‘build’ every time I say it because I do not take myself seriously as a coder, and I’m certainly no developer or software engineer. It’s not merely a case of (perhaps womanly) self-deprecation – saying I built this site ‘from scratch’ is like saying I make dresses from ‘scratch’. I don’t weave silk on a loom, I don’t design dresses from my imagination; I buy fabric and notions, and I assemble them using patterns someone else designed. Coding, as it turns out, is a lot like sewing.
I ‘built’ that
I’ve been thinking a lot about writing a post describing my process for building the site for my company, The Difference Engine. But there were two big obstacles to writing that post: the first was that the features I think are the best are the features you would either take the most for granted, or would not even be visible to you.
And then there’s the reality of coding in developer frameworks like Ruby on Rails. I think Noah Brier is where I heard it said that there is nothing more widely available on the internet (except possibly porn) than information about the internet. And so googling is the most oft-used tool in an aspiring, or even a practicing, coder’s toolkit. Want to build a blog using Rails? Google it. Want to truncate posts on a front page and link to the full post? Google it. What’s the ideal column width? Google it. Someone will know the answer – whether it’s stackoverflow or github or any countless number of google groups and dev discussion boards.
But what Google gives you is access to this amazing treasure trove of ideas, solutions, tutorials, and upgrades that come from thousands of other expert and novice developers, all asking questions and helping each other out.
‘You didn’t build that’
Obama got a lot of guff for reminding business owners who depend on trains, highways, municipal water supplies, mass transit, public education, electricity, or other public infrastructure that while they may have taken the admirable and needed leap to start the business, they didn’t build all the infrastructure that makes starting a business in this country so comparatively easy. There’s a reason we use the phrase ‘hang out a shingle’: that is all you have to do, a lot of the time, to get started as a business – just say you that you have.
And I should know. I told a room full of people in March at SXSW that I’d started a business; a month and a half later someone in that room became my business’s first client. All I had was a URL and a set of business cards. It’s easy to start believing your own hype when other people seem to. [It’d be tempting to say that I made all that happen myself, but the truth is, I had access to a bully pulpit because Edward Boches invited me to be on a panel which meant I didn’t have to pay to get in to SXSWi, and Tim Malbon recommended me to Katie Dreke to put on an event with Adidas, so most of my expenses were paid. Free rides and good will can really take you places.]
So it’s now six months later, and I finally ‘finished’ a website for the business. One I assembled myself. But.
I didn’t build that.
- Matz invented Ruby, which is the foundational language on which the Ruby on Rails framework was developed. Apple’s engineers decided to bundle Ruby into the operating system – you don’t even really have to install it on a Mac. dhh invented Ruby on Rails, which is the framework I used to build the site.
- A whole bunch of guys authored the RailsGuides, which hosts the Getting Started guide, which helped me assemble the basic structure of the blogging system on the site. Ryan Bates produces (prolifically!) RailsCasts, which showed me how to implement sign-in and authentication systems to prevent any old person from blogging on my blahg.
- Alex and Art created Redactor.js, the WYSIWYG editor I use to edit the posts in my blog.The folks at Woo Themes created Flexslider, the jQuery slider plugin that powers the carousel of giant headlines on the homepage. John Resig released jQuery, and now Dave Methvin leads the dev team that updates and maintains it.
- PostgreSQL is the database system that powers the blogging architecture, and was developed by a bunch of volunteers in the open source community. Jonas Nicklas forked carrierwave, which enables me to upload files to the blog. Corey Johnson forked mini-magick which helps Ruby talk to ImageMagick, which will allow me to edit images I upload to the blog.
- Heroku is a cloud platform as a service which gives me the environment for hosting the application, but also for live development without pointing domain servers directly at the URL. Basically it gave me a bit of cover to fail a lot over the past year or so without anyone noticing. GitHub is a web-based version control system that allowed me to share my project repos with developers who knew what they were doing, and it’s a treasure trove of other people’s ideas on how to make things work easily in Rails.
- There are some other gems in use in this blog – bcrypt for authentication, json, rspec… Stuart Eccles pointed me at most of these resources, because he’s a Rails developer and an Agilist, and a lovely, lovely boyfriend.
- Plus there’s HTML, and CSS, and countless blog posts on how to style this or that element, and what the difference between a div id and a div style is, and so on. Oli Mathews helped me trouble-shoot a real stumper in my CSS, and also gave me the recipe for his roast veg masterpiece.
- And just tonight I added some social sharing buttons by AddThis (at the suggestion of Heather James).
Most of the sites you see today are not wholly novel – they are remixes of other ideas, recombinations of pieces to create seemingly new wholes. Some of the best apps out there are actually reductive – they’ve taken away a lot of bells and whistles we got super excited about but didn’t really need.
Mobile is My MVP
In 1999 or 2000, I was working in a start-up and we were developing the website for The Goo Goo Dolls. It had Flash animation, and it played a riff from “Iris” as the animation loaded with the homepage. There was lots of useful stuff, too. But on client calls with the band and their manager, we kept hitting enormous walls of frustration – they couldn’t see any of it. We’d tested the site on every version of the few browsers then available, and it always worked. What we hadn’t anticipated was that The Goo Goo Dolls would be on a 28k dial-up while on tour in Germany, and that their ‘browser’ would be AOL.
So when I started to assemble the site for The Difference Engine, I was doing it from the perspective that any choice I made had to look good on my iPhone 4, and load fast enough that I wouldn’t be embarrassed if you loaded it on your mobile browser. I focused on the Rails app code and the essential HTML, and I stayed out of the stylesheet folder entirely. For what seemed like the longest time it was just black text on a white background. I started with the authentication framework – a sign up and log-in screen. When that worked the way I wanted, I asked Rails to generate the scaffold for the blogging system. I edited those features to display posts the way I wanted. Then I asked Rails to set up some static pages for me, so I could do the obligatory creds pages all consultancies must have. It’s amazing how much Rails just anticipates, and how little you have to do to set up the essentials. Which, by the way, is something Avi Flombaum brought to life in a 2 hour intro to Rails class he let me attend, for free, through Rachel Sklar.
When all that was working, I checked it on my mobile devices – yep, still working. Then I layered on some fancy – the Redactor WYSIWYG editor in the post form (which you can’t see because you don’t have a log-in! but trust me, it’s beautiful), Flexslider for the slider on the main page. I chose Flexslider on Josh Schelling’s recommendation because it’s responsive to touch interfaces and works well on mobile devices. When those were working properly, I turned to the question of styling.
I got my fonts from TypeKit. I found some great blog posts about combining web fonts, knowing that Bebas Neue was the font I’d chosen for the logo, and so I paired it with Museo Slab, an internet favorite. Back in the spring, I’d used Adobe’s kuler app to find complementary colors for the site, and used those when I designed business cards I had printed by Moo.com. I designed the cards/logo first in Keynote and then in Pixelmator, on suggestion from web designers I know who tell me they hardly use Photoshop anymore. I used the logos and the fonts and the colors to style the site. I chose a column width (again, on Stuart’s suggestion) that would be both in keeping with what page designers have known for years about the ideal width of a column and with what would be most legible on a mobile device. I decided to eschew too many containers or grids, because they get wonky on mobile devices.
I added some Slideshare and YouTube assets to the site; both of these platforms provide mobile friendly embed code. I added a tag to the phone numbers and email addresses on the site so that you can tap to contact me from any mobile device – and if you’ve got the Skype Click to Call plugin installed in your browser, you can Skype me directly from your desktop, too. Whee!
I decided against hosting comments – the battle against the bots is a losing one, and I find moderating comments to be a bit of a chore, so I took a page from ITV News and opted for social sharing features instead. If you want to share or talk about the ideas on the site, you can do that where you do that – on Twitter and Facebook. Heather suggested AddThis and damned if it didn’t just work. Magical.
I didn’t build that.
“If you were successful, somebody along the line gave you some help. There was a great teacher somewhere in your life. Somebody helped to create this unbelievable American system that we have that allowed you to thrive. Somebody invested in roads and bridges. If you’ve got a business—you didn’t build that. Somebody else made that happen.” – President Barack Obama
It’s not popular with the Ayn Rand/Rand Paul/Paul Ryan set, and evidently it’s not popular with the VCs and Founders who are riding the wave of an economy whose wealthy are awash in cash and looking for places to stick it. But the truth is, if you’ve made anything worthwhile in this country, or on this internet, you have a lot of other people and institutions (some of them independent citizens, some of them foreigners, some even governmental) to thank for creating the infrastructure you built it on.
You have a lot of people you depend on that you will never be able to really repay, people who are not on your payroll, who you don’t know, who aren’t even charging for the solution they spent the intellectual capital to create. Their ‘free’ work allows people like me to build a website I can use to (one hopes) solicit clients, build a business, make some money, hire some people, etc. And the beat goes on.
I’ll add other features as I need them, and those features will come from a tutorial on RailsCasts, or a RailsGuide, or a google search, or a helpful coder on StackOverflow, or a friendly dev at a MeetUp. I will profit from the work of these people in many ways: I will continue to learn from them, be inspired by them, be helped by them, use their expertise and effort to wow my clients and my peers. I will begin to count myself as a member of that community of open source thinkers and makers.
But for now, for my site… let’s not say that I built that. Let’s say instead that we did.