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.

19 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 Nuitari+The+Wiz · · Score: 5, Interesting

      Also look at oursources payroll, time tracking (this is sometimes a must for R&D tax credit) and make sure you have some financing / funding lined up. You need to have a plan to cover the first 2 years of operations where revenue will be slim.
      This will also allow you to avoid getting into the "anything for a buck" mentality.

      Don't focus on development tools / standards. Let your programmers take care of that. You might want to look for a lead developer with experience managing junior / intermediate developers.

    2. Re:First and foremost by Aighearach · · Score: 2

      The problem with that is that it leaves him hiring somebody to run his business, somebody to develop the product, somebody to manage the financials, everything. Having a Masters degree means you're qualified to be a jr-level teacher, or an entry-level employee. The fact is that if he's going to be "running" a software shop, he's going to be doing a whole bunch of things he isn't qualified for or experienced with.

      The real answer is, don't try to do that. It puts the cart in front of the horse.

      The first thing you need to do if you want to go that route is to become a Software Consultant. Gain some experience running a 1 person software shop where you're writing code that others need. Once you have a few years of experience at that, you'll be in a position to start asking about how to set up a software shop and make your own products.

      Try to understand that the degree is only useful if you want to be a teacher. Any other value from your education is what you learned; and it is a lot less, to be honest, than you'll be expected to be learning in the field from year to year on your own.

    3. 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

    4. 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
    5. 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.
    6. 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.

    7. Re:First and foremost by gatkinso · · Score: 2

      A graduate project is not nearly as fluid as a paying gig. It is agreed up front at the start of the project and generally this is what is produced. Not so in the real world.

      Then, your work is graded. Maybe not the best thing for your academic career, but in many cases you can take a C and move on. I business this is called "failing" and this means all of a sudden you and your employees have nothing to eat and all the lights turn off in your house.

      There are no advisers. There are no facilities or resources available to you save for what you can provide for yourself. The deadline can abruptly change due to funding and competition (along with 1000 other reasons).

      These are just some of the reasons why academic work is not a great measure of real world experience. Mind you I am not saying acedemic work is useless, but I definitely differentiate between the two.

      --
      I am very small, utmostly microscopic.
  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.
  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.

    1. Re:Get a sales force and some customers by Anonymous Coward · · Score: 2

      Google is well known for its salesforce and how they made Google such a success. Also it's marketing. That was sarcasm for those that can't tell.

      Based on your question, the correct answer for you is to go get a job at a large company and work your way up to middle management.

      The techie way to start a company is to have a vision and follow it no matter what. You do so in the most expedient manner possible. Worrying about waterfall vs agile is like buying a Oracle HR system for your 3 man company.

      The sales way to start a company is to identify one or more clients with a problem and basically sell to them before you even start. You usually start off with a custom solution for one company, then generalize it to other companies in the same sector, and then to other sectors.

      I've worked at companies that have started both ways. The techie way tends to be more spectacular both in successes and failures.

    2. Re:Get a sales force and some customers by turbidostato · · Score: 2

      "Business is about sales and customers. Everything else you do is completely irrelevant if you don't have sales and customers."

      Tell that to Google, Facebook, Twitter, Whatsapp, Pinterest, Skype...

    3. Re:Get a sales force and some customers by wvmarle · · Score: 2

      That for six out of at least six million businesses the amount of sales and customers doesn't matter too much, doesn't make it the new rule.

      Yes, they're big. But no, you won't be one of them. Unless you somehow win the lottery when it comes to having the right idea at just the right time.

  4. Mod parent up. by khasim · · Score: 2

    Isn't the most common scenario for these enterprises where the programmer's customers grow beyond his ability to support just by himself?

    So he starts adding people to handle the portions that he cannot, efficiently, handle himself.

    If you're going into this wondering what the "ratio of senior programmers to intermediate and junior programmers" should be then I think you've skipped too many steps.

    The same with "different tools and/or languages". The 2nd programmer uses exactly what the 1st programmer uses. The idea is to provide support for the founder so he can focus on what he is good at.

    1. 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!

  5. Youre going to get a lot of stupid advice. by Zurk · · Score: 3, Informative

    Heres the deal :
    Youre going to get the following advice :
    1. Hire a professional to run/manage/accountant/payroll etc and you can never do anything properly.
    2. Youre an idiot - stop dreaming!
    Both pieces of advice are flat out wrong.
    To start an actual business you dont need professionals, funding or being extra smart. What you do need to do is not listen to idiots and learn. thats it.

    Heres what you do :
    1. Start your business. That is - go out into the world and find someone willing to pay you CASH MONEY in large chunks for doing something. Thats at least $2000 cash on delivery of x product.
    2. Put that $2000 towards your business expenses. Now go find a lawyer who incorporates businesses federally with $2000 AND make sure you have enough of it left over for a mailboxes etc address, domain name, google apps subscription for mail, web address, business cellphone and rental meeting room in a office rental place. This is your "Start up capital" or "Seed round".
    3. Now go develop that product yourself. Send it to your client. be prepared to gain $0 from this transaction since your client will likely dump you after seeing that first product.
    4. Develop the product some more while looking for other clients.
    5. If you find any, congratulations ! You have a business!

    This is how I started several years ago. Bottom line is in 2 weeks you must be break even and in the first month you must have enough to meet payroll. If you do youre fine.

  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.

  8. Class projects vs. professional projects by Anonymous+Brave+Guy · · Score: 4, Informative

    The pay cheque isn't the important thing. Experience working in a professional environment is. The difference between how you work on a class project and how you work in a professional environment is vast.

    For example, class projects are typically:

    - very small

    - implemented by a single person or at most a very small team that does not change over the lifetime of the project

    - finished within a short period of time

    - built with unchanging requirements determined by a single authority and entirely known from the start

    - implemented with little need or regard for ongoing maintenance.

    Exactly none of those things will be true of a typical industrial software development project. The need to take these kinds of factors into consideration completely changes how you design your software, what tools you use, what processes you follow...

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.