What it takes to be a ColdFusion Developer? [closed] - coldfusion

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
I want to make my career in ColdFusion. I'm trying to learn ColdFusion with this Book "Adobe ColdFusion 9 Web Application Construction Kit, Volume 1 - Getting Started"
So far I've reached Page - 350.
Anyways. I want a serious suggestions for making career as a ColdFusion Developer.
I need answers to these questions: (What I was really asking)
1) How much time would it take to master ColdFusion?
2) What frameworks are best?
3) What other technologies are required with ColdFusion?
4) What are your personal experiences as a ColdFusion Developer?
EDIT:
I know little bit of php and Java and when I compare it to ColdFusion, then ColdFusion seems to be a billion times easier than php. It's not that I don't like php, but just saying.
As I have some experience with Java I think it can help me with ColdFusion Development.
I planned to learn a new language once I do average with ColdFusion Development. Like Objective C. I don't know whether ColdFusion and iOS Development is a nice combination or not.

Programming is both an art and a science. I suggest you will never "master" it, and you should take on a mindset of always learning and growing.
A framework is a tool. Use the right tool for the job. Frameworks like FW/1 and Coldbox, though completely different, each serve a purpose.
You should probably spend some time learning about the environments you will run in. Web servers like Apache, Nginx, and IIS. ColdFusion runs on Java, so it wouldn't hurt to learn more about Java as a language, as well as Java EE servers like Tomcat, etc...
I make a living as a full time ColdFusion and .NET developer. CF doesn't always have a stellar reputation, but it can do job very well like most other web-based languages.
I would advice you never limit yourself to just one language/stack/OS/technology. Seeking out other perspectives only enhances your experience and ability.

I was able to create useful things in one day. (Thank you cfinclude). After 15 years, I am still mastering it. ColdFusion is a part of a technology stack. One does not learn ColdFusion on its own. It is ColdFusion + HTML, ColdFusion + SQL, ColdFusion + jQuery, ColdFusion + Java. Some of the more interesting recent (July 2013) work I have seen is ColdFusion + angular.js.
FW/1 works great for me
See 1 above. In 2013, the place where ColdFusion shines, is it can bring very diverse technologies together in a clean format.
This ColdFusion developer has had to deal with "Isn't ColdFusion dead?" for many, many years. At one time ColdFusion pushed the envelope in what was possible. Today, it doesn't. In many ways it is dead. Sure, Adobe is maintaining it. Railo is working on a very good clone. The momentum is not there.

In response to
3) What other technologies are required with ColdFusion?
A typical ColdFusion application will include a database. Learn data modelling. It's the most important piece of the puzzle. A good database design will make everything else so much easier. To this end, I've heard good things about the book, Database Design for Mere Mortals.
SQL is also important. If your applications include a database you will have to write queries. I've also heard good things about the book, Teach Yourself SQL in 10 minutes, by Ben Forta, who also wrote your WACK.
A typical ColdFusion application will include web pages. Learn html, javascript, and css.
Good luck.

It very much depends what type of work you want to do.
If you want to build websites then cf is not the best solution as it lacks just about everything in thia area fue to lack of open source apps and creates more work for you as a result compared to php, you would be better off mastering the popular cms and open source systems and things like jQuery, css, bootstrsp etc.
If you want to build bespoke applications and work on backend systems then cf is perfect for that type of work as you are builfing something from scratch so cf still gives you the RAD advantage.
If you like cf then you should Also should take a look at groovy, grails and railo.
I would suggest you look at what jobs are available in you area first before making a decision.
The other technologies you should learn depends again on what you want to do, front or backend.
At the very least ajax, jquery, sql, html and css need to be learnt, you can't do much webvwork without those.

Related

