Next month I have to lead a three day hands on.NET C# training workshop for our development group. I am new to the organization (about 3 months) and was brought in for my .NET & C# experience so I will be training the senior members of the team who are all long time Visual FoxPro developers. As a group everyone understands the need to move towards n-tier application development, but the current VFP methodology relies heavily on code behind the form.
Anybody out there have any good course outlines or suggestions for course materials? We are looking at a pretty hefty paradigm shift here and I want to start off on the right foot.
I've made the shift from VFP a couple yrs ago. First to Java. Then I moved to another company within the same industry using C#.
A couple observations based on my experience:
1) The fact that there is code behind the form is not the biggest, or even a big hurdle to jump over. I didn't have any problems with understanding that a method that I wanted to call is in a separate class or even a separate DLL.
2) Things that are different enough that it will take sometime to get everyone on the same page:
a) Inheritance/Polymorphism - It's possible to get some of this functionality in Foxpro, so the difficulty of this one depends on the crew you work with. But things that I've seen some get hung on are Encapsulation, Interfaces. Good class design many get hung up on. But I've examples of those new to dotnet adding methods that manipulate the customer class to the order class, etc.
b) Data Handling - There's a big, big difference between data handling in .net and Foxpro. There are people still clinging to VFP because they think that's the only tool that handles data correctly. Good luck on this one.
c) Collections - VFP only has arrays. I find that you use collections a whole lot more then I ever used arrays in Foxpro.
Something that I found very useful would be a fairly simple app, but enough complexity to give you enough to cover in 3 days. An order form with customer information. And the data stored in a database.
The problem that I found coming from a code behind form (and I was there myself at one time) is that you tend to address of the problem domain through the lens of the user interface. And that becomes a problem when on day one you understand you are developing Windows desktop app and then a month later you are duplicating some or all of the functionality in a web app, or a web service.
I agree with you that Inheritance, polymorphism & interfaces may be difficult areas. Also C# adds some other useful, but new things to the mix like abstract classes, structures, collections, etc.
You're correct about the code behind. But it still shouldn't be a major concern. Code's code. Where to put it shouldn't be a major concern. Especially in the beginning.
It all get's back to encapsulation. And that encompasses a lot more then just code behind. So I think you have to concetrate there. Codebehind is just a symptom of not doing proper encapsulation. In this case separation of data logic from ui logic.
The important question thou, is what level are the Foxpro guys? Are they older, more set in their ways? Do they try to create lots of class libs so their getting a lot of reuse of their code?
Again I agree. You are right in that the core issue is encapulation. There does not seem to have been a lot class libs developed so reuse will be another factor.
The guys (and one gal - my boss!) are long time FoxPro developers, but are reasonable and open to change. No one is dragging their feet in any way, but the challenge will be moving to .NET while continuing to support a large VFP application base in the organization.
The trick will be starting a low enough level to give everyone a good foundation without insulting anyone's intelligence.
To complicate things a bit more, the plan is to also incorporate a third party business object framework into the development mix. One of my tasks has been to evaluate this framework. Somethings about it I like, some I don't, but a big factor for me is the the framework developer uses untyped DataSets to back up the business object layer. No problem with this approach, but I can see that having a good grasp of ADO.NET, DataSets, etc. will be important in understanding how this framework functions and using it effectively.
I am a little uncomfortable in having the folks here blindly using this framework without some understanding of the ADO.NET at it's core.
I may have to tackle some .NET , C# and VS basis in the first three days and then cover ADO.NET in more detail later.
If they don't use classlibs in their Foxpro app, you've got some big hurdles ahead. That they sound open to change, and actually wanting to change are 2 different things thou.
It really frustrated me when I still used to attend Foxpro events, or Foxpro forums on the net when Foxpro people would complain all the time how dotnet did something in such a poor way compared to Foxpro. Or that they could do x in one line of code in Foxpro, but they can't figure out how to do it in dotnet.
Another reason why I would be hesitant to buy into their being open is I've got a bud working in a VB shop. So they're trying to transition from VB6 to dotnet. And he is frustrated because they all claim they want to do it right, but concepts like encapsulation seem to evade them.
There are a couple framework's written for dotnet by ex-Foxpro people. I would assume they selected one of those. I would have hoped that they would have left any of those kind of decisions up to you. They obviously would not have the knowledge to properly evaluate a tool like that. So they've locked themselves in without knowing the why's and wherefore's.
I started way back in Clipper 5.x (I was lucky I did not have to work much with Summer 87) and was fortunate to be mentored by a fellow who understood the advantages of developing reusable libs even in the pre OO DOS days.
When it came time to move to Windows, I went with CA's Clipper migration path which was Visual Objects. VO was ultimately a pretty good development platform (although Version 1 was pretty near useless). IMHO VO was a stronger in OOD compared to VFP and I think that gave me an advantage when moving to .NET
As I said before, the framework they are looking at is not all that bad for the price, but I think you need a decent understanding of the .NET framework to get the most out of another framework layered on top.
Apart from being very interested in their concept, and keeping this ace up my sleeve for when I find time to invest in it, I have no first had information - either negative of positive...
There tools I downloaded seems impressive - and having a good rating from the site must be a most reliable recommendation one could put on a resume I can think of.
I recently spent a good month and half writing a management application for a hair salon, and they're asking me a good question: how much am I charging for it?
I've done several similar projects in the past, but for one reason or another they ended up not getting used. One time, some moron came in half way through my working on the project, offered to do the same thing for my client for $500, and my client ditched me. The guy had no idea what he was doing, and my client ended up getting exactly what he paid for -- a botched company.
Not that I was too sure of how much to ask for back during those days, but I'm sure things have changed nowadays. Any pointers?
Thanks in advance.
Edit: I forgot to mention, the software has several functions: contact management, a periodic emailer for subscribed customers (not spam), customer checkout, a very well-decorated survey app for customers, and marketing reports that I'll be making in the future as the needs arise.
I tried looking around various salary and rates at a few websites. Things seem to have changed lately, with the average salary for developers in 2004 being around $65,000[^], and now at around $80,000 to $110,000[^]. Consultants average around $60 to $70 per hour[^].
Then again, it probably makes more sense to determine the market price of the product itself rather than the amount of work in time. Hmm...
I used to work with a friend that came up with contracts and prices and such, but now that he's gone I have to deal with the business side of stuff myself
I've been down this track in the past (10 no 15 years ago).
Do you consider this a one off project or
Do you intend to onsell the finished product?
Who is going to own the IP?
In one case I built the app with no sale price on it, simply chrged $1k support per month, starting from 1st month with a 6 month dev twindow (it was not my primary job). Client was happy as he could change his mind as often as he liked and the only thing to change was the delivery date. I supported and developed the product for 8 years and only stopped when I left the country.
Never underestimate the power of human stupidity
Now you know why I'm a contractor, you turn up for work, they start paying you, you leave, they stop. I once had a partner who was very business savvy, I went broke he walked away with the business and what's more I was happy.
Make sure you have a line drawn in the specs, this far and no more. Do get the client to sign off on the requirements, I know this sounds a little melodramatic but a 2k job can cost you 5 times that in scope creep.
Never underestimate the power of human stupidity
Hi there. I've been in the field for about 10 years as an employee and before then I just developed for fun. Before it was much easier to stay up to scratch with the latest technologies and to be sure you know what you need to know.
I've been thinking about some kind of study plan. Almost like a checklist you can go through to be sure you know where you are (knowledge/experience wise currently) and what the other things are you should know.
I moved over from vb6 to c# .net about 1 year ago. So I have development experience, but often find myself in a place where I just need to know a little bit more to do things faster.
Does anyone know of such a "study plan" or where can I find some kind of walk-through or guideline from beginner to current technology.
It's almost like just a guideline to make sure I have all I need - since the market have changed so much - so maybe like a few things one need to know in C#, then maybe some of the new technologies one should know... say LINQ / Silverlight... etc. Else maybe some RSS feeds I should subscribe to. I also have a friend who want to become a developer and this would help people like himself. Thanks.