Do You Need A Website?

TLDR; Yes you need a website, and we just redid ours! Check it out! https://silverpine.com

Many years ago when Ryan and I were bootstrapping Silverpine, we ran very lean. I’m talking bare-bones lean. Some would say that we ran on a shoestring budget, but quite honestly, I doubt we would have justified the purchase of a shoestring at that point.

During that period, we were starting to develop our client base and define who we were as a company, and we didn’t give much thought to our website. At that point, if I remember correctly, we hadn’t acquired the silverpine.com domain, and we only had silverpinesoftware.com. The site was comprised of a single web page that said “SILVERPINE SOFTWARE” and it had a mailto link at the bottom (for anyone that was so impressed by our invisibility that they might want to contact us.) Our focus was on mobile development at that point, so we figured that it didn’t really matter if we had a web presence.

However, our clients noticed. I clearly remember receiving a phone call from our primary contact at Very-Large-Corp. We had just signed a contract with them to do some work and had jumped through the hoops to get Silverpine into Very-Large-Corp‘s invoicing system. He called me because he was very concerned that if our invoices showed up on reports it might prompt people to investigate us a bit. If they wanted to know more about us, they surely would go look at our website. If they looked at our website, they would question whether we were an actual company. This could potentially raise some red flags with people within Very-Large-Corp and cause him (and us) trouble. I remember his words very clearly: “I need you to put up a real website as soon as possible.

So, I spent that weekend creating a very bland website that was mostly populated with stock images. It wasn’t pretty. It wasn’t amazing. But it was a real website. We were somehow legitimate at that point.

However, time marches on and as it does, websites age and look crustier and more stale with every passing day. To that end, we decided that in 2020, we would give silverpine.com a facelift and in the process better showcase who we are and what we do. Conceptually, Silverpine embodies something that is clean, sleek and entirely complementary. The design of the website is intended to demonstrate this visually and show how a variety of strikingly different designs all work with Silverpine. The intention is that we enhance and improve existing brands and products and hopefully it’s now clear, visually, how we do that.

What we have today is amazing and I love it, but it’s also just the start. While we very often cannot talk publicly about many of the products we work on, we can add more content that continues to explain and expand on what we are and how we do it. The new website design provides a framework and a roadmap for adding and enhancing this. I’m extremely excited to grow the content so keep checking back from time to time, and if you haven’t already, go take a look!

Oh and if you wanted the answer to my question? Yes, you need a website.

Apple’s Native Apps Trojan Horse

Apple announced SwiftUI at WWDC 2019 and like a lot of people, I mostly ignored it because I knew that it would need some time to mature before it would be ready to use in production software. I also wasn’t sure if it would “stick” in terms of long term, viability. However, after another year of development, it’s clear that Apple has made a commitment to it. The newly announced Widgets and App Clips as well as enhancements to WatchOS definitely push developers hard towards SwiftUI.

SwiftUI appears to be Apple’s answer to the React programming movement, and given the similarity of SwiftUI to React, I expect a lot of the response will be positive. However, I believe this to be a bit of a Trojan Horse in relation to cross-platform development. As I mentioned earlier, apps that want to use some of the newer technologies, like Widgets, have no choice but to use SwiftUI. For an app that’s written natively in Swift, this will be easy. Apps written in cross-platform environments will have to work a lot harder.

Eventually, Widgets and App Clips will become expected functionality for many apps, and while most cross-platform solutions already support mixing native code with non-native code, the level of complexity of supporting these will essentially require developers to be fluent in multiple languages and multiple development environments. I’m very curious to see how these cross-platform development communities respond and adapt to this change because over time this will erode one of their key advantages.

The Silverpine 2020 Bracket Challenge

The NCAA basketball tournaments (men’s and women’s) are something that I look forward to every year, and we always have a Silverpine bracket competition which is a lot of fun. Obviously, those didn’t happen this year which was very disappointing, but understandable given the situation.

Not to be deterred though, we went ahead and held our own competition this year during our weekly video call with the whole company! The way it worked was that I would say two items over the call and then everyone would write their pick on a piece of paper and hold it up to the camera. For example, I would call out “elephant and giraffe” and everyone would have to write down either elephant or giraffe. The pick with the most votes would move on to the next round until we were able to crown a 2020 champion.

