My Vision for a Software Company
This is my attempt for putting into words how I think a software development company should function. I know this is probably a super idealized vision as it is so hard to put this all into action.
You may wonder why I would do things differently. Hasn't this been figured out by the other companies out there? I think every company has things it does well and other parts it doesn't. I bet anything I would do would have similar strengths and weaknesses.
I hope to evolve this post as my thinking changes, but we will see what happens.
Booking projects by chunks of time
This has been on my mind for awhile, and it seems like it would solve a lot of the typical agency problems.
How this normally works is a company approaches you with a project in mind. Let's use a website for example. Usually the first question out of their mouth is what is the cost? A lot of time freelancers are not too happy by this question because there are so many variables and things that need to get figured out first. To be honest, this is an understandable question as this is very important. I would like to turn this question around on them and ask something like the following:
This sounds like a big project, what can we build you in two weeks that will give you value for what you will pay us?
The project may be a lot larger than two weeks, but we need to break it down into smaller chunks. This isn't to say you have to do only two week projects. You could do a week, or a day but I wouldn't want to go much lower than that.
I would also be upfront that the company has our focus for that amount of time. Most agencies have their team juggling many projects at once, and aren't getting the best work out of them.
A few other distinct advantages I see are:
• You are showing the client something in two weeks, and can correct course if needed.
• Gives your developers focus on what they are building.
• Allocating your developers time is easier as they are on one project at a time
• Easier to get payment - I would think doing 50% up front and 50% at the end would be fair
• No more 1 or 2 hour jobs that just don't pay to do
• Allows you to have developers work part-time in evenings if needed
Fully remote with in person touch points
Working remote is always a bit of a touchy subject, and it seems that my opinion on it changes almost daily. I used to work fully remote and thought it was great. I got my work done, while also having more freedom to make appointments and just live life. No time spent commuting also ends up saving multiple hours in a week.
A few years later I moved to being full-time in the office, and have been doing it ever since. It may seem that I've been heading in the wrong direction, but I feel that in some ways this has been beneficial for my career.
Working at home gave me the gift of focus, but I do feel that it probably stunted my ability to learn and grow by not having people smarter around me to ask questions to. I think one piece of remote work that I miss the most is just being able to relax and recharge at different points in the day. At the office I feel, maybe incorrectly, that I need to be working all the time. I've tried lately to take a breather sometimes, but its really not easy for me to just slow down.
Now that I got that out of the way; what would a good balance be? I'm not really sure but something that recently jumped into mind is being fully remote but having weekly in person touch points.
We have this concept of kickoffs and retros for our teams currently. I thought maybe this could apply to a remote team. Larger projects would kickoff on Mondays, and maybe you would try to get everyone in the same place to work together for that day. There is something about working side by side with someone on the same project that builds team camaraderie (had to look that word up). Then for the remainder of the week you could work from home until maybe Friday when the team could get together for lunch and do a retrospective on how the week had gone.
A couple gotchas would be that your team would have to be in a similar area so you could get together. I guess with technology you could have people on hangouts or something to still be involved.
I have no idea if this would work or if people would even like this idea, but it was just a thought to strike that balance. That's not to say you couldn't work together more during the week if you happened to miss your coworkers :)
Purposely stay small and be picky with projects if you can
I feel like staying small is at the heart of maintaining quality. You want your team to be fulfilled in what they do, and that means charging a lot, paying them well, and staying away from a lot of the small stuff. There is always small work to be done, but is it worth demotivating your team and having them switch to many projects in a single day? I would think not. Obviously at the start you can't be as picky with projects you choose, and of course it eventually all comes down to money.
I hope at least some points in this article peaked your interest and got you thinking about how to build a better company.
Thoughts? Hit me up on twitter @brenelz
Notice spelling mistakes or outdated content? Make a pull request!