Learning WPF without success [closed] - c#

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 9 years ago.
Hello developers and designers,
I am very willing to learn WPF in which i use C# as the logic code.
Or i 'try' to anyway.
I have written a 2-page long code-behind in Forms-style though, so i know some syntaxes.
But that was a really cumbersome way of doing it.
The problem is that i am still lingering around the area of understanding at least the basic concept of object oriented programming. But 9 out of 10 times i am not getting the example-codes entirely because of that '1 little thing of which i don't even know what it's called'.
How do you even know if there is a command for the function you want to express and more importantly.... how it's called and where it located in what namespace?
Even the best video-examples aren't doing it for me, because when any code is typed, they never explain how the code exactly works. And most of the times it just doesn't even add up to what i know of logic code (of course i'm wrong).
In the early days i learned the Commodore64's Basic no problem.
Learning and writing Actionscript (Flash), within 2 months creating a 2D-shoot'em up
Learning and writing CMD, within 3 months writing 5000+ lines of code for all sorts of functions.
Why in Merlin's beard is WPF so hard?
Watching the "simplest" tutorial-video's are becoming more and more de-motivational.
Anyone recognizes this?
Thanks for reading,
Danny

Regarding WPF the articles I've found to be most useful are the overviews on MSDN, they might take quite some time to work through but they are concise and in-depth, see this page for a master-overview.
Why WPF is hard is a good question, one primary cause might be that it is simply huge, at least i perceive it that way. Aside from having all the code you also now have XAML markup which is a world of its own.
Someone from Microsoft who did a presentation on F# in 2008 said that if you know three of the keywords, let, fun & |>, you know the whole language, which is not even that much of an overstatement. WPF on the other hand is not a language, it is a sub-framework. If F# can be likened to 3 nanotechnology building blocks then WPF is a 50 meter workbench stacked with tools (the controls) and a dozen heavy duty machines (WPF mechanisms like dependency properties, data binding, commanding, data templating, etc.), and all of those come with a manual. So if you are facing a problem you pretty much need to know what all the tools and machines do so you know which to use, and then of course you also need to know how to use them, apart from their basic functionality each may even have its own kinks and peculiarities which are important to keep in mind.
So learning WPF requires a lot of raw knowledge of the framework but also experience so you know what is the best approach in a given situation and to get a feeling for what can be done and what cannot.

MVVM: http://msdn.microsoft.com/en-us/magazine/dd419663.aspx
Learn it then use it.

I figured I'd add my $.02 since I've recently started using WPF. First off, you'll need to read that MVVM article mentioned by FĂ«anor, and DEAR GOD, download the sample code and learn what every line in that program does! Reading the article is great, but seeing the code, running it, changing it, etc, is INVALUABLE. I also echo the comments about the MSDN overviews, and the one about creating a side project rather than learning WPF via an existing project.
Other than that, don't expect to get WPF in a day, or even in a week. I've been using it for about a month now, and I've still got a ways to go. I had my "AHA!" moment about a week ago where everything started to click and it became apparent to me what I DIDN'T know which is important. A good strategy would be for you to pick a single concept such as Data Binding, or Data Templates, or Styles, and explore each in depth. It's a lot to chew on, so just remember that Rome wasn't built in a day. And if you're not already comfortable with data binding, I'd pick that up early on since it's pretty crucial.
Lastly, once you learn WPF, it's going to be REALLY hard to go back to using Windows Forms :)
Have Fun!
Q

I don't think that WPF is actually that hard. I think it's just that WPF definitely requires a slightly different way of thinking. You can tell that it was built with certain principles in mind (like MVVM, as another poster mentioned), and it's very different from most other frameworks. If you try to do it like you did Windows Forms or MFC or ASP.NET or whatever... you'll struggle. You need to be willing to change your mind on how things work.
Frankly, I think the only way to learn it is with experimentation. Come up with some side project to work on using WPF and try your hand at it. Learn a bit and refactor it. Get a good book, read the WPF disciples list, read anything that Sacha Barber writes, read the WPF section here on SO.
When you have your first "ah ha!" moment where you decide to write an Attached Property to solve some obscure problem you're having, you'll know you've finally understood it :)

Related

when choosing a project methodology such as xp, scrum, crystal which questions should be taken into consideration [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.
Basically I have to choose a project methodology.
The components are not big (we develop components mainly for SAP connecting), however the team is rather big , dislocated and and very unorganized.
Besides how big is the team
which other questions should be taken into consideration?
Thank you
I've made very good experiences with answering these questions first:
How does the team prioritize work?
(I would recommend putting todos into a sequence building a backlog)
How does the team track what needs to be done?
(I would recommend breaking things down step-by-step into User Stories and track them using a tool like PivotalTracker)
How can you make sure the team is self-organizing?
(Let the team pull work from the backlog, run daily status meetings and a retrospective every couple of weeks)
How can you optimize how fast features get delivered in optimal quality? (This way of thinking should replace the idea of maximizing capacity utilization)
How can you make the work visible? (Visibility builds trust and momentum - you can start collecting metrics and putting up a screen showing all kinds of graphs)
One very useful question to assist in choosing any sort of method is "What projects can this not help me with?" It can be very difficult to obtain an answer; the usual way that supporters of a particular method respond is "of course method X can help you with any project." Thus they are saying either that all projects are the same, which is obviously not the case; or that they don't know what are the limitations of their method, and so will not be able to recognise when their method is not appropriate.
You say your teams are fairly unorganised. One of the best ways of introducing any new method is to provide tools - even very basic tools - that make it easier to follow the standards than not. An example of this was trying to improve the quality of development reports in a very large organisation - we provided a number of word processing templates, that made it easier to write a report using the templates (and hence the standards) than to write the report from scratch.
Personal note on my choice of language: I have worked with software development methods for many years, and to me "methodology" is the study and comparison of different methods. A particular way of, for example, managing a project, is a method, not a methodology.
I guess this really depends on a number of factors, for instance some contracts require you to use PRINCE project management which is rather complex.
If you dont have any external factors regarding the methodology you choose I would just do a bit of research and see which you think fits your team best.
I havent had chance to use Agile yet although I took a course on it and I liked what I heard, it seemed fairly straightforward which is a bonus.
One thing to remember though is you dont have to stick to one methodology if you find something isnt working for you then make changes.
Questions I would consider though would be the length of the project, Size of the team, Are the team each working on individual parts of the project or are there multiple people working on the same area, Time it will take to implement a methodology, Any costs involved?, Any training involved?

How to start programming from scratch? [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.
I've never really had any experience with programming at all, my uncle told me to come to this site for help from total strangers if I wanted to start programming. I know the names of a couple of languages but I don't really know anything at all. I'm fourteen and I can type fast if that counts for anything. One of my uncles wanted me to learn c#. So my question is, is c# a good place to begin, and if not, where is a good place to begin and how do I learn it?
You may want to look at getting the latest edition of Head First C#. It's particularly suited to newcomers - and it concentrates on "fun" examples rather than business-oriented ones. I'm not personally a fan of that style of learning, but it clearly suits a lot of other people.
Make sure you buy either the latest edition (covering .NET 4) or the most recent printing of the previous edition though: earlier versions had quite a few errors, but those have been rectified over time.
C# is a fine language to begin with.
Here is a good free ebook to get you started. It not only discusses the programming language but also what it means to be a programmer and how to approach it professionally.
As Jon says in his answer - Head First C# is also a great first book (as are all their other books such as Head First HTML).
You can get the Visual Studio Express programming environment (editor with syntax highlighting and intellisense, compiler, debugger and more) for free here - just be sure to select the C# version.
C# is an okay place to begin, but you might find it more fun to write websites instead. It's easy, everyone can see the cool things you do, and you already have the tools to start doing it -- just a text editor and a web browser. HTML and Javascript are also much simpler and more straightforward than C# without being less powerful.
http://www.w3schools.com/ is a good starting point.
In my opinion, there is one critical tool when learning to program or when learning a new programming language. That tool is "a problem that you are sincerely interested in solving."
It may be a game you are interested in writing or a desktop or web-based tool that will actually help you with something in school or in your life.
If you have a real problem that you really want to solve, there will always be free tools, tutorials, and online geeks to help you learn how to solve it.
Learning programming without solving real problems is like learning to build a house with just a hammer and a nail and a short piece of wood. You can learn the basic mechanics of the hammer, but you'll never be a carpenter until you have to confront the problems you'll encounter while trying to build something useful.
After that, I think C# is a great general purpose language to learn programming. And there are some really great free tools available.
I agree with the poster who said experiment with several languages. Solving the same problem with different tools can be a real eye-opener into the different paradigms of those tools.
If one of your uncles wants you to learn C#, he probably sees you as his employee a couple of years from now. So ask him directly if that's his plan and persuade him to help you.
If your uncle has no idea about programming and just dropped this C# suggestion because he heard the term somewhere, he might be doing a very bad favor to you.
If I would be you and I would have free hands to choose what I want, I certainly wouldn't choose C#, because it ties you to a proprietary operating system (Mono is a joke, admit it).
My choice would probably be Python, because it runs on almost any platform. And you have two very valuable tutorials for beginners that approach teaching programming from very different points, so you can pick the one that suits you best: the official Python tutorial and Zed Shaw's Learn Python The Hard Way (don't be afraid of the scary title, the book is very valuable for a beginner).
edit:
After reading the comments, I would like to add a couple more points.
How many of those C# programmers code for fun? Most programmers that use Microsoft technologies, do it professionally - it's their job, they do it for money, most of them don't have guts to admit their job is boring sometimes (even if it is), because such a claim is against the corporate policy that slips into the culture around the infrastructure provided by their (cough!) free programming tools.
Just in a couple of years, the community of users who do programming more or less seriously has literally exploded. Back in the days there was sourceforge - the single monster that was totally programmer related. Today there is launchpad, bitbucket, github (which recently surpassed 1000000 repositories, most of which are small personal pet projects governed by free licenses). How many of those projects are using C#?
Today programming is about reusing or "stealing" (in the good sense) code more than ever. Where are the herds of C# projects, small general-purpose libraries? While some programmers who write proprietary software are not very helpful to newbies (because they see it as consulting, which they can do for money), and while some programmers who write free software are not very helpful as well (because they lack social skills), the code is more important. You don't learn programming only by reading books, you learn it by studying working code. And the free software ecosystem provides much more code to study.
Generally, people who get into programming have two choices:
avoid proprietary stuff, get access to a lot of free software at the risk of being called "anonymous internet elitist"
ignore the proprietary vs free holy war at the risk of feeling what proprietary software means indeed and how it can spoil a good intention, like this guy
There's a lot to programming but it can probably be broken down into a few key elements:
theory
craft
dialects
Theory just takes lots of learning. Books, classes, trial and error, research, etc.
Craft comes with experience.
And that leaves dialects...or rather the particular language(s) you want to become fluent in.
To answer that would require a long list of what kind of stuff you are aiming to do. If you don't really have any particular direction to go in, your 'uncle wanting you to learn it' is maybe as good of a reason as any.
I would say dibble a bit in a few hot languages like C#, Python, Ruby. The reason I say this is, I think liking a language is a bit like developing tastebuds. I know many people who disgusted coding only because of braces and syntatic sugar. All I wanted to save you was from getting intimidated by syntax and throwing it away
I believe C# is a really good starting point. That's pretty spiffy that you're really interested about programming at 14.
I suggest picking up a C# book and reading it. Follow the examples as you come by them.
One of my favorite C# books is by Andrew Troelsen: Pro C# with .NET 4.0 is his latest book. :)
http://apress.com/book/view/1430225491
C# is definitely a good place to start and here is one reason why:
C# is a proper language that will pretty much force you to know what you're doing as a programmer.
I began my programming career with PHP and that language is so loose you almost can't screw up. You can make cool sites and such but never know how terrible they are until you are hired to do something that requires a stronger language. At that time, certain terms and data types that are never used in PHP will broadside you.
As I look back, now that I know many programming languages, starting with PHP was a pretty bad way to begin programming, at least in my opinion. I can't believe I have a job in this field knowing where I began.
Java is also a good place to begin. Any strict compiling language, really. When you know the foundations from a strict compiling language, the loose ones like PHP are a breeze to add to your knowledge base.
Of course, you may want to consider what you're looking to program for. If you want to do web work, C# is a good base, but doubtful that you will use it much for web work unless you're working on something seriously deep. Objective C is used for iphone and ipad development, so you can't go wrong learning that.
Java is good for web and is now a mobile platform, so it is definitely a good investment. The principles of Java will help you write better web code, as well as form a good foundation if you want to branch to C later. Vice versa, I guess.
PHP is very easy to learn and will serve you quite well if you want to get into web development. You should know html, css and get familiar with at least mysql for databases if you go this route. Just FYI, php developers are a dime a dozen in the programming field, so don't count on getting rich doing this unless you want to run your own web company and do the site yourself.
In any case, MVC (model view controller) will be an important thing to read up on. When your code is well structured, it is immeasurably easier to maintain for yourself and anyone else that may have to pick up where you left off.
Have fun.
There's no best approach, but one place to start is here:
Express Editions
They're free and you get lots of choices.
to copy a post i posted here: https://stackoverflow.com/questions/3430705/3432079#3432079 there are two things to get a handle upon:
Academic Knowledge:
Know the Theory - get a great handle on the theory of programming, the theory of language design, the theory behind the architectures you are coding on
Know the Math - all programming eventually boils down to math - know predicate logic, trig, vectors, geometry, (basic) set theory, graphs, basic matrix theory, a little numerical analysis doesnt hurt either - as well as complexity theory
Know your Language - get a book, read it, make notes for reference. Apress titles work well for C# http://www.amazon.com/Pro-2010-NET-Platform-Fifth/dp/1430225491/ref=sr_1_1?ie=UTF8&s=books&qid=1281215548&sr=8-1 is good. Then read blogs and videos, learn to use the Redgate Reflector and MSDN help
Know your Tools - for C# this means Visual Studio 2010 - http://blogs.msdn.com/b/saraford/archive/2010/06/17/video-101-visual-studio-tips-in-55-minutes.aspx is a great way to learn. Also get a decent refactorer - ReSharper is my favorite but there are others.
Know your Ecosysyem - know what libraries are out there, learn how to use one or two of the best
Skills:
Know how to define a projct - no matter how good a programmer you are if you build the wrong thing you will have failed epically.
Know how to design - learn the theory on object orientated design - the Gang Of Four software patterns are classics and every coder should be aware of them.
Know how to document code - this is critical for long lasting code and for working well in a team. Write it, Document it, Test it => Resuse it
Know how to work in a team - work hard, play nice, communicate well.
Know which tool to use - get a feel for as many types of languages, actual languages, technologyies, libraries and so on as you can so that you know which to use in which situations
Know how to learn - from those around you, from the web, from documentation and most importantly from your own mistakes.
I'm sure others can add to these lists ;)
I personally got a great headstart on programming when I started on C++ about half a year ago. I'm about thirteen myself as well. C# is a lot like C++ (there are differences, though), so speaking from experience, I'd say yeah, that's a good language to start out with.
As for references, just grab some books at your local bookstore and start working your way through them. That's what I did. If you want to start with C++, I know for sure that there's an excellent reference called 'C++ for Dummies'. That's where I started.
Whichever language you decide to pick (nothing wrong with C#). Pickup a good book or resource, a few are mentioned here. Once you've done that, make sure to work the examples by hand and then at the computer to concrete them into your melon.
It may be totally obvious, but the more examples you can work, modify and make your own and see how they work, the quicker you'll pick up the language. IMHO this is how you really start to learn and have fun because you can start seeing things happen and begin to solve problems and gain context to issues you wouldn't have just reading...
It is an asset You have made a commitment to prgramming. It is usually advantageous to start from a keen understaning of Your working environment. Ask basic questions like what tools are already available to do Your daily assignments? Have as much fun as You can with them; and when they behave unusual, ask the why? Try finding solution to them on the net. Later on, perhaps You may want to enjoy basic html for sometime; and move all the way around c-sharp or anyother programming language; because at the end You- Yourself will figure out the link between a programmer and programming languages.
Hope it helps
I wouldn't pick C# purely as it isn't completely free and the full visual studio is very expensive.
Have a look at python, it forces you program properly in many ways whilst omitting some of the more annoying aspects of programming ({'s and ;'s).
If you do choose to learn python there is a free site with tutorials on how to make simple text based games. I used it to familiarize myself with the language before starting my current project.
link:
http://pythonbook.coffeeghost.net/book1/index.html
The most used languages are C and Java, according to Tiobe, so I'd almost say you should start there but esr has some good reasons for recommending Python as a first language.
C# is an excellent place to start. One thing I would suggest is think of something cool, but not too complex, that you would like to build the using some of the reference books other people have suggested in this thread go build it. Calculators are fun starting programs to build (Disclaimer: I am a math geek).
Having an ability to type fast using ten fingers is useful as you can do more and more exercises without causing your muscle tired quickly.
The first time I used computer, I just typed using my right index finger only and got tired fast ---typing become a nightmare !
If you have much time, you can start learning the following topics in order:
Computer architecture from hardware and software perspective.
C# (Deitel's C# book may be a good choice since it has much more details).
Any widely used language is a good place to start. Once you have done some useful projects in one language, it will be easier to pick up others because the logic is similar.
I suggest choosing based on what you want to do with it now. For example, let's say you are interested in making a few simple games while you learn (think frogger or maybe 1943 and keep the scope small). You can make 2D games pretty rapidly using an interpreted language like Python or Ruby (both have free game libraries available). With perhaps a little more work you can make them in Java or C, and have room to grow into heftier game features. Or you could make them in Objective-C and Cocoa, which would limit you to developing on a Mac, but open the possibility of distributing your games on the iPhone.
If you want to do business or finance applications, you can find a lot of support based on languages like C#, Visual Basic, Java, C, and the .NET framework (not a language, but applicable to enterprise software generally). It would also be a good idea to practice with SQL for interacting with databases (where business data like sales, customer names, or employee records are likely to be stored).
The most important thing to learning quickly is that you enjoy the projects you are working on, and are extremely interested. It will seem impossible to learn a language if you don't really want to do anything with it. On the other hand, you can be an amazingly good programmer in 6 months if you quickly start working on projects of interest, and are fanatical about solving the problems you set for yourself. Besides, you're 14 so you have the option of pushing your life and career in a direction that will give you both income and enjoyment in the work you do.
OK, is it just me or no one asked him the main question.
What do you exactly want to do ?
Do you want to play with hardware (ie have some board connected to a serial / parallel / USB port and have some LEDs flashing, have some sound coming out a speaker etc) or do you want to develop applications that have a nice user interface connecting to a database or even a game ?
Well, for number one, that will be assembly (ie for ARM SOCs) and C and that would require you to get familiar with hardware programming.
For number 2, I'd say C++/JAVA. I wouldn't recommand a language that is only supported by one OS (like C#) ...

Interview question - c# [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 11 years ago.
I was tasked to conduct my first interview and would like to pose my question to this world for both their feedback on my question and also on their solutions.
Question:
I have a legacy system with users and
files, the info of all files
pertaining to a user are stored on a
flat file.
I want to upgrade this system by
storing all info on a db, design
tables, and create a C# system that
will populate the new db as well as
ftp the files to a new path.
Define the desgin consideration and
develop a prototype.
Note: We are looking more for what
design one would use and why rather
than code that compiles. If it does
then kudos to you and we will give it
more weight.
#Tim C,
I did show the interviewee the file:
User1234.txt
UserID=1234
ParentPath=\\somewhere\nowehere\everywhere\1234
FileCount=20
File0=something0.ext
..
File19=something19.ext
#Tim C, I have never conducted an interview and I followed a script given to me by my senior developer who was absent.
I think a strong candidate would spend the bulk of an interview asking more detailed questions to gather appropriate requirements before jumping into design.
A good candidate wouldn't start making assumptions about your requirements, at least not without identifying those assumptions.
There is another post here on SO that has some good info on C# questions...
I personally don't like the question as you've written it. You provide information that a good developer should be able to determine via requirements rather than the design being presented. I may word the question like this...
We have a legacy system that was built in classic ASP that uses flat files for storing user information. In addition to the storing of user information in flat files, the system also handles uploading new files via FTP processes and then adds the path to the user's flat file so they can see it. If you were to design a system to replace this today, what would be some key design considerations come to mind? How would you store the data?
Its not that its a bad question, I just think its too broad to reveal anything about a good candidate. What kind of information do you hope to get out of it? Whether the candidate comes up with a correct solution? A novel one? A practical one? Top-down? Bottom-up? A solution that uses a particular tool? A solution that works in this particular case? A solution that works for many general cases?
I think questions with concrete answers, or at least a narrower range of acceptable answers, makes for a better solution, so I would recommend a different set of questions for your interview.
Well, in my opinion such a question would leave out people with rather practical point of view on designs.
There are people who prefer top-down solutions, designing from the general things down to concrete ones. There are as well quite a lot of developers who design bottom-up, first making small subroutines and then combining them into a big project. Your test will favour the first type of developers to the second one. Therefore I would say it would be biased.
I'm guessing this is more a "What are your thought processes in solving problem X" type of question rather than "Do you know specific fact Y". We use a question about modelling a deck of playing cards and then go on to ask how this would help create a game to play snap/21/poker with them.
With this type of leading question you need to know where you want to lead the candidate. You should have a solid understanding of at least one complete design and make suggestions to help move the candidate along those lines should they get stuck. Good candidates will cover all the points you want to mention and will no doubt surprise you with approaches you hadn't considered before. These are definately the type of people you want to hire. Others may stumble at first but hit their stride with a few pointers. The trick is to get the right pointers without giving too much away. These candidates aren't a definate No but they would need to be a good fit in other aspects or going for more junior positions. You'll also find some candidates never 'get it' but your phone screen should keep these to a minimum. Of course you don't hire them unless some form of nepotism is going to help in your next review!
We spent several months interviewing candidates and evolving the interview process and still haven't arrived at a something we're 100% happy with. Joel's book Smart & Gets Things Done has been an excellent resource to help us.

Improve proficiency in programming [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.
How can I increase my proficiency in programming? I have a grasp of the basics of C#, but don't feel too confident about my ability.
Code something in C#
Read C# Code and try to understand it.
Read a C# Book (and please none of the C# in 21 Days books)
The confidence comes with the experience.
Read Stack Overflow every day :)
Seriously. Try to solve interesting problems. Even if you don't post your solution, come back later and see if other people came up with something similar, why their solution might be different, etc.
Project Euler.
http://www.asp.net/LEARN/videos/
Voile, you are programing ASP.net.
Keep in mind that you may need a little more grasp on C# as your codes evolve. For that use a good book, most Microsoft's learn C# are pretty neat(The learn ASP.net is quite lame).
Of course, thats what I did back then(about 2 years ago), nowadays you should be able to find some awesome tutorials online.
Good luck ;)
Think of a fun project of some complexity (more that "Hello, world") and code it.
Practice, practice, practice!
Also read forums, blogs, participate in discussions. You will learn many things that aren't even mentioned in books.
read lots of code, write lots of code and keep a copy of C# 3.0 in a nutshell handy.
Learn new programming languages. Learn data structures and algorithms and design patterns. Learn regular expressions. Learn databases. Learn HTML/XHTML/DOM. Learn learn learn learn learn.
In programming, knowledge === power.
Work on something, even if it's reinventing the wheel. You can read books, watch videos and listen to podcasts all day, but the real experience comes from actually building an application. Don't build an application that you know you can build - instead, create an application that is slightly out of your reach, then rinse and repeat.
The experience when you realize that you created a mess of spaghetti code that is unmaintainable cannot really be substituted, as this then really allows you to look into techniques to improve your code. Sure, feel free to read on MSDN about Events, Delegates and Lambdas, but reading about them in the moment you need them means that the knowledge really burns into your memory.
I try to have a rough knowledge about as many topics as possible, but that's usually rather shallow: I know that a technique exists and roughly what problem it solves, so that when I need it I can learn about it.
In my opinion, the only alternative to first-hand real world experience is even more first-hand real world experience.
http://www.appdev.com/csharp.asp
:)
You say you are learning ASP.NET and C#. Have you ever done any programming or web development? Because, if you have not, then you need to take a step back and learn the basics of HTML, CSS and get a grasp of how data is passed via HTTP between client and server. I would also strongly advise getting a grounding in basic SQL, because most serious web development will utilise databases at some point.
After that, some basic OOP (Object-orientated programming) theory would do you good. That way you have a good grounding in the subject-matter before diving into the coding.
For learning C# the I'd suggest a couple of good tutorials:
The C# Station Tutorial and Softsteel Solutions C# tutorial.
I also found the ASP.NET Quickstarts useful when I was learning ASP.NET - I prefer to learn by example than by theory.
As for confidence, I'm afraid that only comes via experience. Perhaps try answering a few questions here? Getting a few up-votes might just give you that boost. Good luck.
This fits in to catagory of answers you've received thus far, but review open source projects.
Understand how they work and maybe even why they were put together in a given way. Not only will it improve your ability to write C# but it will also improve your understanding of Software Engineering which is ultimately how you put a programming language -- C# or otherwise -- to good use.
Creating a Project that makes use of a lot of different technologies is a good way to grasp a 'big picture' view.
As an example, think of an n-tier application where you input a value into a very simple web page, this value being sent into a web service, and behind that WS a simple business layer that switches between readings into a table of a data base, then you return the value finishing the output in a postback of the initial web page. In my Personal opinion, every element of the layer is a simple one, but, making the whole system work without errors is good beginner's challenge, that way you could build a confidence in your skills, enabling you to undertake any other idea.
Well, that were my two cents. Good Luck!
There may be so many projects that u can make.choose the project that makes u.it's true take a project that you consider difficult for your level.
1) analyse your project
2) define the objective
find things that are necessary to achieve the objective
3)then derive an algorithm which clearly explains the workflow
4)then start woking
In my experience "Learn By Working" is a good idea.first grab the basics then start the work soon you'll learn step by step.never give up ,be a ceaseless crusader.
practise practise it's a only way of surviving as a programmer.
Being a best programmer requires a lot of patience,thinking skills,Attention,a thrist for knowledge.
Wise people always replace the fear of unkonwn with curiosity
Actively participate in programming (and non-programming) forums.