The first round competitors were largely paired together like “Cake vs Pie.” However once we proceeded to the second round, people had to choose from several non-sequitur items like “Seattle vs Taylor Swift.” Some of the pairings had clear winners while others were decided by a single vote, and it was a nail biter down to the end. The Final Four consisted of Dog, Blue, Pie and the ultimate Cinderella pick – Aquarium. In the championship, though, Dog easily coasted past Pie for the win and became the Silverpine 2020 Bracket Champion.

The whole “competition” was a lot of fun and a nice little stress relief, but it also was a great way for the team to get to know each other better. (We found out that one of our employees is a huge pie fan, and that another prefers C++ over dogs!) I actually think we might make this an annual event as the feedback on it has been overwhelmingly positive. Below is the completed bracket. No comments on my terrible handwriting!

bracket.jpg

 

Video Conferencing Platforms

How many calls have you been on where the video glitches or freezes? Have you ever seen an attendee list that shows the same attendee multiple times? How many calls have you been on where people are “dropped” halfway through the meeting? How many meetings have you been a part of where at least one person spends the first 5 minutes asking “Can you hear me?” It seems like anyone who has used video conferencing has at least one horror story to share.

I’ve been working remotely for 10+ years and I’ve used more conference calling applications than I can count. After a decade of doing this, I would have thought that many of these problems would have been solved, but the sad truth is that there is still no perfect solution.

Over the past few years, three platforms have emerged as the primary platforms for video conference calls: Zoom, WebEx and Google Hangouts. Each platform has its own set of pros and cons, so it’s important to understand what each of them brings to the table. If none of these work for you, I’ve also included a list of alternatives to consider.

Caveat: One of my biggest complaints about all video conferencing software is that it is inconsistent from user to user. My analysis of these tools is based on numerous calls and years working with disparate groups of people across various geographies, but even with all of that, your experiences may differ from mine.

Zoom

Pros: Zoom is currently enjoying a bit of front-runner status in the video conferencing wars. While Zoom does require you to install software on your computer/device, the installation is fairly painless, and it’s simple to get up and running. The experience also seems to be consistently solid across Macs, PCs, iOS and Android devices. I’ve never had any issues moving between platforms on Zoom. When larger groups are trying to connect, it is rare to have stutters and freezes and this is what really makes it shine in terms of a video conferencing product.

Cons: One of the biggest downsides to Zoom is their history of abusing customer privacy and security: example 1, example 2, example 3. While the company does seem to respond to each of these in pro-active, responsible ways, it does make you wonder why it keeps happening. Zoom also requires you to install software on your computer or device, so that is one thing to keep in mind.

Pricing: The free tier for Zoom is fairly standard as you can host an unlimited number of meetings with up to 100 people. The biggest limitation is that calls are limited to 40 minutes. If you need more than that, Zoom is actually the most expensive option with their Pro plan starting at $14.99/user/month.

Google Hangouts

Pros: Google Hangouts is the video conferencing portion of Google’s G Suite product line. (Technically, the name is Google Hangouts Meet but that’s a terrible name.)  In terms of ease of use, Hangouts can’t be beat: if you use Chrome as your browser, there’s literally nothing to install. Essentially, anyone with a Gmail account and an open browser can start a conference call which makes this incredibly accessible. It’s largely because of this lack of barrier that it has become so popular.

Cons: One major downside of Hangouts is that it often gets confused if you have more than one G-Mail/G Suite account. Many times I will try to launch a call that my work email address was invited to only to be told I can’t access the call because it decided to use my personal account. This can be incredibly infuriating because it usually requires logging out of all your Google accounts before it will work.

Hangouts technically works on browsers other than Chrome, but most people (including me) report having significant technical issues trying to use it with Safari. If I have a Hangouts call, I will copy the call URL and paste it into Chrome where it works flawlessly.

Finally, the biggest downside of Hangouts is that it does not seem very performant with larger groups. The video will frequently glitch and freeze if there are more than 3 attendees. Of all the platforms I have used in the past few years, Hangouts is definitely the worst performing when it comes to actual streaming.

Pricing: Google Hangouts is hands down the cheapest option. As mentioned previously, anyone with a Gmail account can use their free plan, and the paid plans start at just $6/user/month.

