Paid support for web-frameworks - web-frameworks

This may sound strange but sometimes when your ASP.NET webapp isn't working and you can't tell why, you call Microsoft, pay them something like $300 and get about 1-3 weeks of 1-3 people looking at your configuration, memory dumps, sometimes code... but usually not the db, and with a fairly good percentage they help you fix your mistakes, without necessarily up-selling you.
I found that Novell would like to offer that for Mono. Everyone knows MySQL offers it for their clients, because it was part of the reason they got a truck of money to swing by one day to change the name-plate on the door.
I'm curious if anyone has found people for the support of these, and how they'd rate their experience:
Django
Rails
Grails
JRuby
Mono [ratings]
add your own.

I haven't ever looked for paid support for these open source technologies, but in general I would guess until there is significant market penetration there won't be a business case for 'dial in support' of an app built by a third party.
In general, you'll be looking for a niche technology expert consultant that will probably charge you an hourly rate to look at your problem.
For django - look at djangogigs.com, or post on rentacoder.com I suppose.
Each usually has an irc channel - you could also ask general questions there, or try to find someone for hire.

That niche is typically handled by 2 groups I believe
Software component developers. - I get a lot of my presentation layer support from DevExpress since I use their widgets for my GUIs for instance. In fact, typically I don't use a technology in an official capacity unless I have identified a dependable support channel.
The issue you raise with Microsoft is handle by abstracting your problem before reporting it. That's a common law with most commercial support channels: When an issue involves 2 vendors, they will blame each other! Your job is to first isolate the issue before or during reporting.
It's hard, I know, but that's why you get paid the big bucks :-)
Is to bring in an outside consultant that should be able to study your system and do what we described in part 1 ( above )

Related

Software platform for a scalable server-solution that will serve an iOS client and a web frontend

I'm about to start work on a project that will contain an iOS client, a server backend and eventually a web client. The service will start small, but might potentially become fairly large in terms of number of users and data transmitted.
I have very little background in server programming (other than having a longer Linux phase back in the 90s), and mostly just do frontend dev work, with my primary platform and language of choice being iOS and objc/swift. Now I'm in the position where I most likely will be hiring a full-time dev to work on the backend and web frontend, starting in January, but I honestly have no idea what software platform I should be basing the server-side stuff on, and therefor no idea what I should look for in a new hire.
What do people recommend for a server-side software platform for something that needs to be very scalable? I'm thinking we might to Amazon EC2 for the hosting, and I think it might be easier to find .NET devs here, so I'm kinda leaning towards that, but I don't want to base such a crucial decision on just what I have at hand here now.
<wry>
Follow the fads! Pick the flavor of the day for every piece, that way when the fad fades it will be unsupportable and undocumented.
</wry>
<expensive style="slow:10; methodical:7; costOverrun:50%">
Oh, wait, no... Perhaps find an expensive consultant with comfort in all the stable and long-term supportable candidates and map out the data structure and needs for performance for your app.
</expensive>
<structural>If you have table based data pick something SQLy and if you have tree based data go for something less SQLy (maybe not all the way to M but who knows...).
If you are competing with another product choose whether you are going for quick turn around feature adds, performance, stability, or some other competitive point.
Decide where you want to draw the line on how much you want to have done on the server vs client. If you invest in the server, you can get great performance and reduce platform variability. However you will need to build security in from the ground and stay on top of it. If you process on the client your performance will appear linked to the customers's investment in HW.</structural>
<nextSteps>
Your bounty is running out, and you haven't given us much info to help you pick a platform. I suggest identifying as much information as you have and decide if you can disclose enough to get help in this public forum or hire someone you can get to sign a non-disclosure agreement so that you can really dig into the architectural requirements.
Please note that http://norvig.com/21-days.html Peter Norvig (read to see why he is authoritative) quotes Alan Perlis: "A language that doesn't affect the way you think about programming, is not worth knowing". The architecture question should be answered by someone who knows enough languages and platforms to understand the way that programmers who use it think. You REALLY don't want someone who know Java and can read someone else's php to write your php. You want someone who can think in the language you choose. You want an old experienced programmer who is multilingual to review your product to help you identify the language and platform that best meets your business needs.
</nextSteps>
Some of this is tongue-in-cheek, but perhaps the best advice I can offer you is to hire the best person in your market and trust them.

