The Design of Software (CLOSED)

A public forum for discussing the design of software, from the user interface to the code architecture. Now closed.

The "Design of Software" discussion group has been merged with the main Joel on Software discussion group.

The archives will remain online indefinitely.

Getting back on track

Hi,

I'm a hobbyist programmer, having started with Microsoft QBasic way back, and then eventually moving on to fiddling with Visual Basic 4, and later VB6. I would develop simple programs for myself, friends and family to use. Testing basically involved myself and my 'beta-testing' friends running the program through various ways to see if we can crash it somehow. It was simple, but fun.

Then I got a little busier with school and work and left things for a while. Recently I started with the VS2005 express editions, and it got my interests up again. Being a volunteer with a local non-profit group, I'm currently working on an administrative support and inventory management system for them.

I've been looking around and it seemed that lots of things seemed to have changed (at least from my point of view since the old days). VB now involves something called .NET; .NET itself involves other things such as CLR, DLR, WPF, WCF, WWF... There's alot of emphasis nowadays on unit testing, source and version control, service-oriented architecture, web services and compliance...

When I first started with the project, I had thought it would be just like the old days, now there seems like there's so much more I should be concerned with. And since I'm trying to develop a helper application for a third-party, I'm naturally a little more concerned than if I'm writing stuff for myself.

I'm a little overwhelmed, and I'm no longer quite sure where to start. Would appreciate if you guys could give me some pointers. I'm comfortable with the VS IDE and working with .NET technologies, but I think it would benefit me to know more about the following:

- In general, where to start learning and getting exposure: Books? (I used to do well with these when times were simpler) Online tutorials?
- Testings ("Unit" testing? Any other kinds? What does these do, what do I need for me to do them?)
- Source Control, I'm a one-man team, is this really needed?
- What's the deal with WinForms, WPF, CLR...?

Thanks in advance.
Chistian Mo Send private email
Sunday, November 04, 2007
 
 
"- Source Control, I'm a one-man team, is this really needed?"

You can live without it, but it will be beneficial for you to use source control.
Roman Werpachowski Send private email
Sunday, November 04, 2007
 
 
I'm in the Java/C++/C lineage rather than .NET, so I can't make direct comment. But my guess is that my experiences are transferrable:

1). Learning - if you found books good before you still will. I find that the "name" publishers such as O'Reilly and Addison Wesley deliver pretty good tutorial material. Supplementing that with a touch of Google when I get stuck tends to be enough.

2). The feeling that there's so much more to think about? I think what's happening is two things: first, if you look at what's delivered in a typicaly mature .NET or J2EE application today there's a high degree of sophistication both in UI function and also back-end connectivity. Second, the effective habits of experienced developers are being shared, regularised and eventually backed by tools and frameworks - hence for example the explicit focus on Unit Testing.

So yes there really is a lot more to think about, and a lot of experience to benefit from.

3). Source-code control. Even if you are a lone developer producing short-lived applications for a single client it's still worth using an SCM. Just to be able easily to revert to older, working versions of code can be a life saver. In any more complex scenarios, more developers, more versions to produce etc. then SCM is just plain essential.

4). Unit testing. Testing pieces of your application in isolation is an example of a practice which many experienced developers endorse. More specifically, programmatic Unit tests that can be run repeatedly are found useful. Personally, I believe that by writing tests as I develop code I tend to write better code.
Dave Artus Send private email
Sunday, November 04, 2007
 
 
"I'm a little overwhelmed,"

Many professionals with years of experience feel overwhelmed themselves. It's like adolescence all over again. :-)

The difference is that many professionals have other folks who they rely upon while you might be trying to "lift more weight" by yourself than recommended. For example, what folks call THE PROBLEM which one is trying to solve, might not be clear enough in your case, and for that matter, not even in a lot of people's cases. :-)

Once you know THE PROBLEM well enough, you will have lots of other problems which are mostly unavoidable, despite the improvements of the tools in the last decade. Some say that these problems have mostly to do with the domain, but of course, they are professionals and work in teams and have a lot of support so to them it's all about the domain and the paycheck. :-)

For the most part, your previous experiences can help you very little given all the changes that have been going on like the Internet, Web Programming, and so on... For instance, there's a lot of worries about secure programming given the way the Internet is public so bad guys can try all things from any corner of the world just to learn or prove that they can, or sometimes because they want some profit or cause real damage...

Another change is that Microsoft was really dominant in the development tools support in the past, and while they still power a lot of it, they have been losing their power to alternatives like Java, LAMP (Linux Apache MySQL PHP), Mozilla/Firefox, Flash, and so on. To recoup, the tools from Microsoft have been targeting the same domains of these other ones and there's a lot of duplication of efforts which causes uncertainty and splits...

That's just to say that you are not the only one suffering, and you are probably not the only one who is going to cut corners so you can get the job done. :-)

Just so you know, it seems as if ASP.NET is very well liked and used, even by folks who know little of Web programming or Desktop programming. WPF is kind of being adopted but could well be the future, even if in the present it's not used enough yet. Either way, you likely could need to buy some commercial components to improve your ASP.NET or WPF supported controls. That's the future as well. :-) The hobbyists of the future could well used and enjoy a lot of WPF. ASP.NET is used by a lot of professionals I guess. :-)