WebEx

Pros: For many years, WebEx was the gold standard of conference calling and it made deep inroads into corporate America. Today, WebEx is approved by IT infrastructures everywhere which means it can generally be used regardless of network firewall rules. It also means that corporate customers often have the software pre-installed and configured by their IT administrators. If you need to have conference calls with corporate entities, WebEx will definitely be a familiar entity.

In general, WebEx performance is solid. It requires installation of a native application so its streaming quality is generally on par with Zoom’s quality and I’ve never had issues connecting large groups.

Cons: My biggest complaint about WebEx is that it frequently loses audio connections for wireless computer headsets. While this isn’t the end of the world, it seems like such an obvious, fixable problem that I can’t believe WebEx continues to let it be an issue. I don’t ever seem to have these issues with any of the other platforms so I don’t understand why WebEx can’t address it.

The other complaint I have about WebEx isn’t necessarily with the WebEx platform itself, but with how certain corporate IT groups have configured their installations. For example, we have one particular client that is a large Fortune 50 company and every single time I have a WebEx call using their account, I have to reinstall the software on my Mac. WebEx is the software that we use at Silverpine, and we never have any of these issues, so I know this is somehow related to their installation.

Pricing: In the past, WebEx was the most expensive of all the platforms which would have put it into the “cons” category, however competition from Zoom and others have forced WebEx to introduce better priced, low-end plans. They recently updated their Free tier to include up to 100 participants with no time restriction, and their Starter Plan is a fairly modest $13.50/user/month.

Alternatives

If Zoom, Hangouts or WebEx just don’t work for you, there are quite a few alternatives, and a few of them are even familiar names (Skype, GoToMeeting and FaceTime.) Definitely give them a try, but as mentioned earlier, each of them is going to come with its own set of pros and cons.

Summary

Given the state of video conferencing software, I am unfortunately unable to make a single recommendation. Hopefully, as more people start working remotely the increased competition will force video conferencing companies to continue to improve their platforms and someday I have just a single recommendation. That being said, of the 3 most popular platforms, I would recommend Google Hangouts based on price, I would recommend Zoom based on streaming quality, and I would recommend WebEx if you need to connect with larger corporate entities.

 

 

Remote Work Preparation

A friend of mine was talking with me earlier this week about his struggles and frustrations now that he is suddenly (and unexpectedly) in a remote work situation. He isn’t sure what tools to use. He isn’t sure how to structure his time. He isn’t sure how and when to communicate with his co-workers, and he has found that his home-office isn’t set up in a way that’s conducive to the kinds of work he needs to do. In short, he is unprepared for remote work.

I’ve been working remotely for over 10 years now and I often forget some of my own struggles with it. There have definitely been lessons learned along the way, and the one thing that I know for certain is that working remotely requires preparation. I think that some people think that you can just plop down at your kitchen table and declare yourself an expert at working from home, but that couldn’t be further from the truth. The reality is that the transition from a traditional office setting to a home office can be tricky.

Prepare Your Work Area

It might seem obvious that one of the major contributors to your success at working from home is having a good place to work, but it’s amazing how often people neglect setting up a proper work area. Not only should you create a dedicated space that is your “work zone” but you should make sure that it is conducive and constructive to you staying there for periods of time. For example, do you have ample supplies like pens, pencils, notebooks, stickies, etc close at hand? Do you have a comfortable chair? If you like listening to music while you work, do you have good headphones? Is the temperature set to a level that won’t put you to sleep but won’t freeze you out? Do you have proper equipment for video chats or conference calls?  In short, is your work area prepared for the kind of work that you do?

The Wirecutter has a great list of products that they have compiled for creating a full time space to work at home. I agree with most of their suggestions, and I highly recommend making sure that a nice, comfortable chair and/or standing desk are at the top of your list. (If you’re wanting a second opinion, Business Insider also has a reasonable list).

Prepare Your Tools

Similar to preparing your work area, it’s also important to make sure you have the right tools to work remotely. I’ve written in detail about what tools we use elsewhere, but there are some fundamental things that everyone needs like video conferencing and chat applications. However, once you’ve settled on your tools, particularly your teleconferencing tool, I cannot stress enough how important it is to do dry runs with them before using them in real meetings. Make sure that your audio and your video are set up properly. Do a test meeting with a co-worker or friend. You definitely don’t want to be the person who makes the group wait for 10 minutes while you try to get your connection working.

