I’d like to say a few things about waste. No, not the obvious kinds of “waste”, too much youtube or twitter or a lunch that was a bit too long — sometimes those are really opportunities for the unconscious mind to work.
Instead I am talking about the things that have the form of work, that look like we are doing something, but don’t actually move us forward. Aristotle might call this work that is accidental, not essential.
For example, I own a small technology company. The essence of our work is finding new business, executing on that business, and doing the things that make people want to work with us. It’s that third category that is dangerous.
I could spend a day — frankly, I could spend a week – goofing around with our website. Looking at promotional items, like pens and calendars. Retooling and reordering business cards, or trying to tweak the website to be just so. All of those things might be good, but do they generate leads? If the answer is no, they are waste — but a sort of sweet waste. Tooling around the website is easy. It doesn’t involve rejection or failure. Working on the website is a seductive time waster.
It’s the same thing in the job hunt. Working on the resume, going to career counselors, paying for a resume touch-up service, a Linkedin touch-up service, reading a “tips for interviews” book – those things are fine, but the essence of getting hired is to find potential employers, arrange interviews, and execute on them.
The main thing, as they say, is to keep the main thing the main thing. Continued »
A new tech industry phrase, The Internet of Things, has been floating around the web for a few months now. The Internet of things is a loose term people are using to describe any number of devices that may or may not currently live in your house. It’s all so vague. Last week, I found myself reading the phrase yet again with no clue about what was actually meant.
I work in an open office at my day gig. After seeing that phrase for the hundredth time, I asked “Has anyone heard of the Internet of Things. Can you please explain to me what that means?” After chuckles and light ribbing for asking questions like their grandparents would ask, I got a few vague answers of “I think it’s a little like this” or “Its kinda like when you have blabla”.
Yeah, still pretty vague.
So, lets explore what The Internet of Things really is.
Just two weeks ago, I was in Portland, Oregon, with my family of five, about to pick up a rental car from Hertz. It was 9:00PM Pacific, about midnight back home; the rental area was nice and empty …
It was still nice and empty forty-five minutes later when we received our vehicle.
It turns out the computer system was down from 1:00AM that morning until 3:00PM that afternoon. During that time, people still returned (and checked out) automobiles, and the technical staff lost them.
That’s right, they lost cars — knowing the car is on the lot, in one of a few hundred places, but not exactly where.
Then things get weird.
“Collaborative tools” is a large bucket. Wikis, multi-edit documents, shared spaces, asynchronous editing, chat tools, video conferencing, terminal multiplexing, and a variety of other options can all be considered “collaborative tools”. The goal is to encourage people to actively work on things together, to make changes in real time, or where asynchronous edits can be versioned so that no information is lost. Below are some of my favorite ways to use collaboration tools, and what you can use to get similar results.
Screen sharing can be performed in a variety of ways. When working at the console, or command line level, there are tools that are referred to as “terminal multiplexers”. Terminal multiplexing is a technique where you can open up a terminal window and either display several windows separately, or watch them in real time in the same pane. The two I am most familiar with are GNU Screen and tmux. Both allow the user to open several windows from the same terminal shell, but what really makes these tools valuable is the ability to share the screen and interact with each other at the same time. The first thing we do each day when we get to work or consider ourselves “on the clock” is to go to our shared development server and start a screen session. If we find ourselves in need of guidance, or if we have questions, the next question is “what is your screen session?” By doing this, we can jump on the screen session and interact together to see what is happening. In the process, we hand control to each other as needed.
In addition to using multiplexer applications, there are ways to share an entire desktop with your team mates. Google Hangouts allows users to share their screens and change views, and join.me allows you and your team mates to interact and pass control to each other.
Wikis and Document Shares
Wiki is Hawiian for “quick”. A wiki is a web page with an ‘edit’ button that allows you to create many pages, and link them to each other, very easily. Since Ward Cunningham invented the wiki in 1994, we have continued to see faster pages with more incremental changes. Google Documents and Etherpad are examples of document sharing where you can edit text at the same time and visualize who is editing what. This approach lets teams edit or create documents where sections can be worked on simultaneously. Changes can be examined and agreed to in real time. This is exceptionally helpful with test design, executing tests, and seeing output or anomalies together. Two people in front of a screen is great, but if that’s not an option, collaborative editing sessions can do the same thing, and there’s a paper trail to prove it.
There are a variety of chat tool options, ranging from the grand-daddy of them all, Internet Relay Chat (IRC), to more modern chat tools like GChat and Skype. All of these examples mentioned are free! Many chat tools allow recording of sessions (our group chats are archived every 24 hours). We can also set up private chat sessions outside the main groups. These options allow testers and programmers to communicate in real time. Going back to review sessions, I can see the light go on, and understand where the “A-ha!” moment occurred. Chat sessions are also good for sharing links and checking each others work for errors or missing test cases.
It’s In the Way That You Use It
With a little time, and communicating with your team, you could easily put together a broad array of useful tools that are open source and free to use. Regardless of what you use, the goal is to help others “work with me and see what I see”. Given enough practice, the process of collaboratively sharing ideas, along with active create, edit and debug sessions, will help you pick up many valuable new skills.
Disclaimer: I work for Socialtext. We make collaborative tools. Having said that, this article offers a tool agnostic approach, emphasizing goals and methods rather than specific tools to accomplish the job.
Developing and maintaining a pipeline of work, existing clients, and potential clients has been one of the more tricky aspects of doing freelance work so far. When I was starting out, all I had was a vision of how I wanted my career to progress. Unfortunately, that vision didn’t come with actual work built into it. Over time, my pipeline of work has improved a bit and I’ve of course learned a few lessons.
Harvard Business Review has data suggesting that freelance workers are getting up to 84% of their work from word of mouth, not advertising or recruiters or freelance sites.
The way HBR dissected the data is pretty specific of course, they classify based on number of hours worked and then again by age, but the study matches well with my experience.
Lets take a closer look at what is happening.
Agile has fostered a fair bit of change in how software development happens. Change in what people value, how people work together, and changes in openness and and candor. For a long time, software was a black box, or close to it at least. A business feeds in some sort of information about the problem they are trying to solve in the form of requirements, and maybe six months later they get something. That something may or may not have solved the problem. If the problem wasn’t solved, the cycle begins anew.
This post is, in a way, a response to Justin Rohrman’s post about “Ageism in the Tech World“. Does it exist? Yes. Is it detrimental? It certainly can be. Does it have to be? No.
Overcoming ageism, or any other “ism”, requires taking control of our own career trajectories. How do we do that? We make choices and invest our efforts in areas that will ultimately prove beneficial.
Yes, it’s that simple.
No, it’s not easy.
No, there is no one size fits all method to doing this, but here are some things that I have done to address this in my own career.
Ron Jeffries, signer of the Agile Manifesto and co-creator of Extreme Programming, has a new book (currently in beta) out titled The Nature of Software Development. The Nature of Software Development is an accumulation of experience and ideas Ron has collected over his past 50 years of software work. The work is divided into two segments, The Circle of Value which explains his ideas on how software work should be done, and Notes and Essays which are questions from readers and reviewers as well as anecdotes from his experience.
When I ask friends why they moved to a new company, the most common answer I get is they were “just looking for something different”. When salary, benefits and other side “perks” are not part of the equation, their answers tended to end up being one of these three things:
- To learn something new.
- To be challenged and do better.
- To be surprised.
That tells me those things aren’t happening in their old environment, and the person believes they couldn’t make those thing happen — the change is impossible given the work, or the politics, or something else. The answer that comes to mind may be to pull up stakes an start over elsewhere. Sometimes, that is the right answer, but I have to wonder – how far did they push before coming to that conclusion?
Before you quit that old job, I’d like to offer you a challenge.
If you said to yourself “I just got hired today. I want to make the next 30 days a blueprint for success”, what would you do?
Software development hasn’t existed for all that long now, maybe 60 or so years. Things have changed a little during that time, and some things have come full circle. One significant shift that has occurred, is a change in how we think software work should be done. This shift can be seen in the way our development teams are put together.