What issues coldfusion UI tags have [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 8 years ago.
Improve this question
I have heard many times senior developers asking not to use coldfusion UI tags and that they cause problems. But can someone let me know what kind of problems it creates? I do not use CFML UI tags mostly, but some of the legacy code has them already. So if I have to change them, I need to convince people why they need to be changed. Reasons...
Edit:
I know this has been put on hold, but what I was asking about few points, a list kind of. So when I am talking with someone a client, fellow developer and want to emphasize the reason for not using cfform, I do have those reasons. With lot of good and some not so good answers, I reckon I can put up a list
1) They use old outdated versions of JavaScript libraries and HTML.
2) They have caused security issues in the past.
3) They get in the way of knowing how things actually work.
4) ColdFusion UI does work currently. However, the issue people have is simply, technology changes. It's simple as that really. jQuery and other UIs are constantly changing. Along with a lot of other APIs that ColdFusion UI uses. This means, if you are using ColdFusion 10 today and 5 years from now you are on ColdFusion 13 you may have issues with your ColdFusion 10's UI.
5) Another example is . had an issue recently because it uses google maps and google updated their API. Since the update took place it broke the tag. Since this is a ColdFusion UI and not your own it is difficult to just update the API calls. Which is why it is recommended to use your own. It's a simple fix with jQuery UI but not really ColdFusion UI.
6) Also, a lot of ColdFusion UI messes with your headers. For example, . This tag has been known to break mobile sites and other headers because it adds its own headers to your HTML page.
7) cfinput required="" is conflict with the HTML 5 input required=""
The issues with the UI tags built-in to CF are:
Were written by people who are not CFML developers.
Were written by people who are not HTML/JS developers.
They use old outdated versions of JavaScript libraries and HTML.
They have caused security issues in the past.
They get in the way of knowing how things actually work.
They don't have documentation comparable to the average JS library.
The Flash and XML versions of cfform were especially difficult to work with.
And possibly a few other reasons that have slipped my mind.
If you have old code that uses them, and the code works acceptably, then you're unlikely to get shot for not changing it - assuming there are no further undiscovered security issues, obviously.
(Though of course, whether the code does actually work acceptably or has simply been put up with may be a matter of debate.)
If you're working on new code, you should learn to use modern UI libraries that are written by actual JS developers who understand browsers, libraries that are far more widely tested and documented, that you can understand how they work, that put you in control of what's being done, and so on.
Instead of giving you a link to the solution to a problem that is unknown to #CFML_Developer I will simply briefly explain the issues I've had and other have had with ColdFusion UI.
ColdFusion UI does work currently. However, the issue people have is simply, technology changes. It's simple as that really. jQuery and other UIs are constantly changing. Along with a lot of other APIs that ColdFusion UI uses. This means, if you are using ColdFusion 10 today and 5 years from now you are on ColdFusion 13 you may have issues with your ColdFusion 10's UI.
Another example is <cfmap>. <cfmap> had an issue recently because it uses google maps and google updated their API. Since the update took place it broke the <cfmap>tag. Since this is a ColdFusion UI and not your own it is difficult to just update the API calls. Which is why it is recommended to use your own. It's a simple fix with jQuery UI but not really ColdFusion UI.
Also, a lot of ColdFusion UI messes with your headers. For example, <cfform>. This tag has been known to break mobile sites and other headers because it adds its own headers to your HTML page.
Finally, I personally find all ColdFusion UI more difficult to work with than actual jQuery UI. Just because with jQuery UI you can be specific to your needs and it's a lot more flexible to work with. Honestly, it's also faster to do if you understand jQuery.