Prepare Your Routine

One of the major challenges of working from home is that when you work from home, you’re always at work. As anyone who has worked from home knows, it’s far too easy to let your working hours drift into your non-working hours. It’s incredibly tempting to let yourself take one more peek at your email or work on one last task for your project.

To prevent your work life taking over your home life, it’s helpful to develop a routine for yourself. This isn’t to say that your routine needs to be rigid because one of the most amazing aspects of remote work is the flexibility it provides. However, it is very important to establish a general flow and process to your day. This will help you set limits for how long you work during the day, and it can encourage you to stay healthy both physically and mentally. Having a routine can help ensure you’re getting exercise and that you’re taking breaks and that you’re making sure to eat lunch. (Skipping lunch is actually a common problem when working from home!) All of these things will make you more productive, but without a routine, it can be very easy to neglect them.

Preparation and Kaizen

Finally, my biggest piece of advice for working remotely is that even when you think you are prepared, you should always be on the lookout for how you can improve. In an office setting, there are many people from HR managers to facilities managers to direct line managers who observe employees and try to come up with ways that they can be more efficient. When you work remotely, none of these people will be around to offer suggestions to you. No one will tell you that your keyboard is too close to your monitor. No one will tell you that a nice plant next to your monitor will improve your mood. No one will tell you that you should take a break for lunch. It’s up to you to identify areas for improvement and to become more efficient. The Japanese term “kaizen” refers to continuous improvement, and it is a concept that remote workers really should embrace in relation to their work environment. As a remote worker you should always be looking for ways you can improve, whether it be in your schedule or in your tools or even something as simple as the kind of chair you are using.

If you are one of the many people who suddenly find themselves facing the prospect of working from home, please understand that while this offers many amazing advantages, it is absolutely not as simple as it sounds. To get the most out of the opportunity, make sure to take some time to think about your workplace, your tools, and your time.

Finishing Software Is Hard

For the last couple years, my 15 year old son has been slowly building a gaming computer for himself, piece by piece. For his final computer component, I agreed to purchase it for him if he could accomplish one very specific task. Namely, I wanted him to recreate an iOS app that I had written years ago as I was learning iOS development. He has a natural inclination to programming and has dabbled with many different coding challenges so he figured that it wouldn’t be too difficult to do.

For the most part he was correct. He started working on it last summer and was able to quickly get a large chunk of the functionality working. He was fairly excited about it, but then I started explaining some of the other things he needed to do before submitting it:  an about screen, a splash screen, cleaning up the layout for the various phone screen sizes, etc. What happened next was predictable. His enthusiasm waned and he pretty much stopped working on it. He filled his time with other things and his almost-finished computer sat staring at him in his room.

On more than a few occasions he tried to negotiate a smaller task, but I kept explaining to him that the point of the exercise wasn’t to see if he could program (I knew he could.) But rather, could he finish something hard and complex. As any seasoned developer knows, finishing software is difficult and always takes longer than you expect. It’s also not a skill that people learn in school. It’s something that can only come with time and experience.

During this period of extreme social distancing, our kids haven’t had school and the transition was so sudden that teachers didn’t have time to create assignments or lesson plans for students while they are out. As a result, our kids find themselves on some bizarro extended spring break where they can’t see anyone. The boredom is real and families are trying to figure out what to do with themselves. The silver-lining for me is that I have a little more time to spend with my family and I finally convinced my son to sit down and finish his app.

The amazing thing is that as soon as he finished and submitted to the App Store, he found a sort of “second wind” where he wants to keep working on the app and add more features and functionality. To me, this is the magical reward of finishing software. When you finish something you feel such a sense of accomplishment and get a boost of energy and enthusiasm. It’s a feeling that I love and is difficult to explain to someone that hasn’t gone through a tough finishing exercise. I’m very happy that I was able to share this with my son.

Oh, and if you’re curious about the app he built, you can find it here:

https://apps.apple.com/us/app/doodle-dots/id324487932?ls=1

 

10 Great Resources For Remote Work

