Slashdot Mirror


Ask Slashdot: Best Practices For Starting and Running a Software Shop?

An anonymous reader writes: I'm a systems architect (and a former Unix sysadmin) with many years of experience on the infrastructure side of things. I have a masters in CS but not enough practical exposure to professional software development. I'd like to start my own software product line and I'd like to avoid outsourcing as much as I can. I'm seeking advice on what you think are the best practices for running a software shop and/or good blogs/books on the subject.

To be clear, I am not asking about what are the best programming practices or the merits of agile vs waterfall. Rather I am asking more about how to best run the shop as a whole. For example, how important is it to have coding standards and how much standardization is necessary for a small business? What are the pros and cons of allowing different tools and/or languages? What should the ratio of senior programmers to intermediate and junior programmers be and how should they work with each other so that nobody is bored and everyone learns something? Thanks for your help.

12 of 176 comments (clear)

  1. First and foremost by vivaoporto · · Score: 5, Insightful

    Get a good accountant to keep the books in order. Get a good lawyer so you always have someone vetting your contracts and preventing or solving any litigation you may find yourself entangled.

    Don't try to do all by yourself, delegate everything you are not a specialist so you can focus on your core aptitudes.

    1. Re: First and foremost by American+AC+in+Paris · · Score: 4, Insightful

      Even before that: have a business plan. Do your best to determine what you want to create, how expensive it will be to make it, how many people you'll need to manage, how much you expect to charge for it, and how big your likely market is. If you discover that there's no way to make your endeavor even close to profitable, you can save yourself months of heartache and mountains of lost money. Always have a plan, even if you don't stick to it in the end.

      --

      Obliteracy: Words with explosions

    2. Re:First and foremost by rtb61 · · Score: 3, Insightful

      You missed, avoid outsourcing your core service because of course you are not just giving you ideas away for free (there of course is nothing FOSS wrong with that) but you are paying people to take them and directly funding potential competitors. Outsourcing was just bean counter spreadsheet bullshit to grab the bonuses in the short term at the expense of crippling long term survivability. All those years of developing your companies skill set are gone, evaporated in the blazing sun of short term greed and instead you have just funded the development of skill sets of other companies.

      Keep in mind the top level of outsourcers only outsource things like management because it gives them the opportunity to hugely inflate management costs, shift them to offshore tax haves and not only cheat on taxes but also to hugely cheat their own investors, whilst spreading lots of PR fertiliser about saving money.

      Of course when it comes to software/web development the first thing you need to decide is whether you want to create a real long term company or just create a scam that looks good and gives something 'investment' companies can promote and sell to the gullibly greedy before it all 'mySpaces'.

      --
      Chaos - everything, everywhere, everywhen
    3. Re:First and foremost by JWSmythe · · Score: 3, Insightful

      I was going to say something like that, but not as well. I've been in interviews where someone is asked about their experience.

      "What experience do you have?"

      "I spent 6 years at [university] earning my Masters degree."

      "Ok, what *work* experience do you have?"

      "I worked for 6 years earning my Masters degree."

      "Lets try this again. Have you ever been employed and paid for work in this field?"

      "We had projects at [university] where we worked on various projects to earn my Masters degree."

      I'm not saying that the original post is that kind of person. He says he worked in IT infrastructure for years. I would think he would have been exposed to the development side, at least a little bit.

      Unfortunately, with the questions asked, I suspect it may be more like my example above. If he had the necessary experience, he'd already know, as the owner of whatever new company he's starting, the lead dev is going to provide the best answers to those questions. The lead dev is going to have their own opinions and methods that everyone on their team is going to work with. Unless he's going to do the CEO/CTO/CIO/lead dev rolls all at the same time, which isn't going to work as well as he'd hope.

      --
      Serious? Seriousness is well above my pay grade.
    4. Re: First and foremost by drooling-dog · · Score: 4, Insightful

      It's always a good idea to have a rough map of where you think you're going, but be careful about getting too carried away with formal business plans. You'll meet lots of people educated in business who will tell you that you need to sweat blood over a comprehensive plan - to the neglect of everything else - and then tour the country with a finely polished road show pitching it to potential investors. They tell you this because it shines the spotlight on their own training and talents. In reality, successful software business development almost never works this way, unless you have a stellar track record with several big hits behind you already (in which case they're investing more in you than the specifics of your plan). As others here have pointed out, what matters most is your rapidly growing list of happy, paying customers. Don't let your focus get diverted too far from that.

  2. Sorry, you'll have to outsource. by BarbaraHudson · · Score: 4, Insightful

    I have a masters in CS but not enough practical exposure to professional software development. I'd like to start my own software product line and I'd like to avoid outsourcing as much as I can.

    Since you're getting into something you by your own admission lack domain experience in, unless you've won the Powerball and have a lot more money than brains, anyone you interview will realize that you're going nowhere and hence even the short-term prospects are, at best, poor.

    At least with outsourcing, you can BS them as much as they BS you so they won't walk out the door shaking their head.

    Bonne chance, 'cuz you're gonna need it.

    --
    "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
    1. Re:Sorry, you'll have to outsource. by Anonymous Coward · · Score: 0, Insightful

      They said that to Mark Zuckerberg also.

  3. Get a sales force and some customers by Kohath · · Score: 3, Insightful

    Business is about sales and customers. Everything else you do is completely irrelevant if you don't have sales and customers. If you don't have a good plan to sell your wares, you don't need to spend 5 minutes thinking about how you will produce them.

  4. Instill confidence through source escrow by SethJohnson · · Score: 1, Insightful

    If you are planning to sell software to the government or business as a startup, consider source code escrow. Your customers will tend to stick with established vendors for fear of you going out of businesses and leaving them with an unsupported implementation. The source code escrow is insurance against that being more of a catastrophe for your customers than you.

    Invest in dedicated technical support. It plays up as great comedy in the movie, Office Space, when the character says you don't want the customers talking directly to the engineers. You actually don't want that. Establishing a quality support team keeps the engineers productive on developing while the support group ensures the customers are getting help with their issues. Oh, and don't outsource this responsibility to a foreign country. If you think you can't afford quality support, at least staff it with a recent college grad and split that person's time between support and bug fixing.

  5. Re:Mod parent up. by rasmusbr · · Score: 3, Insightful

    It's actually pretty common for the founder to be someone who doesn't have any technical knowledge or any knowledge of managing the finances of a business. The founder could be a person who brings money and ambition to the table. (I'm not sure if this applies in this particular case, but it would not be unusual).

    The most important decisions then are usually the first 2-5 employees that they hire. The first person must be an experienced, ambitious, loyal and tireless person with the right technical knowledge who for some reason prefers to work for a tiny startup instead of a larger, more established company.

    Best of luck!

  6. Know what you're going to do by wvmarle · · Score: 4, Insightful

    The summary is a bit short on detail, but one thing is lacking: a business plan. I've never run a software business, but am running my own business now so have a bit of experience in setting it up. What do you want to program? Who are your customers? Where's the demand?

    You're already talking about hiring multiple people - this means you must have a decent outline of a piece of software to develop, and it's going to be a quite big project. Do you have customers for that already? Without customers, you're going to run dry very very soon, and you won't be able to get any funding. No customers, no future for whatever you want to do. Just saying "let's set up a software shop" is a one-way street to bankruptcy. You need to have potential customers before you start producing anything, really. You need to know the demand is there. You need to have your income sources. You'll have to find customers who need a product, and who believe you can deliver what they need at good price and quality.

    Hiring people is very expensive for a shop without income. I've always started up on my own, do everything in house until you have too much to do that you have to start getting other people involved. In the meantime this also means that revenue is there.

    Getting started is hard: no-one knows you, and hiring you (the new kid on the block) for some big, expensive software project (the kind a single person can't handle) won't happen. They'll go to the ones they know that can handle it. You'll have to start small, slowly get your way into the market, get your name out, get your product out, let the people know you're there and you're good. Then you may get bigger projects, then you may start hiring people and setting up an office that's not part of your living room.

    Good luck with it all!

  7. Did that, a couple times. Jump 1 employee to four by raymorris · · Score: 4, Insightful

    That's what I've always done, grown each business slowly, organically. I've since learned that there are two types of companies that work well - tiny ones that basically provide the owner with a job, and larger ones run by a management team.

        What I did for far too long was deal with payroll, unemployment taxes, health insurance, sick leave, etc for two employees. That was a mistake. I should have chosen to either stick with just me and a part time helper, or make the jump to six or eight employees. That jump requires a leap of faith, some investment and a marketing campaign. Not making that leap meant that the business was dependent on one or two long -term employees who occasionally get sick, leave the company, etc.

    Be tiny for a while until you figure out what you're doing. That may mean doing your business and a day job for a little while until the business provides you with a full-time income. Once it pays you $60,000 / year, then decide to either stay at that level or increase revenue by 500% quickly. Especially after the changes in the last six years, being an employer takes a lot of time and effort. Make it worthwhile. Do a POC by working it by yourself first, though.