Tell me more ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I work in a small office (only 1 designer, me and plus 1 programmer).

We have a solid background in classic ASP development and some sort of a small proprietary framework/cms based on ASP + MySQL + Javascript written line by line in here and the projects aren't so big until now and we want to step up with something more fast and secure way to develop without reinventing the wheel (again).

I have a little knowledge in PHP and .Net (C#) from some particular projects and personal learning.

We have researched various languages and frameworks, as well as some new (to us) methodologies like TDD and some version control oriented workflows with GIT, etc.

Until now we have thought in PHP with some framework like CodeIgniter or Kohana and ASP.net (C#) with MVC 3, since I can start from some knowledge I already have and maybe adopting GIT as our version control system for the bigger projects.

We need some advice in getting a new set of skills and tools that work the best for us before getting 1 by 1 and trying.

EDIT: What we need to change(maybe)
As you can imagine, we don't have a testing process like TDD or BDD and the testing is done very breafly (We have luck with so little problems after release) nor a real idea of how to use it (need more study and clarification).

We use Dreamweaver most of the time to code and need a more fast and robust development environment with an autocomplete feature like MS Intelisense and nice highlighting (I personally like to write code and have used the notepad to write almost all of my first apps, but in a profitable work with a short deadline we can't go this way. Not that Dreamweaver is bad, but it's too general and lacks some features).

I know that security is a thing to see at the programmer side, but there's plenty of frameworks with features that helps in this case and now we have a very basic and limited set of tools written by us to do this (poor SQL injection protection, etc).

Our "version control" is purely based on a network share and our machines. The final version is always the one in our file server and most of the time, when we have to make some changes, we change the files directly and upload them again. A backup of this share is made each 2 or 3 months.

We are growing up and expect to hire someone soon. Its hard to find a VBScript programmer for ASP and when we find one, the salary is to high for us by now because nobody is learning it in this days and who knows already have a job with a good one.

Final concerns: We've decided to use ASP.Net(C#)/MVC as our primary framework and use CodeIgniter as an alternative to linux servers and other projects. Thinking in joining some MS program for startups and small business to help with some costs.

We're getting Git as our vcs in our private file server for the origin and instances in each develop machine for us to clone, work and push back. We also considering a service like Bitbucket to maintain a copy on the cloud.

If some of you have any more advice or other thoughts about this I'll follow-up.

I would like to thank you all and mark many of the answers as right but I can't. I think this question may be a base of reference for small offices like us to get some points and help on the same decisions.

share|improve this question
I think we need to know what you like and don't like about what you're doing now. If you're willing to learn a new language + framework, there are lots and lots of options that are basically all reasonable. – Marcin Dec 15 '11 at 0:02
Of couse. I've edited my question to add more info. – rcdmk Dec 15 '11 at 14:56
specify what you are trying to build with 2 people only first, so that answers could be more accurate. – Emmad Kareem Dec 19 '11 at 11:22

migrated from stackoverflow.com Dec 15 '11 at 23:01

8 Answers

up vote 2 down vote accepted
+50

As I read your question, I think this is a tipping point where you have to do a strategic decision and then decide on how to proceed from there. I would condider consulting the Technology adoption life cycle (wikipedia article) and decide where I would like my team to be there.

enter image description here

Classic asp is outdated. Php using the frameworks you've mentioned or asp.net seem a very good solution if you want to capitalize on what you already have and pivot one step from the "Laggard" position towards the late/early majority. You can capitalize asp and c# know-how and jump to php or asp.net, you will gain many more advantages, one that crossed my mind is the ability to cloud deploy to Azure.

You might want to use the position you are in as an opportunity to jump towards the Early adopters/Early majority and experiment with more modern approaches such as ASP-MVC, Rails, Django, Grails. There will be a huge cultural shock in the first months, but you will discover many things that you are missing (and your competition might not) such as ORM, MVC, Enviromnent with better access to TDD/BDD technologies, tutorials about more modern VCSes (Ruby people use git a lot, I know you can do it with php) etc.

share|improve this answer
Thanks for the help. – rcdmk Dec 19 '11 at 15:40
This graphic, perhaps intentionally, does not include Geoffrey Moore's "chasm" between Early Adopters and Early Majority. Moore's influential book "Crossing the Chasm" warned that many technologies are embraced by innovators and early adopters, but that there was then a chasm before majority uptake. 10xfactor.com/colorschemes/colorscheme4/images/static/books/… This is an important consideration for evaluating the risk of adopting relatively new technologies. – Larry OBrien Dec 19 '11 at 18:33
@LarryOBrien You are absolutely right hands down. This is the very reason I decided to "ignore" that part on my analysis. If he decides to go with innovators or early adopters, there is the risk of going with something that will never uptake. But with technologies that the early majority uses this is not an existent risk. All of those mentioned are here to stay and proven (asp-mcv... this site!, Rails: twitter, spofify etc). I purposefully did not say something like... dart (or some years before... silverlight). – dimitris mistriotis Dec 19 '11 at 22:21

"Version control for some of our bigger projects" - version control for all of your projects. Period. You might not need it now until you find something serious wrong in a small proejct. VCS can save your arse.

"Network share backed up every 2/3 months" - back this up every day. It may not have gone wrong up to now, but picture the pain of losing it all.

Personally I do most of my work in C#/ASP.net MVC using MS visual studio and find it very productive for web based programming and with a large community of helpful people :)

share|improve this answer
2  
Agreed. All this it's to be changed in this new year and its why I have came here to get more points to decide. Seems that ASP.Net has better cost/benefit relation until now. – rcdmk Dec 15 '11 at 15:28
+1 - don't save on the smoke detector. – user1249 Dec 19 '11 at 11:45

Given your requirements regarding version control, anything at all would be fine - there are lots of version control systems, and there is no particular dependency between framework/language and VCS.

It sounds like you don't want to deal with anything obscure. If you pick a microsoft solution, you will get the IDE you want, and you will have access to a million smurf programmers; likewise with Java-based solutions. The disadvantage is that Java (and from what I understand of the .Net languages, them likewise) are early bound, which is different from VBScript and VB.

PHP (which I haven't used) is popular, hitting your requirements for readily available staff, and from what I've heard, not dissimilar to classic ASP (which I have used). I don't know about development environments, obviously.

You should also consider Django (python) and Ruby on Rails - they are both late-bound languages, and many, many people find them pleasant, productive, and popular with small teams.

Update:

I would suggest that you try the free solutions (i.e. everything except microsoft) on the level of installing them, and building your favourite tiny application (todo list, blog, something of that nature). Likewise with the microsoft solution, but no doubt your free trial period will be limited, so you may want to do it in a more planned way.

You could do that at the weekends if the pressure of time for real business is high.

share|improve this answer
1  
We are open to change, as you may see, and don't mind a huge change, as long as it can be step by step along with some time, but can be a change in paradigm to us. You brought some more thoughts and we are considering them too. – rcdmk Dec 15 '11 at 15:25

You might also investigate more recent and robust web technologies, like opa or Ocaml with Ocsigen

See this answer for more.

Once mastered, they will increase your productivity.

share|improve this answer
Thanks, We will take a look in that. – rcdmk Dec 17 '11 at 16:30
I've read about that and found they need an exclusive server to run and therefore need to run on a dedicated or semidedicated linux server. For bigger projects its really considerable, but for the majority of our projects, the cost implied its a disvantage. – rcdmk Dec 17 '11 at 16:50
No, you can have the same server running several applications (exactly like with PHP). – Basile Starynkevitch Dec 17 '11 at 16:58
What I mean is that we use shared online hosts (like locaweb.com.br or oulhost.com.br) in most cases. – rcdmk Dec 17 '11 at 18:28
1  
Consider a cloud friendly solution. Google Application Engine supports Python and Java. – user1249 Dec 19 '11 at 11:48
show 4 more comments

If you are open to bigger change, you may try build your backend on NoSQL (CouchDB seems a good solution because of CouchApps - you can have part of your backend written inside CouchDB itself, using Javascript). NoSQL is suited well for agile development, since data structure is free from scheme, and you can adapt it on the way with less hassle than using relational DB.

node.js is also a promising way to go, if you are going to serve many requests.

If you plan to scale off even more, look at messaging patterns and things like ZeroMQ / RabbitMQ.

I'd definitely advice to shift to dynamic languages since they allow you much bigger power in translating your ideas into code. Python, Javascript, Ruby and even Smalltalk if you are not afraid (GLASS is nice platform for Smalltalk web apps based on decade-proven Gemstone appication server that is used in big industry applications).

share|improve this answer
And if you are going to do thing like Ericsson does (telephone switches that must work with lot of concurrent data and heal from failures) go for Erlang. – herby Dec 17 '11 at 19:32
It's kinda overkill to our projects but it's not an idea to trow appart. I'm considering some NoSQL database (most precisely MongoDB) to some projects in near future. – rcdmk Dec 20 '11 at 0:00

What language/framework/workflow sets do you recommend for a small office?

C#/.NET framework 4.0/Workflow foundation +BizSpark

Why?

1-The easiest to start with: - you can find plenty of books and resources online.

2-Very good community: - probably you’ll find your question already answered, and there is good open source communities like codeplex.

3- Good price: - two words I say for small startups with “Microsoft bizspark”

4- Well structured & Rich in feature framework: - support for stuff like MVC, entity framework, easy to use TDD, and good SQL injection protection :)

5- Bizspark: - you’ll get stuff like TFS (a very good source control tool with bug tracking tool and use case tracking) and all Microsoft products for like 400$ a year.

6- Common language specifications : - you can use C# with other VB projects easily.

share|improve this answer
Thanks for the help. – rcdmk Dec 19 '11 at 15:40

Software: .Net (C#), SQL Server Express Regarding development, you can use MVC and EntityFramework. Or you can develop your own tools, like some T4 templates for code generation, and a mini ORM helper.

share|improve this answer
This is a point and I guess one of the best to follow. Since our background follows nicely to ASP.Net. We wanna hear some more people with some justifications to work out this decision. Thx. – rcdmk Dec 14 '11 at 23:07

First, I would start migrating off VBScript / ASP -- it is a dead language. I know I would never green light a new ASP-based project on general principle.

Second, for a shop that size you are probably better off moving as much of your services out to the cloud. The overhead of administering things right is just too much at that scale. I would look to something like bitbucket for SCM as they give you unlimited private repositories. For file storage, I would look at any one of the dozens of dropbox-like services. The other thing I would consider adding would be some issue / time tracking -- redmine comes to mind -- as well as some continuous integration to make things as hands off as possible.

As for what framework to use, I think I would avoid pigeon holing my company if at all possible. At that size you really need to work with what the customers want.

share|improve this answer
Our main idea is to have a strong code base to develop websites and webapps without having to rely on server components or writing lots of code to do simple tasks and is the main reason we are tending to move from ASP/VBScript. Most of our clients let the platform decision to us and the ones that dont, generally have their own internal windows server. – rcdmk Dec 17 '11 at 16:55
Right, but how long are windows servers going to support classic ASP? – Wyatt Barnett Dec 17 '11 at 17:07
One thing is sure: we'll not continue to use classic ASP. – rcdmk Dec 17 '11 at 18:19

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.