I’ve been keeping a small list of resources for people that are trying to work remotely even if just temporarily during this current pandemic. Below are a few links to things that are potentially helpful even if you’ve been working remotely for a while:

  1. Treehouse has made their tutorial “How To Work Remotely” free for everyone.
  2. If your office and desk are less than inspiring, Dwell has a beautiful set of 25 home office designs that are fun to peruse.
  3. LinkedIn has a great set of online courses for learning to work remotely. Their “Executive Presence” video is particularly good advice for anyone when preparing for conference calls.
  4. Remote: Office Not Required is a great, short read by the creators of Basecamp. It provides some good backstory and explanations about the values of remote work.
  5. Atlassian, one of the largest and most famous 100% remote companies,  has a great introduction to remote work.
  6. Greg Storey at InVision has an amazing curated list of remote work articles and resources. He is constantly updating the list so make sure to check back frequently.
  7. The authors of Thinking Remote have an email series that you can sign up for. It’s a fairly thought-provoking series and is limited in length so you won’t get tired of it.
  8. They also have a great podcast series titled 21st Century Work Life and leading remote teamsI’ve only recently started listening to this, but I really enjoy it.
  9. Collaboration Superpowers has a fantastic newsletter about working and managing remotely. (Also, don’t miss their really great guide for meeting facilitation!)
  10. Inc. has compiled a list of companies that are making their remote work tools free temporarily. If you’ve been curious about some of the paid teleconferencing tools, now is a great time to try them out without any cost.

 

 

Slack Tricks for Novices

The past few weeks have been insane with Corona Virus/Covid-19 outbreaks causing havoc around the world. In particular, there has been a sharp uptick in companies asking their employees to work from home (WFH) even though the practice is new or untested for many of them. With so many companies suddenly thrust into this new WFH reality, I have to imagine that there’s also been a huge jump in Slack users. As I’ve previously mentioned, Slack has been one of our core tools at Silverpine for quite a while and as such, we’ve become fairly adept at using it.

For anyone that is new to Slack and wants to jump start their productivity with it, here are a few tips and tricks that I’ve used to help me be more productive and have a little fun while at it:

1. Quickly give someone kudos or feedback by adding a reaction to their message which adds a little emoji under their message.

Screen Shot 2020-03-09 at 4.01.47 PM.png

If someone has already added an emoji and you like the emoji they used, click on it and the count of that emoji will increment similar to “likes” on Facebook.

2. Quickly reply to a message with a ¯\_(ツ)_/¯ shrug by replying with /shrug

3. When you need to focus on something, go into Do Not Disturb mode by clicking on the bell icon and disabling notifications for the amount of time you specify

Screen Shot 2020-03-10 at 9.52.14 AM.png

4. If you’re part of a channel that you can’t leave but is just too chatty, you can mute it. You will still be able to see activity, but you won’t receive notifications and you won’t see the little dot indicating new messages. (I’m a member of quite a few Slack groups and those dots drive my OCD crazy!)

5. To add some spice, try adding a few custom emoji. For example, the Silverpine Slack will insert :blazers: whenever someone types :blazers: into a reply.

6. Don’t be afraid to leave channels that aren’t helpful to you. I promise, they’ll get by without you.

7. Star (aka favorite) both people and channels that are important to you so they appear at the top of your list.

8. Pin items that are important or might be important so you can easily find them. (Pinned items remain on the free plans even if they are too far back in the history to show up in a search!)

9. Try using /giphy in a reply if you want to find a fun/snarky response to someone. Don’t overdo it though or your admin will likely disable it.

10. Use /collapse in a channel to hide the annoying GIFs that your teammates post.

11. Add @here anywhere in your message to notify everyone whose status is Online and is a member of the channel. This won’t send notifications to offline users or anyone that has set their status to Do Not Disturb.

12. Add @channel anywhere in your message to notify everyone who is a member of the channel. This will send notifications to the members that aren’t online as well. Try hard not to overuse this and consider using @here instead.

13. If you are in a channel with many people, consider taking a topic out of the channel and into a direct channel with the person you want to chat with.

14. Take a trip over to the Slack App directory and see if there are any third party integrations that could help or would be fun. In particular, make sure to check out the bots directory. I’m particularly fond of the survey app integrations like SurveyMonkey.

