This week I started working on a new project. Like all projects,
especially existing ones, it can be a little overwhelming in the
The emotional side of the brain...
Some projects I'm even intimidated. This new project was one that I
was particularly impressed with. It was using a lot of newer
technologies I had not used (luckily I was mostly aware enough to know
'of' them). It had tons of models, used all kinds of services, a new
database I actually hadn't heard of, multiple API's I had never used,
When I get on projects like this, thoughts creep in to my head, "the
previous developers are way more advanced that I am...what if I can't
make it work, my client will think I'm not qualified when it takes me
forever to figure things out." The list goes on.
The logical side??
However, when I think back to projects that have come up like this in
the past, I look back and remember how much fun they were to "figure
out". I see how much I learned and developed as a programmer. I say to
myself, "you know, I always figure things out"...there's never been a
time when I just gave up and couldn't complete a job.
Also I'm not sure why I do this (and I'm hope I'm not the only one), but
I put too much pressure on myself and expect to be able to just look at
github repo and know exactly how it all works. I'm supposed to within a
few hours of tinkering, figure out what took other developers years to
build. Why do we do that? If start a new book, I don't expect to know
what happens at the end. It takes time to become familiar with the
business logic, the stories, flow, the methods the previous developers
used, etc. The tests and code should tell a story, but you have to read
the story to understand it and make contributions to it.
So I conclude...
A programmer's job is to solve problems and figure things out. That
doesn't mean you're not going to feel overwhelmed and intimidated at
times. If you don't, you're probably not challenging yourself enough. I
encourage you like I encourage myself, embrace the challenge, be
thankful for the opportunity to level up and remember, you're a hacker,
you'll figure it out!
Expectations are a strange thing. Maybe because they're relative and
hard to guess for other people.
Recently my family and I headed off for our annual summer vacation.
You'll probably agree with me that check in times for rentals are
getting absurd. Check ins used to be around 1-2p, but then moved to 3,
then 4 and this year our check in was at 5p! The day is nearly over.
However, many times, especially when dealing with private owners, you
can request and get an early check in time. We'd done this the previous
year with the same owner and were told our condo should be ready around
3p. Well, we arrived around 3:30 and the room wasn't ready. "Should be
ready shortly, we'll send you a text." Shouldn't be long we expect, so
we decided to head to the grocery and get some things we needed for the
week. We got back around 4:30. Still no text. We call again. "Nope,
still not ready, we'll send you a text." By this time, my 3 and 7 year
old boys are going crazy after being up since 6a, driving in the car for
7hrs and expecting to be in the pool way before this. Our groceries
are wasting away and we're hanging out in a parking deck for our
vacation. 5:10p still no text (10 minutes after the check in time).
I was getting cranky myself and I began thinking about expectations. If
we'd only known we couldn't get into the room until after 5, we could
have planned to do something entertaining or just arrived later.
Everything would have been cool and no one would be at the end of their
Expecting one thing and getting something else sucks. It especially
sucks when this happens repeatedly.
I think about this a lot in business. A business always wants to please
it's customers, so they typically over promise and under deliver. A
previous boss was an exception to this. He would tell customers if an
order was placed by 1p it would be shipped the same day, but he told his
staff that orders placed by 4p should be shipped the same day. His motto
was under promise and over deliver.
That's what I strive for in consulting. It's so easy and enticing to
tell a customer you'll have their work done for them by next week when
in reality it's going to be longer. It's really difficult to get it
right and I've messed it up plenty. For one, it's really hard to know
when you'll have the time to work on something. Development work is
never turnkey. There are always customizations and different
implementation for every business scenario. Secondly, you don't want to
seem slow. At least, I want to please the customer.
But, I always go back to my vacation and think, if they'd just told us
it'd be a little after 5 until we could get in, we would have been much
happier because we got what we expected.
Over the last couple of years, I've gotten better about under promising
and over delivering. I'm sure I still miss my client's expectations at
times, but I hope to continue to improve the experience daily.
Assembly Made: What is it?
A month or so ago I found out about a cool new platform called Assembly
Made. The idea is pretty simple and works like this: Someone has an
idea for a business and they post it to Assembly Made. The idea gains
traction and popularity by people discussing the business plan, market,
potential, customers, etc. Then, if there's enough interest, the
community starts to develop it. Almost anyone can contribute. Apps need
all sorts of skills to be built: copyrighting, photography, design,
code, ops, etc. A core team is established to provide direction and
create tasks for the project. Each task is valued a certain amount of
"coins" and when someone completes the task, they are awarded the
coins. The amount of coins you have for a project determine your equity
stake in the business and also determine your share in the profit
sharing system. Assembly keeps 5% of the equity and the project owner is
reserved 5% of the equity. The rest is earned by the contributors.
This is really an interesting idea and I can't wait to see how it will
play out as new products are built and launched. No one knows how
successful (or not) this concept of crowd sourcing the development of
software will be. As with any business, especially a startup, many of
these businesses could fail and never get a single customer. So is it
worth your time? I think so and here's why.
Working with great people
There are some great people working on Assembly products. If you've
never worked on a team or just want to get some experience with the
experienced, then this is an easy way to to do it.
Whenever you work with other people, especially with others as good or
better than your own skill level, then you're learning shoots through
the roof. I always learn so much working others.
It's easy to get started
It's really easy to get started. The Assembly staff is always around to
answer questions, hop on chat, screenshare, pair, help you get setup
etc. They also do a good job of breaking down tasks so they're small
enough that anyone can get started. Example: anyone can edit copy,
right? And once you get started, the next tasks are much easier.
Working with actual projects
As a consultant, most of my experience is with building products for
clients. I love open source and think it's very important to contribute
and give back, but it's never been easy for me and probably others too.
Lots of open source projects are tools, libraries, gems, engines, etc
that are a lot more complicated than 90% of a typical rails app. So I
found working with a actual product (which, in my observation, is what
the majority of Assembly projects are) more up my alley.
Work at your own pace / commitment level
Because the tasks are broken down in to small stories, it's really easy
to work a little or a lot. Some weeks I have more time than others and
can spend a whole day working on Assembly. Other weeks I only have a few
hours and some weeks, I have no time at all. When you decide to work on
a task, there's a button that click "work on this task" that reserves it
so others know you're working on it. Only reserve a task when you're
ready to work on it and can get it done in a reasonable time, because
there could be others that are able and willing to get it done too.
Boost your portfolio
If you're a creative, your portfolio is crucial in helping you win
projects, clients, or jobs. Adding projects you've worked on from
Assembly will likely bring the status and allure of your portfolio up.
Clients will be impressed with the work that you and you team have
produced and may be more willing to hire you for your next big project.
All projects are open sourced, so it's easy to share your contributions.
Connections / Networking
Already mentioned is working with others to improve your skills, but
working with others will also lead to new relationships, friendships,
connections and networking opportunities. If you're a developer, a
designer may notice your work and want to work with you on their next
project. An entrepreneur may notice your feedback on discussions and
want to hire you for their next project. A core team member may
recommend you for a job within their company. Assembly is a great place
to meet and work with other creatives like you.
In addition to all of the "side" benefits, I do like the core product.
There's a simple profit sharing plan, contributions are automatically
calculated when commits are merged in, and it's a nice way to invest in
startups and take ownership of a business. Hopefully, the real reason
you decide to work on a project is because you believe in the product
and feel it will be profitable while solving a problem. However, these
other benefits are totally valuable in their own right.
A few weeks ago I joined a friend from Atlanta, Patrick Van Stee
(who works for Assembly) and we drove to Greenville, SC to join up with
Matthew Smith to work on one of the Assembly projects called
Helpful (now you know where the photo above came from :-) Besides
being a fun "work" trip, it was a great opportunity to work with Patrick
(who is a talented developer) and Matthew (a well known and talented
designer). Had it not been for Assembly, I probably would have never
gotten the chance.
Go checkout Assembly and find something to work on!
I recently spoke at Tech Talent South which is a school that
teaches an intensive course on Ruby on Rails. After meeting the
students, I learned that most in this particuar class were not only new
to rails, but were mostly new to the tech industry.
My presentation was about independent consulting and how I make a living
doing it. I shared a lot of things I was a little uncomfortable sharing
(income, struggles, advantages, disadvantages, etc). I wanted to be
honest, open, and helpful.
I'm not quite sure why I was chosen to speak, but my reasoning for going
was I wanted to do what I could to help others...just as so many have
helped me in my career. During the presentation one of the topics I
spoke about was generosity and giving back and how awesome our industry
is at sharing and helping others.
I've never seen another industry that shares like we do. Our sharing
through open source (Rails), blogging, (Rails Tips), teaching
(Rails Tutorial), willingness to help one another with a
troubling issue (Pair With Me), conference speakers (Ben
Orenstein), screencasts (RailsCasts), sponsors (Mailchimp),
workshops (LessMoney), organizations (RailsGirls) and more.
Startup incubators like Atlanta Tech Village and FourAthens
continually echo the idea of paying it forward. These are just a very
small set of examples that are close to me. There are tons and tons
When I first got into this industry, I always wondered why people would
share something so valuable. Why would people give away their secrets,
knowledge, and experience for others to profit?
I recently read a blog post by Seth Godin about Generosity. It may be
the best way to answer the question. It was so short and sweet, I can
quote it here:
The generosity boomerang
Here's conventional wisdom:
Success makes you happy. Happiness permits you to be generous.
In fact, it actually works like this:
Generosity makes you happy. Happy people are more likely to be
I really believe that is how it is within technology circles, especially
on the creative side of things. Technology people are generous, they are
happy and they are successful.
I'm reminded of an acronym we have in Christianity: JOY. It goes like
this...The path to Joy is focusing on
I expect other religions have a parallel idea. Whichever way you look at
it, there's a connection between helping others, happiness, and success.
What are you waiting for...Go be generous!
I just recently attended Grok. I'm not a big conference goer, but I've
attended LessConf several times and a few ruby conferences.
Sometimes I always wonder why people go to conferences and how they
justify the expense. As an independent consultant, I'm always trying to
figure if my money and time was well spent. I once heard another
consultant say "how can you not afford to attend conferences."
They're not cheap. Grok was inexpensive as far as conferences go.
Here's my expense summary:
Ticket: $ 200
Hotel: $ 600
Gas: $ 100
Dining: $ 150
Misc: $ 50
Lost Work: $1500 # 2 days x 6hrs day billing @ 125hr
Now this is a real expense for me. My bank account will be $2600 lower
had I not gone to this conference. That's a small marketing expense for
GitHub or Pardot, but a much larger % of my bottom line. That's a nice
MBP or almost a new bike! So was it worth it? I don't know the answer to
that question so I want list some reasons why I go.
I work from home and don't typically get to hang out with people who do
creative technology stuff like I do. Spending time with them and getting
to chat about the latest cool thing is awesome.
It's fun to travel.
Conferences also do cool things like schedule us to drive high
You learn lots of things a conferences. It's not always technical. It
could be things about teamwork, process, sales, or all sorts of stuff.
You get to talk about what everyone's talking about and be a part of the
Grok is especially good at this. They have 10/20's where you get to
split up into groups and have relevant meaningful discussions.
The people has to be one of the biggest reasons you go to a conference.
You get to reacquaint with friends and people you've met from other
conferences. You get to meet heroes, people that inspire you, people
you've been following on twitter for years, but never met.
Some of the best experiences you have are meeting people that you didn't
know existed. I love meeting new and interesting people and it always
makes me a little sad when I see photos of photos after the conference
of people I didn't even get the chance to meet.
4. Business / Networking
There is a business reason for me to going. My hope is that by meeting
people and making friends and connections, I'll be in a position
someday to help them solve a problem or build something really great. I
hope that I can be at least close enough in people's circles that if
they have a need for web / rails developer, they might remember that
nice good looking (ok that's a stretch :-) guy they met and consider me.
There's usually a keynote speaker or two there by design to deliver
inspiration. At Grok this year, for me, it was Kristian Anderson.
He talked about the misguidance of following you passion. My take on it
was while you should do something you enjoy, you shouldn't do it just
because you enjoy it. No matter how much I want to be a pro cyclist, it
isn't going to happen. You have to do what you're built for and also
what you're willing to suffer (ie what real passion means) for.
This hit home for me because as a designer and developer, I struggle
with the thought that I should strive to be great at one or the other.
But I know I can never be the next Matthew Smith or Aaron Patterson, but
put the two together and mix in a little business smarts and I
might have something unique to offer.
You can always find little takeaways like that to bolster your confidence
and help you focus on what you're willing to suffer for.
6. Getaway with Wife
Most conferences I go to my wife comes with me and my kids do not. It's
a great opportunity to spend a few days (my kids are young so we don't
stay gone long) away. She doesn't usually go to the conference, but
she'll come with me to the dinners and hangouts.
Not all bliss
Despite all of the positives, I'd be remiss if I didn't say there are
hurtles as well. Besides the financial cost, mixing and mingling can
be extremely difficult for some. I figure I fit more in the "outgoing"
category and I still have a ton of insecurities. This is no reflection
on Grok or any other tech conference. In my experience, they're always
fantastic. The problem is our fears.
Logically thinking, I believe I'm a cool guy, have a pretty wife, a
successful business, am friendly, and am experienced at what I do, but
emotionally, I have a ton of insecurities at conferences. I worry that
I won't be cool enough, or that I people won't like me. I worry that
people will not want to talk with me if I walk up to them, or that they
wished they'd sat beside someone else. I stress about why people don't
follow me back on twitter or ask me to dinner too. I wonder why people
don't take photos with me or mention me in their feed.
I was expressing these to my wife one night and she said, most
of the others have them too. I suppose she's right. Regardless, it's just
a part of being human, putting yourself out there and being willing to
make yourself venerable. Without doing that, you'd never get to enjoy all
of the positive experiences and meet so many cool people. So if you feel
a little like I do, just remember, others feel the same way.
All in all it's a great experience. Grok was exceptional and I already
know I'll be back next year. Hopefully the relationships I rekindled and
started will evolve further. Hopefully several cool projects will come
my way via a referral from a fellow groker!
So, my final conclusion is: conferences are worth it. You can't go to
them all, but selectively choose at least several a year to attend and
it'll be worth your trip!
Follow me on twitter