django or yii for building a production web app with db and with custom forms and reports [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I am trying to choose between django and yii for scalable, maintainable enterprise grade web-app with a database (preferably mysql) backend. The app is mainly focused with data entry but with custom workflows (beyond your basic autogenerated crud forms ) and custom reports. I have a CS background, familiar with MVC, programming background in c++, C#. 8 years ago built a similar app using php, mysql, perl/cgi and remember it being painful (doing everything from scratch with steep learning curve). Need to learn either python or php syntax again but I pick up languages fairly quickly. Read extensively online about django vs yii. Cannot go the .net mvc route due to need for open source. Dabbled in RoR , loved the language but i am not very comfortable with the magic that happens yet, especially for a production grade app. May be in the future. So back to Django vs yii -
Decision factors are:
1) easier learning curve
2)better suited framework for specific tasks that I would need - heavy db manipulations, custom UI flow (nothing too gfx intensive, just regular form elements but where i need to manipulate data over multiple tables via joins etc)
3)no nasty surprises with db connects (read but not fully understood all the gotchas with django orm and mysql).
4) something where I am not fighting the framework/language for basic things
5) scalable and fast run time (i know lot depends on how one architect the solution)
Please advice. Looking for help from someone familiar with having worked in both frameworks. thanks a lot
I know this is old but I feel like I can add to this, having used both frameworks.
Yii is a solid, fast framework. It isn't quite as secure out of the box as Django due to certain things (cross-site request forgery protection, for example) not being enabled or enforced by default. For me the single biggest advantage was the built-in code generator, because once you figure it out and start using it, it basically spits out a full-featured CRUD application in minutes.
Django is my framework of choice, because Python is Django's single biggest advantage. Not busting on PHP, I actually really like the language, but Python's clean object-oriented-ness (that a word?), class inheritance, etc. really shines with a framework like Django. There is no built-in code generator in Django, which was a deliberate choice by the developers. That is both a strength and a weakness. Yii's code generator can become a bit of a crutch if you're really trying to learn the framework, but with Django, once you learn how it works, you can go in and change anything, because you built it yourself, and it forces you to learn the framework well. With Yii, when you have your generated code and have to do a customization, THEN you may quickly begin fighting the framework.
Django's ORM is highly flexible, I'm a SQL guy myself and I think I've used raw SQL in my applications exactly once. Yii's is pretty good but I give Django a leg up in this regard as well, and Django's is extremely well documented.
Installation of Yii is slightly easier than Django, in my experience. Django takes a bit more work to get up and running. Django's tutorial is much, much stronger than that of Yii, at least it was when I started.
My suggestion would be Django. Forms in Django are classes, and of all the frameworks I've worked in over the past 16 years, from classic ASP to .NET, Rails and Java, I'd put Django's way of doing forms up against any of them.
South makes it ridiculously simple to do schema and data migrations.
I would recommend using Postgres over MySQL, especially if you're going to be leveraging Django ORM, as it's a bit more fine-tuned for Postgres. If you don't need Django admin and you have to use MySQL, you might take a look at SQLAlchemy and Alembic.
Django's learning curve is very flat. It's incredibly easy to learn and is extremely well documented.
My $0.02.
Yii is superb. I could learn it and get going within a couple of hours. I struggled to setup Django because of confusing configuration and URL mapping that is needed to get anything working. I have no doubt Django is excellent once you learn it but in my experience Yii was a lot easier to learn.
I really wish someone would port Yii to python.
Here are some comparisons on both frameworks...
http://blog.leehsueh.com/2010/03/django-vs-yii/
http://vschart.com/compare/yii/vs/django-framework

Some Developer Advice