I'm not sure Web Services target hobbyists, who prefer tools like PHP for learning and making things happen, as the programming is more straightforward, even if it doesn't scale well in a professional environment unless you have plenty of experience with it.
Joao Pedrosa Send private email
Sunday, November 04, 2007
 
 
LearnVisualStudio.net is a good place to start.

You can find samples of their work in the free video downloads from the Express version learning resources pages.
*myName
Sunday, November 04, 2007
 
 
> In general, where to start learning and getting exposure: Books? (I used to do well with these when times were simpler) Online tutorials?

The first thing is the Microsoft help, also known as the MSDN reference.

Next, especially if it's a very specific question (e.g an example of how to use an API method), then Google (web and groups).

Post on a forum like this one if you can't find an answer via Google, or want some recommendations to help sort the good from the less good (e.g. if you're searching for a book and find too many books on the subject).

Read a forum like this one if you want to keep up on what's happening (what other people are working with).

> Testings ("Unit" testing? Any other kinds? What does these do, what do I need for me to do them?)

You need to test what you've written somehow, don't you? If you automate those tests, then you can "refactor" with more confidence. A unit test framework for .NET is called "NUnit".

> Source Control, I'm a one-man team, is this really needed?

Developing without Source Control is like rock climbing without a safety rope: it's fine of you're alone, and very skilled or don't climb too high or are willing to risk losing a lot of ground as a result of s single fall.

For a solo developer who doesn't need to support old versions, periodic backups is pretty much like Source Control (only more disk-intensive unless it's an incremental backup). I tend to check-in several times per day.
Christopher Wells Send private email
Sunday, November 04, 2007
 
 
How about looking into some non-MS technologies?  Something like Ruby on Rails has lots of activity so there are lots of avenues for help if you need it.  Best of all, its free.
Joe
Monday, November 05, 2007
 
 
Thanks to all who answered. =)

I'm currently introducing myself to the new VB2005 with a couple of books. Guess I should do the same with WPF and CLR since these books doesn't seem to touch on them much in detail?

Source Control - I just chanced upon Eric Sink's blog post on SCM, and I think it's a rather well written piece of introduction to the topic. I think I understand the importance and usefulness of that now. He's right too - it seemed that in most (if not all) courses about programming, lecturers tend to leave out the topics on source control and unit testing. These are new concepts to me, but apparently something quite fundamental to the professional developers.

Unit Testing - I actually have found NUnit and even installed it; but I can't seem to make heads or tails of it other than we're supposed to write "tests" for them. Are there any tutorial sites for a total newbie such as myself? Or would another reference book be in order?

Ah LearnVisualStudio.net could be helpful, I'll be sure to check it out more in depth. I'm actually checking out WindowsClient.net as well. As for MSDN, I consider it to be a godsend to those familiar with the VS world, but total hell for those just starting out. It's so crammed full of information it makes me feel like a little lost boy in the shopping mall. (On the other hand, if you didn't mean the web site, but rather the help system that comes with VS, then I wholeheartedly agree - it's a great help while working on my projects)

I've actually been messing around with PHP for the past year or so, and a little bit of rails. But going back to my fond 'ol days of VB4, I think I'll stick to VS for my Windows desktop development. =)
Chistian Mo Send private email
Monday, November 05, 2007
 
 
Re Unit Testing.  This book helped me:  "Pragmatic Unit Testing in C# with NUnit, 2nd Ed., 2nd Edition"

http://www.pragprog.com/titles/utc2
Mark Jerde Send private email
Tuesday, November 06, 2007
 
 
>> fiddling with Visual Basic 4, and later VB6.  ... VB now involves something called .NET

I recommend you get a copy of Dan Appleman's "Moving to VB .NET: Strategies, Concepts, and Code" ( http://www.amazon.com/Moving-VB-NET-Strategies-Concepts/dp/159059102X  ). The last edition was written for .NET 1.1, so it won't be much use on W*F, but the first two pillars - Strategies and Concepts - should prove invaluable to someone moving from the pre-.NET world. It's unashamedly VB-oriented too, which is increasingly rare.