Slack is full of all kinds of tricks and tools to help people communicate better. If you have a tip or trick that I didn’t include, definitely drop a note in the comments and I’ll publish an updated list.

Building Community with Slack

Whenever I talk to people about being a remote company, they will often ask how we replicate the “water cooler conversations” that happen organically in a standard office setting. (Sidenote: I’ve only ever worked at one company that had an actual water cooler.) The conversations they are referring to are the ones where employees talk about their families and their hobbies and many of their non-work interests. They also might talk about things that are happening both inside the company and outside the company that are tangentially related to their jobs. Sprinkled into those conversations are often times some of the “outside the box” brainstorming and problem solving that usually aren’t factored explicitly into employees’ schedules.

I believe that when people ask about replicating “water cooler conversations”, what they are really asking about is how to build a sense of community and trust among employees who are rarely in the same physical location. How do they create an environment where people feel like they know each other well enough to share a crazy, hair-brained idea? How do they trust each other well enough to talk about a potential pitfall that nobody else has noticed yet?

I don’t purport to have all the answers, but I can tell you that at Silverpine, we lean heavily on Slack to help build trust and community on a day-to-day basis. If you don’t know what Slack is, it is a software communication tool that feels a little like group instant messaging, but has a few differences that increase its utility immensely for people and groups who aren’t co-located. (I’ve also listed out a number of our regular tools that we use for remote work here.)

To help build a sense of community, there are a few specific approaches that we employ in our Slack instance:

  1. Create channels that serve an explicit, well communicated purpose
  2. Have a well defined strategy for populating channels
  3. Archive unused, unneeded channels to limit confusion
  4. Model the behavior you want to see

Because we are a technology company with heavy dose of design, some of the ways that we utilize Slack won’t be applicable to everyone, but I believe that in general, these 4 strategies can be applied to any organization that uses Slack.

So how exactly do we use these strategies?

Create Channels With Purpose

Our strategy for Slack channels is heavily influenced by our staffing model. We employ a decent number of sub-contractors in addition to our employees so we have a few categories of different channels.

General Purpose Channels

We have two general purpose channels that are work related: “#general” and “#internal”. In the #general channel (which is a default Slack channel that every user gets added to), content that is posted is generally restricted to work-related things that apply to everyone whether they are an employee, a contractor, an engineer a designer or whatever role they might have. An example of that might be an announcement about a project launch that both employees and contractors worked on. The second general purpose channel is our “internal” channel which is only for employees. This is sort of the inner circle where we talk about things like health insurance policy changes or company strategy. If you want to know more, you’ll have to apply and join us!

Project Specific Channels

This is a very common strategy and somewhat obvious, but for every project that is active within our company, there is a corresponding Slack channel populated with all the relevant project members. This ensures that the majority of the conversations about a particular project can all be found in one place. It also makes it clear where someone needs to go if they need to talk about their work. Again, this is a common strategy, but it’s definitely a good one.

Topic Specific Work Channels

We also create channels created for conversations about tangential related work topics, but that aren’t necessarily for a specific project. For example, since we build iOS and Android apps, we have a channel dedicated to iOS development and a channel dedicated to Android development. What is discussed in these channels isn’t specific to any particular Silverpine effort, but it’s a place where we can cross-pollinate ideas and have conversations about some of the building-blocks of our business. It’s very common for our developers to both ask for suggestions on solving a problem but also to post interesting solutions to things they have learned.

Non Sequitur Channels

Finally, we have a few channels for topics that aren’t related to projects and aren’t really related to work at all that I refer to as “non sequitur” channels. For example, we have the default #random channel, but we also have a #basketball channel where a few of us who enjoy the sports-balls discuss matters of the day. I am part of other Slack communities that have a number of non-work channels, like #photography and # travel. My only caution when making hobby and non-work channels is that it’s very easy to overdo it and end up with a list so large that it paralyzes would-be communicators. It should always be clear what channel someone should use if they feel like talking and having too many channels can erode that feeling of comfort.

Archive Unused Channels

Some administrators treat Slack as immutable and that channels, once created, should exist indefinitely. I strongly disagree with that for the same reasons why I feel it’s important to have a limited number non-work channels.