Going to jump into Powerbuilder. Any advice [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.
This might be a weird question. After all, most people want to jump OUT of PB not IN.
However, after careful analysis, I feel that Powerbuilder can get things done so much more rapidly than C# in the sense its a 4GL.
Now PB is becoming .NET enabled, I was thinking perhaps its a good tool.
My main focus is developing enterprise applications with alot of data entry/reporting/data representation.
I have tried the datagridview and its pretty bad compared to the datawindow. I initially wanted to buy and try the telerik solutions but due to lack of time, i just assume the implementation in C# is just as unwieldy.
Do you feel its a good idea to jump into Powerbuilder now since its the only 4GL committed to moving to .net?
Thanks so much all. Do not hesitate to critique my choice based on my crieria:
c# is very low level and theres alot of coding to be done concerning data bound controls and so on
powerbuilder is a 4gl and has excellent abstractions to avoid unneccessary coding. Sure, you give up a bit of control but how much control is required for an enterprise application? C# is an extremely powerful language and yes you can make literally anything in C#. But Powerbuilder is more limited, and more can be done in PB when making stuff in its scope: i.e. enterprise apps
powerbuilder is moving to .NET and it can be extended by using C# for more sophisticated stuff.
yes, i am aware theres a DataWindow.NET control which is excellent but however does not give assurances of longevity since Sybase may not continue supporting it after traction for PB.NET is seen. After all it will cannibalize sales for PB.NET
You are correct that PB can be very productive. And ultimately, the strategy of "using what works" is fine. That said, there are some things to be careful about.
It sounds like you are developing a brand new app. If so, that's good, you have a chance to build it as a .Net PB app from day 1. PB 12 is to C# what PB classic is to C++, so your reason (wanting a higher level entry point to .Net) to use PB is in line with what I think Sybase was intending.
Do it as part of an overall solution including the .Net integration you speak of, and definitely take advantage of the educational opportunity to learn C#. As a developer, .Net is better for future opportunities than PB.
Will you need to readily hire additional resources to help develop/support the application? It may be harder to find PB resources than .Net resources, given the language popularity trends. Note that I make no claims on the quality of the developers: PB or .Net, you'll find journeymen, hacks and stalwarts in both ranks.
I wouldn't worry too much about Datawindow .Net if you decide to use it. I don't expect it will go away but someone more familiar with it may be able to provide more context here.
Finally, although there is some value in having a higher level entry point to C#, you will have to learn something about both PB and C#. Managing two tools introduces more overhead than managing one tool. For typical CRUD apps where you are building a lot of data entry and reporting, the productivity gains and strong relationship between SQL and the datawindow may be worth it - that's up to you to decide.
If possible, I would suggest you wait some time to see how PB12 is really doing. What worries me is this:
Existing PB application can, theoretically, be compiled into native code. This works horribly. Or, to be precise, it doesn't work at all. How well is PB going to export to .NET is yet to be determined. They seem to be committed to that, but I wouldn't trust them without seeing some real-world proof that works.
Based on PB11.5 and below, Sybase has been doing a bad job with PB IMHO. They rush into new technologies, but the foundations are shaky. PB12 is a big change, and based on their quality of development, I would wait at least a few builds before using it.
PB can indeed be productive, but being a PB programmer, I just can't imagine someone actually getting into it now. You'll have a very small community, not much open source, and an unclear future. And, based on recent experience, Sybase's support is also quite lousy.
Finally, if you do go through with this, the best advice I can give you is this: design your project having in mind you might have to port it to another language one day. Can't say exactly how since I'm not a .NET programmer and I haven't used PB12 yet, but have that in mind. I wish our app, which goes back up to PB3 or even PB2, was portable.
thanks so much everyone.
I have decided to stick with C# due to a fear (perhaps irrational) that Sybase will be slow to catch up with future .NET upgrades
Because I am still young and working on greenfield applications, i prefer to choose a language that has longevity and support.
Nevertheless, I feel its a shame that Powerbuilder isnt as popular compared to other language, for I can see awesome producivity improvements and the datawindow control is one of the more impressive databound controls i have seen in a long while.
Thanks again, eran and Bernard!
I don't think you have to fear that PB will go away anytime soon, it has been around a long time ever evolving and it will continue to stick around. There is a very active user community and many larger corporations still use it.
I think also it is good to learn as many tools/languages as possible at least from perspective of coming in contact with different programming paradigms. PB is great for certain projects, C# for others - they don't necessarily cancel out each other.
You can take a look at the latest PB.NET (Beta2) here

Categories