(Since you describe yourself as a hobbyist, I'll omit my usual stuff about how switching from VB.NET to C# will increase your salary by 20% for doing the exact same job :) Oh wait I just said it anyway...)
Larry Lard
Tuesday, November 06, 2007
 
 
I'm with Joe. There are a lot of LAMP solutions targetted at non-profits but this crowd leans a lot more towards MS stuff. The fact that you can get the source means there's a lot more info out there on how to get started and you're welcome to imitate the way other people work.

If you're planning on writing your own app and you're on a Windows machine I'd have a look at something like XAMPP or WAMPP to get yourself started with a webserver, PHP and MySQL environment that you can pop up and try things out on. It shouldn't be a big deal to get Ruby on Rails in there if you're interested in that.

I'm not saying LAMP is the right solution for you - I don't even know much about your situation. All I'm saying is that just because you liked VB before doesn't mean you'd like VB today. Have a look at what can be done with a LAMP stack or, better yet, some of the free web apps that are out there.
Rob Russell Send private email
Tuesday, November 06, 2007
 
 
> I'm currently introducing myself to the new VB2005
> with a couple of books.

IMHO I suggest not spending time on VB. You'd be much better off going straight to C#.
Jussi Jumppanen
Tuesday, November 06, 2007
 
 
>> IMHO I suggest not spending time on VB. You'd be much better off going straight to C#. <<

This is completely wrong for most developers coming from a VB background. It's hard enough diving into .NET without learning a whole new syntax.

The best approach in this case is to leverage your VB syntax knowledge by using VB as your initial .NET language. Then learn C# as well once you're comfortable with the .NET platform.

I followed this approach when I wrote my .NET book. It took me about a week to learn the C# syntax, and about a month before I was perfectly comfortable with it.

You might also be interested in these two editorial opinions from VSM:
http://www.ftponline.com/vsm/2004_04/magazine/departments/guestop/
http://www.ftponline.com/vsm/2007_05/magazine/departments/guestop/
Mark Pearce Send private email
Wednesday, November 07, 2007
 
 
Thanks for all the advice and book suggestions! I've been playing around with VB2005 Express for the past couple of months, and while it does seem much more complex than I remembered it, I think I'll survive =).

The problem I'm facing, is with the fact that everything around software development (and .NET) seemed to be moving so fast. Just this february I was downloading Express off MSDN, thinking up what fabulous things I might be able to cook up with the new .NET 2. Next thing I know, there was .NET 3, then 3.5... Doing some light research turned up more questions than answers. As mentioned in my original post, I started to read about unit testing, SOA and WPF.

It used to be so clear-cut in the past - pick a direction to go, pick up a book about it, start reading. Now, all of these things seemed so related and yet so diverse, leaving me unsure where to actually begin. Hence my analogy of being a little boy lost in the mall; so many seemingly possible paths to take, yet worried that taking the wrong one can get you more lost.

I do work with PHP, also in a hobbyist kind-of-way. My friends and I mainly use it for our websites. It was one of the languages we considered when brainstorming about our proposed administrative app. But there was a problem - we didn't want users poking around our source. VB2005 also seemed to provide us with an easier way to develop a more sophisticated solution than PHP could (at least, that what we thought, judging by our our skills, or lack of, in using PHP for a full-fledge app). For my own learning purpose, I do use XAMPP at home, with the wonderful Aptana Studio IDE. I'm trying my hand with the CodeIgniter framework now, but still wrecking my brain trying to figure out the MVC pattern. Everyone in their forum seemed to say it made them more efficient, though for me I find myself having to spend more time than ever before on basic stuff... Hmm...

Anyway, why does it seem that people still seem to speak of C# as a better language than VB.Net? Hasn't Microsoft themselves and some others already explained that with .NET, they're both equally powerful, though both has their own pros and cons?
Chistian Mo Send private email
Wednesday, November 07, 2007
 
 
>> Anyway, why does it seem that people still seem to speak of C# as a better language than VB.Net? <<

Only ignorant people claim that C# is "better" than VB, or vice-versa.

But is the average developer coming from a VB background as technically strong as the average developer coming from a C/C++/Java background?

So if you value technical strengths higher than business strengths, then you might have a preference for C# developers, as opposed to the C# language.
Mark Pearce Send private email
Wednesday, November 07, 2007
 
 
"Anyway, why does it seem that people still seem to speak of C# as a better language than VB.Net?"

It's a perception issue. You know, the "C is for pros, VB for hobbyists" thing. It even carries into the corporate world - there are more C# jobs than VB.NET, and the C# jobs pay more.
Ken White Send private email
Thursday, November 08, 2007
 
 
If you're trying to get your arms around the .NET world, I'd recommend checking out MSDN magazine.  You can read all the back issues and the current one online for free, and it will give you a pretty good feel for whats going on in that universe.
grover
Thursday, November 08, 2007
 
 
"But there was a problem - we didn't want users poking around our source."

You don't need to open-source your application just because it's written in PHP, unless you mean the client-side parts. Opening up the client side is the price you pay for the web as a platform.

"I'm trying my hand with the CodeIgniter framework now, but still wrecking my brain trying to figure out the MVC pattern. Everyone in their forum seemed to say it made them more efficient,"

Use the design pattern if it fits. MVC fits a lot of cases but not all of them. I chose CakePHP as an MVC framework (because I heard of it first, not saying it's better) and got comfortable with it through an excellent tutorial from IBM. The best link I can find for it is http://www.scribd.com/doc/5503/CakePHP-tutorial-no-1-from-IBM

You'll see the MVC pattern all over so it's good to understand regardless of the platform you choose. I read up on that one in the classic Gang of Four book http://www.amazon.com/Design-Patterns-Object-Oriented-Addison-Wesley-Professional/dp/0201633612

Hope this helps
Rob Russell Send private email
Friday, November 09, 2007
 
 

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics
 
Powered by FogBugz