When a project wraps up, we keep the project Slack channel around for a couple months and then archive it. We will generally send a last message to the @channel to make sure everyone is ok with archiving it, but usually, if nobody has posted for a few months, it’s a good indicator that it’s time to wrap it up. (If you have a paid plan, you can always unarchive it if needed, but in practice, I’ve never had to do this.)

Second, if you have created non-work channels that aren’t being used, that’s ok! Just admit that people might not care about whatever the topic of that channel is, and archive it. As I mentioned before, having too many choices can lead to paralysis and erode the very trust you’re trying to build.

Be Smart Populating Channels

In Slack, there are a number of ways that people can become a member of a channel. But the most important time to think about adding people to a new channel is at the time of creation. When you invite someone to a channel when it is first created you are communicating to them that you feel their voice is valuable, that they belong. If you wait for people go search the channel list and join on their own, not only do they miss out on some of the earlier conversations, but they can sometimes feel like they are outsiders trying to break into a clique.

Also make sure to take a few extra seconds when you are creating the channel to decide if the channel should be public or private. This can make a big difference in terms of both information overload (if users have too many channels available to them to join) as well as that sense of belonging. If you stumble on a channel that you weren’t explicitly invited to, it’s hard to not feel somewhat left out.

Model Behavior

Finally, perhaps the most critical element in building community via Slack is to model the behavior you want to see. If you want people to engage and communicate regularly, show them how you do that. If you want people to talk 1:1 as well as in group channels, make sure you’re talking to your team in the direct channels.

Also, be smart about using channel @mentions. Don’t be afraid to use @here and @channel mentions, but be aware of the dangers of overuse. They are powerful in that they notify large groups of people with a few keystrokes, but if you used too often, it can lead to people ignoring channel notifications altogether.

Similarly, try to get in a habit of using someone’s @handle rather than just their name to make sure they know they are being talked about. For example, don’t type

“I’m not sure about that, but we should probably ask Jon what he thinks”

but instead write

“I’m not sure about that, but we should probably ask @jon what he thinks.” 

And whatever you do, don’t underestimate how much other people on your team look at how you are using Slack, yourself. If you are frequently joking, you will find that much of your channel content will be filled with joking. If you frequently write simple, terse comments, the rest of your team will consciously or unconsciously mimic your behavior. And most importantly of all, if you don’t communicate often, your team will reciprocate.

 

 

 

An App Budget for America

If you’ve been paying any attention to the news this week, you will of course know about the major snafu in the Iowa Democratic Caucus. It is now largely being blamed on what appears to be a bug in the app developed by a for-profit third party company. I’ve been reading the news around this with quite a bit of interest both because I’m interested in our democratic process, but also because I have a small bit of idea what the app developer is going through. I’ve been an engineer on apps since the early days of the Palm Pilot, way back in 1999. (They weren’t even called apps back then!) As such, I’ve been on hundreds of 1.0 product launches, many of which have been amazingly successful, but I’ve also had my share of painful and embarrassing failures so I certainly cannot throw too many stones from within my glass house.

However, the thing that really caught my attention was the reported development cost of the app. It has been widely reported that the Iowa Democratic Party paid the app developer $63,000 for this product. In particular, I noticed more than a few news outlets reporting that it was a large sum of money. To an individual, $63,000 is certainly a lot of money but in the context of an app development project, it is a very meager, thin budget.

As app developers, we don’t often talk about all the costs that go into a platform like this, but given the gravity of this app, I consider this to be far too small of a budget. If you’ve ever wondered what goes into developing an app and how much it might cost, I think this is a great opportunity to break it down. If we are following any sort of sane development model, we will do the following:

  1. Gather the user and technical requirements of the platform
  2. Design the user interface and user experience so that precinct captains who are going to have to use the app can do so with very little assistance
  3. Develop the backend server and database that the apps will talk to
  4. Develop some sort of dashboard or web interface for retrieving the data that has been uploaded by the apps
  5. Develop an iOS app
  6. Develop an Android app
  7. Test the apps and server in a controlled quality assurance environment
  8. Deploy the apps and server to a production environment
  9. Have a beta test period to validate the system is operating correctly and that users can download and utilize the product
  10. Launch the product!