How to evaulate the design of a brand new application which falls into fairly unfamiliar knowleadge domain to you?

Recently I participated in designing & writing of an application which my team was given complete requirements and had to basically design and code it - it was about automation of 3rd party handwriting recognition platform to interop with a couple of our systems. Now a few months after the customer called with what seemed to be at first glance a minor issue, but after investigating it turns out that the whole application requires re-design just to fix this inaccuracy (it's easier to re-design then patched).
I personally don't think the application was particularly badly designed by any of this points mentioned on this thread but just that there was way to many small unknowns for us and looks like have now accumulated into a major design flaw - something we basically failed to see. All those small factors in the design stage seemed be insignificant & ignorable so we thought we are doing ok. Now with the problem occurred it it seems silly we couldn't spot it at design time but I guess we ignored some 'small' details & nuances which turned out to be significant after all.
So is there any approach to take when you are entering the design stage of an application the you are not too familiar with but it's design (falsely) seems to be more or less straight forward (create tables, write BOs, write UI etc) so that you can increase you chance to foresee this type of pitfalls in the implementation stage ( or at least certainly before customer deployment) ?
PS: Sometimes we hire experts to help like mathematician one time, or geographical guy another but who can help us incorporate a third party platform into ours except us
I think the approach must be to find the "best practices" in the domain. Each domain has procedures in which things had been done always; it's often forgotten by practitioner what the rationale for these practices originally was. As a newcomer, it is good to find out what these best practices are, and to follow them - blindly.
That way, you have a good chance to avoid making common mistakes, and if you do run into problems, there is a chance that these problems are typical for the domain, with well-known solutions/work-arounds.
All speaking in the abstract, of course.

Appropriate use of Grails, Rails, etc?

We've got an Excel spreadsheet floating around right now (globally) at my company to capture various pieces of information about each countries technology usage. The problem is that it goes out, gets changes, but they're never obvious, and often conflicting - and then we have to smash them together. To me, the workbook is no more than a garbage in/garbage out type application waiting to be written.
In a company that has enough staff and knowledge to dedicate to Enterprise projects, for some reason, agile and language/frameworks such as Rails, Grails, etc. are frowned upon. That said, I can't help but think that this is almost a perfect fit for the need, given the scaffolding features for extremely simple implementations of capturing raw fields with only a couple lookups (i.e. a pre-defined category). I'm thinking this would be considered a very appropriate use of these frameworks.
Has anyone worked on these types of quick and dirty apps before in normally large-scale, heavy-handed enterprise environments with success? Any tips for communicating this need/appropriateness to non-technical management?
The only way to get this implemented in a rigid organization is to get this working and demo it -- without approval. It's very hard for management to say no to a finished project.
I work for a really big company & have written many utility apps based on Rails (as well as contributed to some larger Rails projects). That said, the biggest concern is not the quality of the app, but who's going to support/maintain it when you leave or get hit by the bus.
IMHO, The major fear that an enterprise organization has - especially if the application becomes more critical to it's core business - is how to support it. If it doesn't fit into it's neat little box of supported technologies, it's less likely to happen.
Corporations have been bitten by this many times in the past & are cautious when bringing in new technology.
So, if you can drum up more folks to learn Ruby/Rails in your group (or elsewhere in your company), you may be able to make a good case for it. Otherwise, sad to say, your probably better off implementing something on Sharepoint :-(.
If you already have a Java infrastructure, then creating a Grails app will require little to no additional IT ramp up to support and maintain. The support and maintenance cost and effort should be the same as for a Java application (i.e. Grails apps run on Tomcat, use the same JVM, use the same diagnostic/profiling tools, etc.).
In my experience, larger IT organizations have a harder time supporting Ruby when its not already in the toolchain because its a new language, new deployment environment, and requires a considerable amount of support and maintenance ramp up.
I would develop a minimal viable product, then make friends with someone in IT who can help you deploy it into a staging or production environment. Then get a few of the users to hop on board and test it like its a Beta product. After that, open it up to a larger audience.
So as others have said, forgiveness over permission, but be smart about the impact on the IT organization.

Places to find a group for online summer project

The summer is coming up and I will be having a lot of time on my hands. I thought spending the time collaborating on a project online with several other passionated programmers somewhere in the world would be a great idea. I've never tried online collaboration before although I am used to working in larger teams and using source control, so it would mainly be the lack of direct communication that would be new to me. I would be interested in starting a project with programmers around my own level or (preferably) better and finishing the project over the summer/fall.
One problem, however. Where would I go about finding people for such a project? I'm not interested in joining an on-going project but rather be part of a new one. Certainly there must exist sites online where this is possible? The project properly wouldn't huge in any way. I'm thinking a little cozy project such as a arcade 2d game, a subtitle site, a world cup stats tracker or similiar.
Also, what would be a better approach. Finding the people for the project and then come up with an idea for the project or putting an idea out there and see if anyone was interested?
PS: If anyone on this site find the idea interesting feel free to post here or PM me and we'll have a talk about it.
The Google Summer of Code is really perfect for that (and there usually are very interesting projects to work on):
Google Summer of Code (GSoC) is a
global program that offers student
developers stipends to write code for
various open source software projects.
We have worked with several open
source, free software, and
technology-related groups to identify
and fund several projects over a three
month period. Since its inception in
2005, the program has brought together
over 3,500 students and more than more
than 4,000 mentors & co-mentors from
nearly 100 countries worldwide, all
for the love of code. Through Google
Summer of Code, accepted student
applicants are paired with a mentor or
mentors from the participating
projects, thus gaining exposure to
real-world software development
scenarios and the opportunity for
employment in areas related to their
academic pursuits. In turn, the
participating projects are able to
more easily identify and bring in new
developers. Best of all, more source
code is created and released for the
use and benefit of all.
Go check fast if you can still enroll.
To expand on Symen Timmermans answer, non-profit agencencies traditionally do not have the budget to fund many of their IT needs and would probably really appreciate some volunteer IT assistance. I would think you could easily muster up a summer project by approaching some agencies. Be clear that you are offering your services for free.
Besides gaining some exposure to some real-world problems, this may be an opportunity to network within your area. And it also looks pretty good on a resume.
This, perhaps, will lead you in the direction of a project. From there you could try contacting people you know or perhaps ask around at a local user group to see if anyone is interested in collaborating with you.
The OpenHatch.org website exists to help connect people with tasks that need to be completed on various Open Source projects, and to connect them with mentors in the target languages/technologies.
On the Volunteer Opportunities page, you can search through hundreds of open tickets in over 250 projects. On the People page, you can search for others who are willing to mentor you in the target subject with a search like can_mentor:"Python", or search for others near you, and more. The more people that join on the web site, the more visibility that it gets for more projects and people to come and participate, so why not join in the fun?
Why a programming project?
Your tag 'nonprogramming' sparked some ideas. Why don't you research possibilities in your neighbourhood for things like community projects? There might be plenty of organizations looking for you as a volunteer.
Though those projects might not seem as challenging as an innovative programming project can be, they can be really rewarding, especially if you directly witness the benefit your collective effort provides to others. Also you might learn a new skill, meet interesting people, and learn new things about yourself.
Think about it.
First you'd have to think about what kind of project you wanna do.
Game, etc..
Then I would look for a Forum / Community and start looking there for mini-projects.
I however have no particular site to offer you currently.
Also I believe the communities will depend on the languages etc... you are comfortable programming in.
Cheers,
Build It With Me is a website made for connecting developer and designers with ideas.
To find people to work with you on a new project, you have :
to go where they are
to convince them to work with you
Programming folks can be met directly on IRC. Go to a channel corresponding to the computing language you like, and you'll met great people, knowing your language and wasting their time on IRC. You have then to convince them to stop wasting time saying nothing on IRC and to go with you on a new project.
Summer is already well started, so you should choose a small project that can be useful to anybody. People will work with you if the project you propose them is interesting enough for them. Here is an idea of a useful tool that does not exist yet :
http://ha.ckers.org/blog/20100613/web-server-log-forensics-app-wanted/
You could try going to SourceForge and finding a new project or creating your own. They have a large community there so you shouldn't have any trouble finding people to work with.

What are common pitfalls for startups driven by software developers? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
Myself and a friend have created a startup, but we are both software developers. We are quickly realizing that we are going to have to deal with and understand, all of the intricacies of business.
Are there any resources that can help us avoid common problems encountered by the non-business-savvy? How do you balance creating your product with maintaining realistic goals to reduce time-to-market.
It's like you need to take off your programmer hat and put on the business hat, and vice versa.
My software business was in a very, very small niche market centered on computer aided design of the magnetic layer in hard disk drives (www.micromagnetica.com - please note that I am in the process of closing down my business as the number of potential customers has shrunk to the point of making the business not viable. The web site reflects this point). I have been in business for 10 years and have done pretty well. My competition was a series of commercial and open source programs (mostly university or government sponsored), so, although the market was small, I was able to create a unique product that sold well.
Pitfalls:
Putting your needs above the customer - Customer comes first - always listen to your customer's needs and make sure your development follows their needs rather than yours. Every programmer has a list of things they want to learn or do. Don't use this list a guide for your development unless it solves an issue or helps create functionality that the customer wants/needs. This one point can make or break your company.
Not clarifying your business idea - Put together a business plan - it will help clarify what you are doing. Read the book, "The Art of the Start", by Guy Kawasaki to get the business perspective of starting a business. If you need money then you can use this to help secure financing from either angel investors or venture capitalists. Otherwise, it will help clarify what you are doing.
Not marketing yourself - Do this the following:
(a) Find a good name for your company and secure your domain name. Even though a bad choice for company name won't kill you (my first company was called "Euxine Technologies" and it doesn't get much worse than that), but my product sold itself and was not encumbered by the name.
(b) Put together a web site as soon as possible with a good description of your product. Google will eventually find you and traffic will start flowing to your site.
(c) As soon as you have a working prototype create a mechanism where potential enthusiastic customers can download it and start helping you find bugs. You can make this the full version with a limited time or a limited version with no time limit. I have done both and both work. Make sure that users know it is a beta (or alpha) version of the software. The most important part of creating the beta user relationship is they will ask for features that you did not think about and this could take development along an otherwise unforeseen (and lucrative) path. This will also give you a way to keep your hand on the pulse of potential users.
(d) If your product is applicable to a particular industry go to relevant conferences
(either get a booth or make contact with potential customers) and sell your product through demonstrations, flyers, and the distribution of free limited versions of your software on CD.
Not Branding yourself - come up with a logo that you will use to identify you and your product. This logo will show up on your web, your business stationary, and business cards.
Not Managing your money - initially there is going to be a long spell before the money starts coming in. Be very frugal with your seed money. The money will not start coming in the moment your deem the software is ready to sell. There could be a time-lag of at least a couple of months between when people show interest in your software and when the sale comes in. This will depend on how much your software costs. The more costly the software the longer the time-lag.
Once you start making sales, there will be seasonal variations in how much money comes in. Always try and keep at least 6 months worth of money in the bank to cover salary and operating costs.
Not knowing who your customers are - Once you start selling software, make sure you know who your customers are - they might be different from what you thought they were. When I started my software company, I thought my customers would be all R&D engineers who were doing research in magnetic layers. After a while it became clear that most of my users were the subset of this group that couldn't program, but understood the physics behind the software.
Not acting in a professional manner - When interacting with customers be professional - act and dress in a professional manner.
Creating a product because the technology is cool, rather than because there's a market.
Creating a product because you want it, rather than because there's a market.
Creating a website that lists the features of your product, rather than the benefits.
Assuming that advertising on Google AdWords will work for you.
"Build it and they will come."
The #1 rule of StartUp Club: Every startup should have both nerds and businessmen.
Most computer nerds don't know anything about how to run a business or market and sell a product. There should be at least one businessman at your top level (but watch them like a hawk, lest they steal away with the fruits of your labor :-).
Not understand/knowing who you are competing with.
Not understanding/knowing your target market.
Not including your customers in the design phase.
Not spending enough time gathering product requirements.
Spending too much time gathering product requirements (analysis paralysis).
Not enough marketing.
Have a strong team so you can trust the people you hire to do their job.
Be prepared to do whatever it takes to succeed (ethically of course).
Not having a direction (business plan).
Not having goals or having unreachable goals.
Not understanding cash flow. There are a vast number of profitable businesses who do not succeed because of clash flow issues. Just because you sold a 1000 units doesn't mean you can afford to pay your staff and or other expenses. As I have heard it before "Cash is king!"
These are just some things that might get in your way. I would recommend not only worying about the business side, but worry about what are reasons software projects fail. There are numerous books about how to collect requirements, produce quality code, testing code (e.g. TDD), project methodolgies (e.g. XP, Agile, ...), and many more topics.
Your startup will likely fail if you can't deliver a product or if you can't deliver a product that doesn't solve the problem.
Finally, it is hard to judge success if you don't define what it means to succeed. Is it staying in business, doubling your revenue in 1 year, breaking the $250,000 mark, or doubling your staff size. You need to define what it means to succeed not only in your business, but with each product you create.
Do your homework. If you are in the US, the small business association is a good place to find resources.
Trying to be all things to all people.
Often in trying to create a product that appeals the everyone, the product becomes so general that really no one can get excited about it.
In my opinion, it's better to target your product to a niche community of people with a very specific need and then fill that need better than anyone else.
Here's a common pitfall, but it's not restricted to just small companies: Lack of diversity in the management. The kind of diversity that's important is diversity of experience. I've seen a couple small companies that suffered from this pitfall. They can often go along for a while making good decisions. The problem is that it's almost impossible for them to tell when they're making bad decisions. This doesn't necessarily mean that they'll fail, it just weakens them to varying degrees.
Company Development - in the software industry you can make a lot of money (respectively to other trades) in a very short-time. most people tend to get greedy and want more money so the accept more projects and hire lots of people - but they don't develop their infrastructure, their communication-lines, their responsibilities, their developers etc. Because it costs money and you don't have a direct benefit from it and you lose your cool "flat-hierarchy-everyone-is-a-boss"-image (which is not the case anyhow)
I myself witnessed two promising start-ups fail because the grew way too fast.
So keep an eye on that one.
Shiny! Don't let developers chase the latest shiny thing on the internet that catches their attention. Keep developers focused on the core strategic needs of the company instead of steering your product in different directions as their interest is caught by other things.
There's a blog full of tips at OnStartups. A few recent, relevant posts: learn from the underpants gnomes: have a business model, and here are some marketing tips. The author is a developer-entrepreneur himself, which sounds like exactly your perspective.
Update: Dharmesh just set up a StackOverflow-powered site for just this sort of question: http://answers.onstartups.com/
Make sure you know your target users and their needs.
I worked in a really cool startup where we thought we had a great product, but we were unable to generate that great user story to really demonstrate how our product filled some need for them. This shortcoming prevented them from "connecting" with our product in an exciting way.
In my opinion, the disconnect was due to the fact that we didn't know our target users and understand their problems as well as we should have.
Sales Sales and More Sales. Plus a willingness to release before the code is "perfect" and release features incrementally. There is actually a pretty good Hanselminutes about this very topic and this very site (http://www.hanselminutes.com/default.aspx?showID=152)
Not having some people on the team with different ideas/backgrounds/personalities.
If everyone is always agreeing with each other all the time, and there isn't any friction, you aren't going to get anything done. Oh, you might be alright for a while, but if everyone thinks the same way, when you get stuck (and you will), you will stay stuck. When you're on a roll, a curveball is a distraction; when you're stuck in a rut, or up against a wall, a curveball can get you moving in a different direction. It might be the wrong direction, but at least it's a direction.
Not having enough knowledge and experience in marketing. Although selling a good product is easy.
The problem is what I call IBM OS 2- geniuses build a very good product but the product is not marketed well nor tailored to effectively massage the ears of buyers. I despise some things about business workers like short-term thinkings, perfering quick-and-dirty developers over slow-but-great developers and other issues- but they are the ones who make money and drive software into customers' hands. If a start-up does not have developers who can function effectively work with business issues- then it need to go get someone who can. Failure to do so make is what made Windows 95 a hit and IBM's OS 2 a dinosaur.
Not having a specific market in mind when developing a product. A couple of places where I worked tried to do anything and everything which lead to not enough effort on one market to get profitable first so the business could still be running.
Micro ISV links has some links that were shown in a top secret presentation I attended a little while back that may also be useful.

Resources