Ask Slashdot: Best Practices For Starting and Running a Software Shop? 176
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.
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.
First and foremost (Score:5, Insightful)
Don't try to do all by yourself, delegate everything you are not a specialist so you can focus on your core aptitudes.
Re:First and foremost (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.
Re: (Score:3)
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
Re:First and foremost (Score:4, 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.
Re: (Score:2)
"Lets try this again. Have you ever been employed and paid for work in this field?"
Why is a pay check important? Having a portfolio of work, be it class projects, contributions to an open source project, perhaps having a patent granted, etc. should count just as much as earning a pay check for a few years working as an assistant code monkey to the junior developer of some corporate sub-project.
Class projects vs. professional projects (Score:5, 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...
Re: (Score:2)
Some professional environments are distinctly amateurish.
Re: (Score:2)
Re: (Score:3)
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 resour
Re: (Score:2)
Why is a pay check important? Having a portfolio of work, be it class projects, contributions to an open source project, perhaps having a patent granted, etc. should count just as much as earning a pay check for a few years working as an assistant code monkey to the junior developer of some corporate sub-project.
While I agree with the other replies to your comment (ie. it is quite different and very important), none of them seem to mention the grey area here where you are right. That is, having a portfolio of unpaid work can be plenty in order to get a low to mid level developer job.
However, the question was about a lead developer position. At that level, you can disregard the "developer" part in order to answer this question as it applies to practically all professions. It doesn't matter how awesome you are at the
Re: (Score:2)
Eating is kind of important.
Re: (Score:2)
Not true. We hire people out of college all the time and value their work to some degree. We just don't make them lead developer on hire.
You need a few things to be a senior developer. Having CS skills and training is obviously a big part of it, but being able to deal with other people, understanding the tools we use, and understanding the bottom line in business are just as important.
A Master's degree helps to the extent that you used that time to train yourself up on things that would be useful in your
Re: (Score:2)
Paid job experience can be very narrow and misleading as an indicator of future success in another technical job role. You can spend decades coding the same paradigms that happen to fit your employer's specific industry. Worse, you may fall into specific patterns and jargon specific to one particular employer. Formal education is specifically designed to handle a broader range of problem solving and knowledge; and it proves a candidate's basic work ethic.
Job experience helps to temper idealistic expectat
Re: (Score:2)
Re: (Score:2)
So true. It takes a lot of patience because it will be like that at a lot of jobs and you don't want to piss off the wrong people.
Re: (Score:2)
Fortunately, most academic projects don't need to be maintained beyond the semester, much less from one week to the next. It might be a good topic for freshman to learn to use version control, but that would be a relatively small part of what someone goes to school to learn.
IT vs software development (Score:2)
I'm not sure this thread is giving the poster enough credit it depends how hierarchical his last job was but in my experience IT/systems admins can have WAY more business experience than software developers. Often they handle purchasing of IT equipment meaning interviewing users and determining needs, specing out the boxes, finding a vendor etc. Since the users cross the corporate spectrum you get exposed to the business practices and relative skills of different departments which can help greatly when you
Re: (Score:2)
Speak for yourself. We don't all come from some place where you get a Bachelor's from the back of a cereal box.
Re: First and foremost (Score:5, Insightful)
Re: First and foremost (Score:5, 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.
Re: (Score:2)
The Payroll/HR stuff can be contracted out - especially if you don't need a full time person to do the job. Our neighbor works as a consultant providing exactly these types of services. If you become successful, and you grow then you can hire a fulltime HR/Payroll person..
That makes it easier to focus on your core functions.
Re: First and foremost (Score:1)
Get an actual customer first. An accountant and lawyer are a waste if you're not actually conducting business.
Re: (Score:2)
Re: (Score:2)
If you create the product yourself you don't need an accountant until you sell it.
Re:First and foremost (Score:4, 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'.
Re: (Score:2)
Re: (Score:2)
You are logically required to contribute to the society that promotes your opportunities for 'income'. Failure to do so, means that you are parasitism on those who do and just like all parasites, you should be targeted, and eliminated. The greater the parasitic impact the greater the penalty, get past a million and loss of all profits during that period, past a hundred million and destruction of company is sensible because of the extreme damage done to the country by theft of social, security and infrastru
Sorry, you'll have to outsource. (Score:5, 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.
Mod parent up. (Score:3)
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. Th
Re:Mod parent up. (Score:4, 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!
Re: (Score:2)
Re: (Score:2)
I agree. You have a good idea and domain knowledge. Next up is finding the passionate hacker that can say "yeah but" and get all the crap out of the idea, figure out how your idea for an internal document management system could be GoogleDocs instead etc. Sometimes it is the business person that finds the market and sometimes it is the technical person that finds the problem that the idea solves.
Re: (Score:2)
Are we talking founders in general, or founders of companies that survive long enough that we've actually heard of them?
Re: (Score:2)
- More likely to get training when you're starting out and wet behind the ears, be surrounded by people with more experience you can learn from, and not have to be the guy with all the answers when you're so junior.
- A certain level of job stability and good benefits when you have bills to pay, and people you're supporting.
- Something recognizable to other employers for your
Re: (Score:2)
Re: (Score:2)
Job security has its own value, along with enjoyment. You can't base everything off of the pay.
Job security is a myth.
You're only chance at job security in a large company is to do what the GP stated, "so they can hide in a corner doing minimal work while collecting a mediocre salary".
Those tireless technical people will actually have better job security at a start up or small shop. They often need a lot of things that large companies frown upon, like flexible hours (to support binge sessions of 18hr days busting out some new thing), some level of control/authority over design and business decisions
Re: (Score:2)
Surely what he needs is the "opposite half" of himself - a great developer who is bad at (or just hates doing) the things OP is good at?
Now whether such a person would be willing to take the risk on an employer with no track record is another question. Possibly, if one had a row with the boss over a fundamental point like whether a utilikilt constitutes business attire or where the { and } should go; but I reckon he might be more likely to find one as a partner.
Re: (Score:1)
So you're saying there's a chance....
ALRIGHT!
Re: (Score:2)
They said that to Mark Zuckerberg also.
Zuckerberg had two things this one doesn't - a product and users.
Re: (Score:2)
On Facebook, those are two names for the same thing.
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Sorry, that wasn't my intention. The poster had asked a question, so I just posted the first site that came up on google, which just happens to do a good job of answering it, pictures and all.
If you scroll to the bottom of the page (the "after" pictures), you'll have to admit that the end results are pretty good - and btw, fully functional in *all* respects in most cases :-)
Re: (Score:2)
So you don't agree that someone should be dissuaded from blowing their brains out on starting a software shop when they have no domain experience?
His position is the same as someone posting "I've delivered fresh fruit and veggies to restaurants for years. While I have no actual experience running a restaurant, I want to start one. What do you suggest for cutlery, seating, and wine lists?" No info about the type of clientele he wants to cater to (same as the poster) or the type of product he's planning
Outsource (Score:2)
When you setup up accountancy and have a lawyer, you can create a development team. Depending on your domains, expertise, and scale you want to enlist people for domain analysis, requirements engineering, software design, programming, UI design, etc. As it is too expensive to hire so many people, it might be best to outsource that to freelancers. Therefore, you need an appointment with your lawyer to draft the necessary contracts.
Re: (Score:1)
This is the best high-level advice I have seen so far in this list: business infrastructure FIRST!
Don't forget, that includes a "business model" (basically, what do you plan to offer and how will you make money in the process of delivering it) plus "customers" (you know, the people that pay for what you plan to offer).
Good ideas are important, but a business really needs the model and customers. Otherwise, it is called a "hobby".
Good luck. :-)
Write software (Score:2)
As if you are the one who maintains it.
Re: (Score:2)
Write software as if you are the one who maintains it.
... and lacking experience and having only some letters next to your name... you will be the one who maintains it!
Re: (Score:2)
So just make sure you will understand it. Others need not.
Get a sales force and some customers (Score:4, 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.
Re: (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
Re: (Score:2)
If he were going to start the next Google, he would be talking to his venture capital friends and his other advisors, not to AskSlashdot.
Re: (Score:3)
"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...
Re: (Score:2)
Which one of those is "a software shop"? None of them.
Re: (Score:2)
"Business is about sales and customers"
Where does it says it's talking about just "software shops"?
Re: (Score:2)
for a startup, "sales" is getting funidng and then getting aquired. "customers" is VCs and larger slower companies in the same space. nobody gives a fig about any users.
Re: (Score:3)
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.
Re: (Score:2)
"Yes, they're big. But no, you won't be one of them"
No, I won't. My point is that these companies have forced us to "think out of the box": they show that the old "business is about sales and customers" is the absolute truth no more.
Re: (Score:2)
Bull, all of those businesses listed have "sales" and "customers". They survived the period where they did not have enough sales on VC and angel funding, loans, and lots of debt where needed. But once they grew past that, once they shifted from "projects" into "businesses", they had customers. We, the average users, are not their customers. We don't pay them anything. Ad agencies pay them, big companies pay them, or buy them out-right. Those are their customers; they are the ones who keep the lights on in t
Opening a software shop is not how to go about it (Score:2)
Did that, a couple times. Jump 1 employee to four (Score:5, 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.
Re: (Score:2)
Instill confidence through source escrow (Score:2, Insightful)
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 custom
As far as building a team goes... (Score:2)
Re: (Score:2)
t 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.
Sure you do. The person who wrote the bug or badly implemented feature gets first-hand knowledge of how it impacts the customer, rather than filtered through someone who is just playing "broken telephone" and doesn't have a working knowledge of how the thing actually works.
They also get to find out that 3/4 of the "must-have" features that "the customer requested" were not customer requests.
Besides, many support contracts provide for direct access to an engineer in those cases that require / pay for it.
Manage the Culture (Score:2)
Above and beyond any specific policy areas such as coding standards, seniority mixes and son on, the biggest and most important thing to manage is the overall software development culture. If you can energise the culture, and inspire people to believe in the mission, to fight for it like their own flesh and blood, as well as to honour each other's diversity of perspectives, you will achieve far more than by drawing policy lines in the sand. Keep it fun. Make the crew feel special. Give them a feeling that t
Keep the money close (Score:2)
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
The two "best practice" points that I know of are linked.
The first is to have a great deal of money - far more than you could possibly think is necessary.
The second is to be very careful, to the point of stinginess, on what you spend it for,
I would work on the assumption that it will be a year before you see any invoices getting paid and during that time you will have to pay out for both the startup costs and the people you employ. Since people will be the single biggest cost item, employ as few as is p
Re: (Score:2)
The first is to have a great deal of money - far more than you could possibly think is necessary.
1. How much will it take.
2. Quadruple it.
3. Add a zero.
Youre going to get a lot of stupid advice. (Score:4, 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.
Know what you're going to do (Score:5, 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!
Re: (Score:2)
Re: (Score:2)
You can start a software shop on a $0 budget, but you will only get volunteers.
Well, let's revise that, you need your domain name, website, incorporation papers, and contracts with your volunteers. It's not $0, but it's not several thousand either. I've offered some of my free time to a group doing this; though it took some convincing from me that getting a proper contract written up was infinitely safer for them. Everyone just offers their free time, and the project gets built; end result is getting everyo
Re: (Score:2)
What do you need these volunteers for? If you can't do something yourself, you have to hire someone to do it for you, however most businesses start off as a one-man shop. Many of those never grow beyond that, they provide the owner a good income and that's it. Many owners may not even have the ambition to grow further, to start having to manage people instead of doing the real work (which they enjoy doing). That accounts for all businesses, including software businesses, this are just businesses where a per
Re: (Score:2)
By volunteer, I mean someone offering skills in exchange for share of future profit (which isn't always monetary). For the project I'm "donating" free time to, there is no expected future profit; I'm doing it because the project seems fun, others want their name in the industry, a mark on a resume, each is getting paid in some way that isn't monetary. Similar to coding for FOSS projects. For my game project, should I ever decide it's worth doing, the payment would be share of the company which requires the
Spotify engineering culture (Score:1)
There's an interesting video about software shop culture from Spotify: https://labs.spotify.com/2014/03/27/spotify-engineering-culture-part-1/
Misery (Score:1)
So yu want to be a software shop... (Score:2)
The best replies I have seen are from Zurk,& Kohath so let me add to that.
Either develop a market or a product that will fill some segment of a market, first before you do anything.
Now let me suggest that you target a market where the predominant players have become lazy and charge a LOT for their software.
This company Zemax started off when optical design software had a few big players. Their software, on average was selling for $30.000 US per seat. The company founder got a PhD in optical design an
Re: (Score:2)
but he still does it because he loves what he does.
A very, very relevant piece of wisdom contained in your advice.
don't let customers walk all over you (Score:2)
Especially in software engineering, which is notorious for being difficult to estimate, customers are always paranoid that they are getting a bad deal, and often compensate by making excessive demands. They will try to put the screws to you, threatening to take their business elsewhere if you resist their extreme demands. You have to finesse that kind of pressure. Not an outright, flat no, but counterproposals that won't break your company. I've seen more than one business fail because they didn't push
It is a BUSINESS (Score:2)
Two cents... (Score:2)
Your questions on different tools/languages do not really make sense unless you are clear about the product you are pursuing. The same about senior/junior programmers.
Though you don't want a take on Agile/Waterfall, from my experience any project which involves serious "design" works better in a waterfall approach because most of the phases of "design" may not be flexibl
Hiring people with a clue is harder than it looks (Score:2)
At a consulting company I used to work at we defined our "core processes" and in a bizarre act of simple self insight - probably because it wasn't billable - they found we had two:
1. Sell
2. Deliver
You're the system architect, are you the one doing the selling? Because I can't stress this enough, if you're not making sales you're going out of business fast. Even if you don't need a traditional salesman somebody has to promote the product in all sorts of media and get the word out to all your potential custom
Some easy and obvious advice. (Score:2)
- Make sure the everyone understands and agrees with the big picture.
- Make sure the people are invested in the end result. (this with the point above says that outsourcing is not the best solution)
- Be consistent, thorough and write high quality software. Coding guidelines and a clear process that everyone understands and follows will help with this.
- Understand that the idea is more important than the implementation, but a poor implementation can ruin a great idea.
Getting Real (Score:2)
Just read Getting Real [37signals.com]. I was thinking of recommending their second book, ReWork, but it's mostly a rework of the first. You either get Getting Real or you don't, and if you don't get it, you have problem about getting real.
It depends (Score:2)
Most of the answers to your questions are "it depends" I don't understand what you mean by a "software shop" - is this a consulting company, a company that produces a large scale product, a company that produces a small product, an online service or what?
Your ratio of junior to senior developers depends on the kind of product you're producing. If you have an application that has a big, overarching architecture and then lots of relatively simple modules for specific cases, you want many junior developers t
Buzzword bingo, but with sincerity (Score:2)
Retain a consultant with a proven track record to implement your processes.
Hire only senior level devs who can do solo heavy lifting across your technology stack.
Deliver small increments of potentially shippable product.
Insist on emergent architecture.
Empirically adapt into better processes.
Small? Specialize and get billing, taxes, ... (Score:2)
Small? Specialize and get billing, taxes, legal and ERP covered. Legal and taxes are other people, billing an ERP can be done with online tools like FreshBooks or small to midsized softwarepackages like Lexware.
What practices you need is up to you - especially if you code alone.
It also depends on the code you write. If it's just custom ABAP scripting for a handful of clients at a time, point and click testing and a few manually checked testpositions ought to be enough.
If you want to deliver software to a wi
Ask these questions first (Score:2)
Before you think about how to run your shop, ask these questions:
Do you have a product?
Is there a market for that product? How do you know?
Do you have a business plan including a marketing plan?
Once you get past those questions, the rest is easy. Outsource anything that doesn't make sense (HR, accounting, payroll) and keep your core expertise in-house. Don't obsess about coding standards, etc. until you have cash flow. It's far more important to do your utmost to get the business making money th
My worry is not your domain experience (Score:2)
My concern is not your domain experience, but your business experience. It sounds like you're approaching things from a largely technical viewpoint, and that's going to get you in trouble with running a business. Your focus, first and foremost, should be on revenue, a product portfolio, and a plan for growing the customer base.
Sure you'll need an accountant and should outsource your payroll and get a corporate lawyer on board and all the other things people have advised you to do, but first and foremos
Make it require outdated browsers and Oses (Score:2)
Then turn around and offer it fix it for a very inflated price once websites wont render anymore after you force them to use your product. Make sure it ties into as many business processes unrelated to your product selling points as possible so your customers can fire people who do the things your software does. Therefore can't leave you when done.
You will go well in the medical industry especially.
Standards and methodologies (Score:2)
I want to chip in about the general topic of standards and methodologies. Please remember that one isn't (necessarily) better than the other - they are all simply tools working towards a goal and you use whatever tool wor
Not looking good (Score:2)
You haven't even started and you are already bogged down on "coding standards" and "best practices."
In The Beginning only one thing matters: robust code that does what you want it to very well. Maintainability? Pah - you need a future for that to matter. Best practices don't matter if you are bankrupt, or have a product nobody will touch.
Personal experience as an employee (Score:2)
First, find some area with a high cool factor. Cool can be substituted for almost anything else, like management.
Find potential employees who are obsessed with your cool idea/company. There are two equally important characteristics that these people must have: they must be really smart, and they must be ready to do anything to make the cool happen.
Promise them two things: they will help change the world, and any sacrifice they make now will pa
Git, Redmine, Jenkins (Score:2)
Coding standards: pick anything and stick with it. Use Google's. Why not? (Haha I note they are using svn.)
http://google-styleguide.googl... [googlecode.com]
https://google-styleguide.goog... [googlecode.com]
These types of decisions are many times arbitrary and one valid approach rarely is any better than another.
Draw a line in the sand (Score:2)
Don't listen to naysayers...here's my experience (Score:2)
Re: (Score:2)
Contradictions here:
Pay them as sub-contractors
... and ...
Have a senior programmer mentor a low-level programmer that would include code reviews and/or doing some lower level support for the senior programmer.
Even if they normally telecommute, that doesn't make them a sub-contractor. What makes them an employee are things like being mentored, being given detailed instructions on how to complete the task, etc.
Here's what the IRS [irs.gov] says:
How do instructions and training affect the employment status of a worker?
Instructions and training provided to a worker are important factors to be considered. If you give the worker detailed instructions on how work is to be done or train the worker to perform tasks in a certain way, the worker may be an employee. A subcontractor does not need or receive detailed instructions or training on how the work should be done.
Re:My way or the highway (Score:2)
If they do it wrong, tell them to hit the road.
Re: (Score:2)
"I work at a company where there haven't been coding standard until recently, so there were many years where a few programmers just made stuff work. Well now you come up behind them and it may take you hours to understand code that you could have understood in 30 minutes or less if it was readable and maintainable code."
Yeah, well, you know, owning a business is about trade-offs. Maybe if they were focused on processes and standards they wouldn't have been able to focus on producing stuff that just worked
Re: (Score:2)
Really good advise about adding overhead. Trying to choose the perfect coding standard, tools, language, etc. should not be the thing to spend time on at this point. If that is the thing that interests you most, then just keep this as a hobby/self-guided project experience for future job interviews.
But for a commercial product - just choose tools/languages that you already know that are reasonably applicable to the task at hand. However it should be something mainstream that will be supportable: new hire