Given the above list of items needed to create the platform, we can reasonably estimate that, at a minimum, the team working on this should have consisted of an iOS app developer, an Android app developer, a server developer, a designer, a project manager and a quality assurance engineer. For an app like this, it’s still a pretty bare bones team of six people.

Now that we have the staffing established, let’s figure out how much time these folks are going to be working on the project. First, we need to establish a rough timeline. For an app like this, I would roughly estimate that it would consist of a month of up front work defining the requirements and interface followed by 2-3 months of active development, followed by at least 1 month of quality assurance. At that point, the app is hopefully well written and tested and ready to move to a beta test period which should, at a minimum, take 2-4 weeks. In the end we should have a project timeline that is going to run at least 5-6 months.  Now we need to figure out how much time each person on this team is going to spend working on this product.

Let’s start with the project manager. In general, the project manager is going to be the source of continuity through the entire project. They are going to work heavily up front with the client (in this case the Iowa Democratic Party) and the designer defining the requirements and translating those requirements into a user interface that will meet the needs of the diverse population that will use this app. The users of this app are going to have an incredibly broad range of technical sophistication so it will be important that the UI/UX be done well. The project manager will then transition to part time during the development phase as they coordinate the many moving parts of the project. As the development phase wraps up, they will then re-engage as the product goes into the testing, deployment and beta testing phases. Given our assumptions above, they would likely spend about 1 month working with the client and the designer up front to define the product, then transition to approximately 1/4 time during the development phase and then transition to 1/2 time during the testing phase, followed by a full time engagement during beta testing. Roughly speaking, the project manager would need to be budgeted for about 3.25 months over the course of the project.

While the project manager’s involvement is a bit dynamic, the designer is a little easier to estimate. They will likely spend the majority of their time at the beginning of the project creating the user interface and user experience for the app, and then they will spend a little time during the quality assurance phase ensuring that their initial designs were successfully translated to the product. Generally speaking, the designer should be budgeted for about 1 month during the project.

Next up is the server/database developer. This one is a little more difficult to estimate since it is unclear where the caucus data needs to go once it’s uploaded, but at the very least we know that it needs to provide login and authentication functionality as well as data storage and reporting. In general, the server developer will need to define the interfaces that the apps talk to as well as provide development, test and production environments for the different phases of the project. As a conservative estimate, let’s assume that the server developer works for approximately 2 months during the course of the project.

The app developers on the project will obviously need to be fully active during the primary development phase, but even more importantly, they need to be fully engaged during the testing phase and at least partially available during the beta testing phase. As a conservative estimate, we can budget them for approximately 3.5 months of the project. Since we need an iOS and an Android app, we need to budget a combined 7 months for the project.

Finally, we need to consider the QA engineer’s contribution. In a perfect world, the quality person is a team of people and they are at least partially engaged from day 1 of the project. However, we will employ a conservative estimate and budget only a single person for just the testing phase of the project, which is 1 month.

So with all of that out of the way, we can come up with the following time estimate:

  1. Project manager – 3.25 months
  2. Designer – 1 month
  3. Server developer – 2 months
  4. iOS developer – 3.5 months
  5. Android developer – 3.5 months
  6. Quality assurance engineer – 1 month

That’s a total of 14.25 person months of effort. If you consider a 40 hour work-week, that equates to approximately 2280 hours of effort. To calculate a total project cost you would simply multiply the number of hours times whatever your company’s hourly rate is. For this exercise, I will admit that I’m making some assumptions because I haven’t seen the app in action. However, I’ve been doing this a long time and given the descriptions of the functionality I’ve heard reported in the news, I’m comfortable with my estimates. 

I cannot say exactly what development plan this company followed and I cannot say how they staffed it, (although some details are starting to emerge). I also cannot say if the app developer had a longer play in mind when developing the app in terms of a profit model. For example, it is likely they could have charged the Iowa Democratic Party less than the actual cost of development with the intention of reusing the platform for other states and recouping more of their initial costs. (The Nevada Democratic Party apparently paid them for an app as well, so this is a likely possibility.) The one thing I can definitively say, however, is that for an app of this level of importance, $63,000 is not a very large budget. Given the vast amounts of money that campaigns raise, it seems like this would almost end up equivalent to a rounding error.