I am currently working on a program that I really think is a good idea (at least I sure hope it is). For the program I am building I am using (after some very long consideration) ColdFusion - Flex - Adobe Air. However, I have to learn ColdFusion to do this.
I am an independent developer that for the most part uses PHP to build my client's websites. Since I plan on learning ColdFusion to build this program, do you guys have any advice on how I can use ColdFusion elsewhere. It is not very exciting to think that I am learning this language for just one thing.
I don't plan on bulding Coca-Cola's lastest greatest website anytime soon, but I (for some odd reason) enjoy coding and was just wondering if you guys had any advice on any smaller-time avenues that one could persue??
Any advice would be greatly appreciated! :)
Cliff notes: I'm an independent PHP developer learning ColdFusion for a client. Its not exciting to learn a language which I will never use again. Where can I apply ColdFusion in the future?
You can use ColdFusion to build any webapp you could build with PHP. I've seen a few articles lately with comments from PHP developers switching to ColdFusion. This one was posted today, and lists some pros and cons of switching to ColdFusion.
http://blog.rubicon.je/2009/09/coldfusion-half-a-year-away/
I wouldn't consider it an either/or proposition though. If you want to learn CF for your AIR app, it will absolutely come in handy for something else down the road, even if you don't plan for that. Knowing more than one (or three) languages is always beneficial, as it gives you additional insight into other ways to solve problems.
Dan
ColdFusion or CFML the language is a tool, like any other you might add to your toolkit. As developers I personally feel we choose choose the best tool for the job. That said having another tool available will invariably come in handy down the road rather you write another CFML application or not. General solid programming advice is to try and learn at least one new language a year.
CFML is easy to learn, yet also provides for advanced development, which is why many choose to go with it. I came from a PHP/Perl background and picked it up in a couple weeks. If you are comfortable programming once you get the syntax down you can use to it do anything you can do with PHP. I wrote at length on the comparison in this answer.
Further lengthy Question/Answers to the viability/use of ColdFusion:
Is ColdFusion a good choice for web development?
What is the status of ColdFusion today?
I know you didn't ask about comparisons, you have made your decision. For building Flex/AIR apps with a data back-end imho ColdFusion or BlazeDs is the way to go. ColdFusion allows you to hook up the power of java to serve data with the easy of a scripting language. With that starting point you have your foot in the Java platform which is tremendously powerful and extensive. You can invoke interact with the Java layer and harness that power. Many will make the leap to Java or a more "friendly" JVM language like Groovy or JRuby.
do you guys have any advice on how I can use ColdFusion elsewhere.
slidesix is a recent example of an interesting use of ColdFusion. NASDAQ built Flex/AIR market replay application. Also you can check Ben Forta's site for more sites running ColdFusion to get some ideas.
But I think you already hit the nail on the head with Flex/AIR apps if you plan on making more, much of what Adobe does is work to make integration with their technologies as seamless as possible. Honestly that alone has been what has excited me most about using CFML and the recent addition of open source alternatives in Railo/BlazeDs I have been building Flex apps powered by Railo/BlazeDs without paying a dime to Adobe.
I guess the bottom line is that the Java platform (via CFML) and the Flash Platform (via Flex Framework ) are both not going anywhere any time soon, and for that matter neither is PHP so I think you will have a solid set of skill from which to build on either way you go.
ColdFusion is huge in Government, both at the Federal and State level. I moved to the D.C. area in large part because of the number CF jobs available around here.
So, you could always use it for gainful employment.
Update: Some links as requested
Ben Forta's list of sites using ColdFusion, Government category
Who uses ColdFusion - a list of ColdFusion development shops
GotCFM?com - a list of sites using ColdFusion; lots of government sites there (look under "N"; the "Government" category isn't fleshed out)
Adobe.com - abridged list of customers, some with links to case studies
Monster.com search "coldfusion" in Washington, DC
Dice.com search "coldfusion" in Washington, DC
You can get a basic reading of what people are paying for via (shudder) RentACoder: http://www.google.com/search?q=coldfusion+site%3Arentacoder.com
You can use coldfusion everywhere and as much as you like in PHP. There's enough free engines (Railo, Smith, OpenBlueDragon) that you can load into Tomcat instances, or use something like stax to put a coldfusion app into the cloud.
How far you do or don't go is up to you. I find that I write about 1/2 the code in coldfusion that I do in PHP. Maybe it's syntax that I feel less, I don't know.
But build your first project, I think the dots to connect will become apparent on their own

What is the quickest way to a very simple blog? [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 3 months ago.
Improve this question
I am about to start a new project and would like to document its development in a very simple blog.
My requirements are:
self-hosted on my Gentoo-based LAMP stack (that seems to rule out blogger)
Integration in a django based website (as in www.myproject.com/about, www.myproject.com/blog etc rather than www.myproject.com and a totally different site at blog.myproject.com)
very little or no learning curve that's specific to the blog engine (don't want to learn an API just to blog, but having to get deeper into Django to be able to roll my own would be OK) According to the answers so far, there is a chance that this excludes Wordpress
Should I
a) install blog engine X (please specify X)
b) use django to hand-roll a way to post new entries and a page on my website to display the posts in descending chronological order
Install Wordpress. It is the most common engine for a reason. It's PHP but will play just fine in your environment.
If you're the perfectionist kind, roll your own.
It isn't that hard
You learn something useful
You'll get exactly what you want and need
Be warned that you may run into a quagmire fighting comment spam, fixing security holes, etc. But it'll probably be a fun project.
If you are the practical type and ready to face some integration pain, use an existing engine like WadcomBlog (Python) or PyBlosxom, or something completely different like MovableType or WordPress.
Here's a simple Django blog example to get you started.
Some pros and cons of rolling your blog engine this article by Phil Haack.
Jeff Croft apparently rolled his own as well.
I've tried WordPress recently and am very disappointed. As long as you don't want to customize anything, all is well. But imagine you want to install a plugin to handle Markdown editing. There the trouble begins. The plugin architecture of WordPress is seriously screwd up. In the case of Markdown, this means that no good solution exists. The existing plugin is a series of (quite well-documented) hacks that fall apart at a hard stare.
I never intended to write the least bit of code for WordPress but the last few days, I've been knee-deep in PHP the whole time, hacking plugins as well as the WordPress core in order to make it work for my special scenario (which really isn't all that special, I'm just a perfectionist). Which is a pity, because the documentation of WordPress is more than just patchy. I don't use it anymore, I grep for functions and read the source. All in all, one of the less enjoyable OpenSource projects.
You can spend hours if not days customizing Wordpress with plugins, themes, etc...
I would go with a 0 installation solution, such as blogger (https://www.blogger.com/start)
You can even use our own domain name with it if you need do.
EDIT: Plus, if you ever get slashdotted, digged or redditted, google can handle the traffic, your server probably can't.
For me, Wordpress is still the quickest & simplest to setup and get going. It can be extended to do pretty much anything or you can keep it real simple. Runs on PHP, but unless you want to write plugins for it, you never need to write code
Have a look at Blosxom. It's file-based, so no crufty database. The basic idea has been ported to different languages, pyblosxom is in Python.
I use PyBlosxom for my personal blog, and I think it is pretty useful if you need something minimalistic. The deployment is simple, as you need only the python runtime and cgi. You might want to have some basic knowledge of python at least if you are going to use it, though.
Have a look at Blosxom. It's file-based, so no crufty database. The basic idea has been ported to different languages, pyblosxom is in Python.
I wrote the engine for my personal blog in maybe 6 hours during one weekend, with comments, labels, simplified markup, sitemap, feeds and so on. It was great fun and I learned a lot of Django.
If you decide to go this way, look at generic views, this Django feature will save you much of work (and learn few useful tricks).
I Haven't tried it myself yet (other than the demo), but I've bookmarked Chyrp so that if I ever need to set up a quick & simple blog (kind of like you're describing) I could try this. So check it out, might be a good option for you.

Should a novice programmer spend time learning to write "desktop" applications these days, or is the web where it's at? [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.
As a novice, I've spent time learning a smattering of C and a fair bit of PHP. I've looked at writing desktop applications for Windows, but there seems to be a fair barrier to entry due to complexity of APIs. Is it worth learning this, or will native applications become less common in the future?
The way I see it, the only desktop application I ever use is a web browser and a text editor as well as the obviously the OS itself. Everything I need is online now.
Is learning to write non-web applications a useful skill going forwards? If so, what should I learn?
I don't think it is ever a good idea to choose one side and stick with it religiously. I think a good engineer will expose themselves to as much as they can so he can make an informed decision about which is the best tool to complete a task.
In other words, don't choose a platform, OS, programming language, etc. and then ignore the others. It is best to be well-rounded in your skill set.
There will always be a market for native apps, although a lot of stuff is moving to the web and there's more scope than ever before for web based apps, native GUI applications are never going to go away entirely.
However, it's really, really hard to give you any really useful advice other than stick with what you like. If you use web stuff exclusively, it would be a bit foolish to go and become a windows GUI programmer :)
This may get modded down - but I'm going to say it anyway.
You can either program or you can't. About 18 months ago when I was looking for a new job, I was looking at the market and I was doing a lot of .NET but a few places wanted me to do JAVA.
I was doing Web Services, they wanted someone to do other stuff...At the end of the day it came down to this - if you know how to code you know how to code. If you're writing desktop apps right now and say in 6-8 months you want to move to some ASP.NET MVC, you'll be fine.
It may take you a bit of start-up time to learn the syntax and get a feel for some things - but in the end you'll be fine. I say this holds true for all the new languages...Skill is skill
Non-web applications will be very useful for the far future (as I see right now). We will not be able to do anything with the efficiency as a well written desktop application online using an interpreted scripting language that has to use a network protocol to communicate with the client.
However, if you are interested in networking, maybe you can try a little of both. Make an rss reader, a simple web browser, or an IRC client. Their all great projects.
You should learn whatever you want to learn. If you don't you'll probably find it harder going than you need to.
I personally started writing desktop applications for Windows, because I used it at the time. These days I do think that you're correct - you can produce a website / online-application without investing so much into the process.
But even writing a decent web application is going to be hard if you're new to programming. A standalone page is simple, but when you add databases, security, and administration into the mix then things can grow.
In my oppinion, a novice should conentrate on the basics and internals of the language of choice. Graphical or web interfaces should wait until you know what you're doing in the backend. I personally would suggest you start with console programs, but I guess that depends on the platform you're using. Maybe desktop interfaces are easier to start with on Windows.
The best practice (in my oppinion) is to write a solid backend with the functionality you want to provide and write it in a modular way, so you can later decide if you want to provide a desktop interface or a web interface (or both). The choice for the user interface shouldn't matter in the beginning.
Learning non-web applications will always be useful. There will always be applications that are not suited to be web apps. Even if everything moved to be a web application, the server side code and web browsers still need to be written.
At this point in time, if you're interested in the Windows platform then I would advise looking into C# and WPF. Those technologies are used in both native and web environments.
Web development is all well and good but the majority of systems even if they have a nice web front end still consist primarily below the web level, a bit like an iceberg.
End most web implementations are n-tier in design with the lower levels like data access and integration with peer servers ocurring in non web languages.
As I see it there seems to be one pervasive language that can touch all these levels and than is .Net Framework. Notice I make no specification about c#, vb etc. I consider that to be a matter of taste. However I can't remember seeing an n-tier banking website using php to do the data layer. Nor an online ordering website that would use ruby to talk to its jd edwards server.
This is where the heavyweight languages still pervade and if thats where you want to work then learning the .Net framework in whatever language variant you choose is the way to go.
Master one discipline then move to the next one.
I am also at the very infancy of learning business application development. The very step I took was to study database. Majority of the applications in the real world is data-centric. It is good to start with desktop application. Do some drag-and-drop then study the code behind. I am doing the same thing with ASP.NET. I have downloaded tons of starter kits. It all depends on your learning style. For me, I can learn more easily by "learn-by-doing" than by digesting chunk after chunk of set theories. That is why cookbook and headfirst books perfectly work for me.
I believe that the future development model for "Web" applications will more akin to the current model of desktop application development. By which I mean that tomorrow's Web apps won't be HTML/AJAX efforts that are difficult and expensive to maintain, debug and test, they'll instead be developed with compiled languages that target a platform that's already available in the browser. Flash, Silverlight, and (to a lesser degree, it appears) Chrome are the current paragons of this idea.
So maybe it's not such a waste of time to learn those "complex" APIs. My group builds WPF applications and I personally don't find those to be any more complex than the the current crop of HTML/AJAX projects.
From your background in languages, I noticed you only mention PHP and C. Neither language is strictly speaking an object-oriented/OO language. You really should learn a traditional OO language like Java or C#, as the majority of jobs are looking for those skills. BTW, read Yegge's advice on what languages a professional developer should learn, and think for yourself about what you should do.
Assuming that you're interested in enterprise application development, I would have to say that that field is transitioning from traditional web development (present stuff from a database on a web page) to rich internet applications (still present data from a database, but the front end begins to approximate a desktop application). Building a rich internet application will require concepts that desktop UI developers have known for a long time. Therefore, I don't think you have to chose between web development and desktop development.
I agree, you should learn what you want to. Once you have an understanding of Web, then learn some desktop programming to broaden your horizons a bit. You'll never know when you'll need it.
But, also, if you're looking at learning windows desktop development, then you should definitely look at C# and/or VB.NET. The .NET Framework is by far the easiest way to develop desktop app for Windows; much easy than C++ from what I understand (I actually didn't spend much time on C++ myself).
#Rich Bradshaw,
I think you can get answer on your question by looking at any job seeking site.
what should I learn?
Whatever you like and can bring you enough money.
Thats a very good question.
I know nowadays that most app development that im aware of is web apps.
But with languages such as flex , i wouldnt be suprised if the desktop apps came back again.
To be well versed you should do both. Skills in one area may or may not translate into the other very well. The lack of state for example trips up lots of desktop developers when they start building web apps. Of course, your experience may vary
A professional .NET programmer should handle both webform and winform.
Even you start from webform, but finally, you will have chance on touch winform.
Just like a topic "VB vs C#", you will not see a .net expert talk about that, because finally, you should know both of them.
There will be cases where things beyond the web can be used:
Scripting languages/console application - build scripts come to mind here for an example but also writing batch or command files to do simple tasks like handle deployment or to do some other simple task that is likely better done from within a black box rather than manually doing something over and over again.
Windows services(WCF) - These are also possibly useful for monitoring things and sending off those, "Server is down!" messages for someone to go and find out what went wrong.
There is also something to be said for middleware and back-end development where one would write web services or handle querying a database or inserting data into a DB that may not be the same of front-end web UI work, just to give a couple of other examples of software development work out there aside from the embedded systems and mobile stuff that is also non-web and non-desktop development in a sense.