views:

4924

answers:

85

I have been programming for 20 years. Many things changed since I wrote my first BASIC lines. Now we have IDEs, frameworks, debuggers, profilers, versioning tools and many other helpful toys.

So which developments in the past 10 years have made programming easier? And what was necessary to sacrifice for it?

+123  A: 

Garbage collection.

grapefrukt
Just saw that it was for the last ten years, oh well.
grapefrukt
While the whole concept of Garbage collection has existed for more than 10 years, It was really within the last 10 years that using garbage collected languages really got popular.
Kibbee
Or that computers got fast enough that garbage collection isn't the slow down that it used to be...
Paul Tomblin
GC has been around for 50 years and a lot of popular languages had GC for a lot longer than 10 years: Lisp (1959), Smalltalk (1966), APL (1965), Perl (1987), Python (1989), Ruby (1993), PHP (1995), JavaScript (1995), Java (1991) and so on ...
Jörg W Mittag
Garbage collection is older than that.
ldigas
GC is messy. Programmers are lazy, but garbage collection goes beyond laziness.
Time Machine
+73  A: 

Stackoverflow

Greg Dean
Brown-noser :-)
Les
Nah, for the time waster SO is, I wouldn't give it so much credit ;)
Pop Catalin
@Pop Catalin LOL - thats true
Greg Dean
It's good, but it ain't that good
Mark Rogers
+10  A: 

Eclipse IDE.

Had to sacrifice: Vim keyboard commands.

jonstjohn
You should check Eclim out: http://eclim.sourceforge.net/
Jonas
wish I could upvote a comment - thanks - been looking for this for a while
jonstjohn
jonstjohn: How true ! (well, the second part)
ldigas
+31  A: 

Color screens :)

m_oLogin
You are right! Didn't think of that. :) But I know how I dislike editing XML without highlighting. - nice one!
MrFox
What, you mean you don't have the gray/light gray/dark gray setup?
VirtuosiMedia
In the past 10 years?
Andy
My workstation had a color screen in about 1988 or so (with the "X10 Windowing System").
NVRAM
Color screens are a little older than 10 years. Maybe you were thinking about color screens with really high resolutions ?
ldigas
Bah... two colors is enough! Black and amber!
Spoike
how about cheap, large displays? Two (or more) monitors were a relative luxury 10 years ago, now they are very common and a huge productivity booster.
Bryan Oakley
@Bryan Oakley: I remember seeing a Macintosh II with four screens set up a long, long time ago. I was very impressed by how windows went across screen boundaries, and wished I were rich enough that I'd even consider buying multiple monitors (which were not cheap back then).
David Thornley
+10  A: 

Debugging environments that support edit & continue.

Nik
All Smalltalk IDEs had that from day 1 (1966). In fact, in most ST IDEs, the debugger *is* the IDE. Also, Lisp implementations had it probably even before then.
Jörg W Mittag
+3  A: 

Edit And Continue.

Kibbee
+220  A: 

The Internet.

oxbow_lakes
20 years, certainly. 15, maybe. Not 10. I think Google itself has been around for 11 years or so.
Adam Jaskiewicz
The internet is a really, really great place -- for (more than) porn!
Randolpho
The internet is for porn...
Sakkle
The Internet started in 1969. That's not exactly in the last 10 years.
Jörg W Mittag
It really started to expand and get into the public eye in the last 20 years. In the last 15 or so it has come into common use (and Amazon was founded in '94). 10 years ago it was already huge and mainstream. Not gonna downvote, because it's certainly important, but the question specifies 10 years.
Adam Jaskiewicz
@Jorg - I don't recall anyone being able to google "can I have teh codez" wearing Spandex and listening to Ziggy Stardust. The link I posted was to Google - I was making a joke along the lines of "Google is the internet". Lol!
oxbow_lakes
Too bad the top voted answer is a joke.
Robert S.
@oxbow_lakes You're still wrong, joke or not. Google was incorporated in September of 1998, so you're a few months off :P
Adam Jaskiewicz
Google is probably the more correct answer then the "the internet", but internet is fine. Companies becoming more involved in the internet was in the 92-95 time frame. The internet being the main source and replacement for Help in your IDE is definitely in the last 10 years.
bruceatk
@Randolpho: "I'm pretty sure if they took all the porn off the internet, there would be only one page left, and it would be called www.bringbacktheporn.com".
ldigas
GOOGLE is NOT the Internet !
n00ki3
Google is not the internet. Pfffft. Lol!
oxbow_lakes
If google has the power to blacklist the whole of the internet (itself included), then I would contend that google IS the internet.
Kyle Trauberman
+69  A: 

www.google.com

Greg Dean
+3  A: 

Google (well, the internet in general, but mostly Google)

Ferruccio
Google makes the internet easier. :)
Randolpho
I used to get around confortably with altavista as well.
ldigas
A: 

The Internet. It allows us to find information on how to do things a lot easier. It also makes sharing libraries easier (think CPAN for perl).

gpojd
+1  A: 

The internet - makes it a lot easier to find answers to questions.

I'd add open source to the list too, as open source projects have provided lots of great tools that developers can use out of the box for free to do many complex tasks.

Eric Petroelje
Bear in mind that, while the Open Source Initiative may be less than ten years old, there was a whole lot of free (as in speech) software already, including Gnu stuff, BSD, Linux, Apache....
David Thornley
+22  A: 

I'm going to go with a refinement of the software development process.

Moving from process models such as the waterfall model to newer methods like an agile/iterative approach have made software development much easier.

Probably the biggest sacrifice of these new processes is a harder to determine code complete date.

jjnguy
Code is "never" complete. Business systems continually evolve. If you ever get to the point where you think code is complete, I think you miss the point of the Agile methods. IMHO, anyway.
Chris Kaminski
@Chris, what is **not complete** on a Hello, World application?!
Time Machine
+7  A: 

IntelliSense and autocompletion (making it easier to use more descriptive names for classes / variables ... )

Unit-tests (having some kind of permanent test-suite, making it easier to refactor code)

Static code analysis tools

ORM tools and DI containers

As noted before; the Internet and the vast resources that can be found on it. (MSDN, blogs, articles on The Code Project, ... )

Frederik Gheysels
+151  A: 

Any IDE with auto-completion :-)

Paulo Guedes
im pretty sure crutches have been around for hundreds of years...
In what sense has autocompletion been around for hundreds of years?
mquander
the wheel has been around for longer -- stop being lazy and just walk everywhere!
jonstjohn
when did Vim get this feature? I think it's probably quite long ago... (ctrl+N in insert mode, for anyone who cares).
rmeador
Which, according to Petzold, rots the mind ;) http://www.charlespetzold.com/etc/DoesVisualStudioRotTheMind.html
alphabeat
@theman_on_vista - When you have a broken leg do you prefer to get around with or without crutches? Yeah, it's possible to crawl, if your time isn't worth much.
Bratch
@Bratch, a broken leg and not knowing common libraries are two different things. While CC is a nice feature, one should be able to work without their favorite IDE. Both the 'crutches' and 'broken leg' arguments are straw men, imho.
Tim Post
It's just an attempted analogy about making things easier. Many of us can work without an IDE, but this is about making it *easier*, and in many cases faster, which is not always better, as Petzold makes very clear.
Bratch
Before I had an IDE with autocompletion. Now I have a "dynamic" language that makes it impossible. We get quite a bit of autocomplete anyway, but it's not like with a static and statically-typed lang.
Yar
Very much agree with you yar. I usually work in VB.Net, and the thing I miss most when using languages like PHP and Ruby is really good auto completion.
Kibbee
+12  A: 

intellisense.

Artur Carvalho
+19  A: 

Unit test frameworks and mocking. In order to effectively benefit from it you have to sacrifice "code-like-hell programming" and invest time and effort in disciplined test writing. I could go back to using VI and separate shells to compile in instead of an IDE, but I wouldn't give up unit testing.

tvanfosson
+1 I'm dissapointed this has so few votes. TDD is more profound than OOP, IMNSHO
TokenMacGuy
indeed, TDD was the first thing that came to my mind, too. And in fact, I usually develop with vi and multiple shells on multiple virtual desktops.
Tetha
+112  A: 

Source control. Sure source control existed for much longer, but the advancement of source control systems with things like SVN, Git, and others have really helped make things a lot easier. Source control was much worse when all we had was CVS and SourceSafe.

Kibbee
CVS wasn't that bad, within its limitations. SVN is a better CVS, but not stupendously better. Distributed VCSs, like Git, do seem to be newer than ten years, and are much better.
David Thornley
I agree. CVS wasn't that bad. It's just been replaced by better things. Now Sourcesafe was bad....
MatthieuF
A: 

Very little has made software development easier. The technology is certainly much better, but the difficulties are still due to communication and social issues. Those haven't changed.

It's certainly a joy to not have to worry about every byte, and who doesn't love dual flat-screen color monitors?

I think the scale of the problems have expanded to the limits allowed by all those technical improvements, so the cutting edge problems still seem hard.

duffymo
Great viewpoint. While the tools have certainly get better, it still takes many years experience and a rare mindset to get a good programmer. I think that even though tools will get even better, it will be a very long timer (century or two) before average people can program.
Kibbee
+8  A: 

Red Bull - it gives you wings.

JaredPar
Yes! Although before that there was Jolt.
sk
Yeah, but until the mindlink is perfected, you still need hands to program.
Gamecat
before Jolt, Mountain Dew
jonstjohn
And before all of them... coffee :)
Sakkle
It's still coffee, but today you got to have a big noisy espresso machine at home too be "cool".... However I still drink normal high quality dark coffee with nothing in it, dark and strong :)
Johan
+4  A: 

Moore's Law

Greg Dean
was established in 1965, 44 years ago
amdfan
sigh - Does that mean it stopped in 1999 (10 years ago)? I'd argue it was reaching its critical mass just around that time.
Greg Dean
greg dean, o yea? and i forget, you are an authority how? go back to your vb.net you scrub
Stopped for processor speed about the beginning of 2003. So, you're saying that the lack of improvement in processor speed helps programming?
David Thornley
@therman: That was rude and contributed nothing to the discussion.
amdfan
LOL, @theman_on_vista - clearly the recourse of a week mind, well done.
Greg Dean
@David -I'm saying, that because computers are so fast and have tons of memory, programming got easier. Both in terms of productivity and requirements/feature. 2003 or not that is still well within the 10 year window (it's expeonential, so the last years = the biggest change)
Greg Dean
@Greg: Exponential in number of transistors, last I looked, but the speed improvement since 2003 is still disappointing. Fortunately, memory depends on transistor count. However, I don't see how it makes my job all that much easier.
David Thornley
@David Thornley- Why are you so caught up on 2003 and speed? If you don't think it makes your job easier, go out and get a computer from 1999 (10 years ago) and use that for dev. While you're at it, get one for all your users too.
Greg Dean
Moore's Law definitely helped. If you look at what most programmers do these days: CPU Speed is for most problems not really the limit anymore. Memory is also for most applications no longer an issue. And disk space is virtually illimited.
Laurent
+20  A: 
  • Stepping/Breaking into code
  • IntelliSense
  • Improved GUI Interface
  • .NET Framework
  • Internet (HTML/ASP.NET/PHP etc)
kevchadders
All but one of those (.NET Framework) were around more than 10 years ago.
Robert S.
I would argue that the .NET framework is just a refinement of Java.
cdmckay
@cdmckay: Yeah but you would be wrong. :) Have you worked with Java, I'm mean yuk... C# is so elegant! C# != Java (even Refined)
Bobby Cannon
I have worked with Java, and except for the setters/getters issue (no first-class properties), I'm not sold on C# as all that much better. Better for sure on Windows, but guys, I don't develop just for Windows.
Chris Kaminski
+1  A: 

Version control. Without it I wouldn't be able to tele-develop, and the open source community would probably not exist.

Soviut
I'm stating that the open source community was founded on widespread use of version controlled repositories on the internet. Hell, GIT was invented as a distributed version control for the Linux kernel.
Soviut
im sorry i misread, i didnt realize you were referring to the "community"
In 1999, the community was primarily using CVS, which was then state of the art. Distributed version control (git, arch, mercurial, etc.) may be less than 10 years old.
David Thornley
+1  A: 

punch cards! :)

oh, wait. maybe not.

42
+48  A: 
Gavin Miller
Those have existed an been used for more than 50 years now, ever since Lisp (1959).
Jörg W Mittag
Which programming languages in particular?
jmucchiello
@Jorg - khm, khm, fortran (1957). Thank you :)
ldigas
CSS isn't a programming language: it's some kind of voodoo... ;-)
peSHIr
<conspiracy theory>Java is missing from your list</conspiracy theory>
Kelly French
+16  A: 

I think a big step forward was:

  • syntax highlighting
  • code completion
  • educational tools like ReSharper
  • Internet
    • online examples
    • online documentations
    • newsgroups
    • download of libraries
    • etc.
  • powerful IDEs
  • powerful debuggers
  • frameworks and access to them (see Internet)
  • 10 more years of experience in software-development
Gambrinus
+6  A: 

Greater acceptance/use of continuous integration.

Ola Eldøy
+2  A: 

OO. And, largely as a consequence, libraries. We had them before, but now they are far more powerful.

Daniel Daranas
A: 

Jon Skeet ;)

Ola Eldøy
lol, man crush?
I also think he is more than ten years old.
David Thornley
+13  A: 
  1. OOP
  2. .NET framework
  3. IntelliSense
OOP is more than 40 years old, not 10.
Jörg W Mittag
Well apparently this person hadn't used OOP before 10 years ago.
jmucchiello
+11  A: 

Higher-level languages like Ruby and Python.

To take advantage of them we had to give up our perfectionist control on memory, performance, etc. and accept that higher-level languages cut down on the time it takes to make the damn thing work.

Kevin Conner
Ruby has been around for 16 years, Python almost 20. Higher-level languages have been around since Lisp (1959).
Jörg W Mittag
As for Ruby and Python, yes, but now they are flourishing. As for Lisp, I meant more like increasingly higher and higher-level languages. Not that Lispers need anything higher-level than Lisp.
Kevin Conner
+28  A: 

For programmers targeting the Microsoft platform;

.NET has been a HUGE leap in every possible way.

Compare that with VB6 and classic ASP. It's massive!

John MacIntyre
You think VB6 and Classic ASP are bad, you should check out MFC.
Kibbee
I've used MFC. After using VB3 MFC was a god send! ;-) ... but trust me ... I wouldn't go back.
John MacIntyre
Maybe Microsoft can get it right one of these times. I've been coding in C / C++, FORTRAN and BASIC since the 70's. UNIX had it right when it made the lowest common denominator the source used to create the OS. Linking between C, FORTRAN, PASCAL, COBOL (note I didn't say BASIC) is a snap since the base libraries are all written in the same language.
Dave
Yup, .net is great...guess where they copied it from?
Pyrolistical
A: 

Add-ons like Visual Assist and SharpDevelop.

PoweRoy
+3  A: 

More powerful languages like C# 3.0, Ruby, and Python with features like closures (inner functions), generators/iterators (the latter being useful to simulate coroutines), delegates (passing bound functions as parameters), Ruby's continuations, and C#'s query language (LINQ). IMO C# and the lesser-known boo are especially exciting because you can get high performance comparable to C++. There had been some languages before that had features like this, but they never enjoyed popularity. In the future, I think more features imported from functional and logic programming languages will make skilled programmers even more productive.

Garbage collection makes a huge difference.

Intellisense.

The Internet.

Qwertie
Darn little of what you're talking about wasn't available before 1999.
David Thornley
Oh? What *popular* language had all of that before C#? There was the internet in 1999 but it's become more useful, and there was GC, yeah, but weren't most people still using C/C++? There was Intellisense in 1999 but it's more reliable now and has a lot more features.
Qwertie
I was programming in less popular languages back then, myself. You are right about importing features from functional languages - language designers have been copying features from Lisp into languages with actual syntax for decades.
David Thornley
It really is important whether a feature is mainstream or not. I don't think my boss would be too impressed to learn I had written my latest code in LISP. But C#, great.
Qwertie
+6  A: 

Google

John Sibly
-1 is duplicate
GogaRieger
+4  A: 

Programming languages such as Java and C# were designed to remove and/or limit the source of software programming faults found in other programming languages such as C and C++ (think pointers, memory management...). Ada was designed that way earlier but did not have the public success of Java and C#.

These same programming languages also helped because their specifications cover:

  • Compile time behavior
  • Run-time behavior
  • Debug and run-time inspection of data-structures
  • Extensive standard libraries

And they completely avoided the grey-zones found in the specification of C or C++ where quite a number of aspects of the actual language functionality or behaviors are compiler specific.

Laurent
Java is over 10 years old.
David Thornley
Even though Java is over 10 year old it really became mainstream in the past 10 years for business applications. Just to give one example it's run-time performance has been dramatically improved over the past 10 years.
Laurent
+1  A: 

Hardware getting really fast and cheap.

Ferruccio
No way, in the DOS era you never had to wait several minutes for some designer to open, everything was basically instant there, hit Enter, and a half second later it was open
Pop Catalin
I didn't say anything about software ;-)
Ferruccio
In the DOS era, you had to worry about not using too much memory and not taking up too much disk space. Today you can just use what you want and tell the user to buy a new computer if they need more.
Dan
+51  A: 

Open source libraries. Most of the code you needed to write 20 years ago is now available for free. Today people assemble applications, they don't mainly write new code.

Stephan Schmidt
And sometimes it makes you wonder just how much those libraries buy you in terms of functionality and time-savings... Sometimes.
Chris Kaminski
@darthcoder - agreed. Sometimes :-).
Owen
+3  A: 

Design patterns, kinda.

While it is foolish to ask "What design patterns can I use to solve problem X" at the beginning of the project (since that mostly leads to overly complicated and ugly solutions) they are invaluable as a short hand when discussing solutions with other developers.

Rontologist
I had the Gang of Four book more than ten years ago.
David Thornley
They have been around for more than 10 years, but they didn't become popularized until quite a bit later.
Rontologist
+3  A: 

Interestingly enough, I believe the very same answers provided are also true for the question "What has made programming more difficult in the last 10 years".

Are all these wonderful new 'toys' creating a layer of abstraction that spoils us into not really understanding the fundamentals of the underlying technologies, thus causing longer troubleshooting cycles? Especially for the new/younger breed of programmers?

See "Leaky abstractions" (http://www.joelonsoftware.com/articles/LeakyAbstractions.html)

Konrad
When I use "new" abstractions like C#'s lambda functions, I for one know exactly how it works, sometimes down to the assembly language level. Of course, "new" programming language features aren't usually new, they're just new in mainstream languages. And then there are productivity-enhancing tools like Intellisense, which don't create abstractions, they create transparency, so you can learn how a program works more quickly.
Qwertie
+4  A: 

Do you think programming is easier ? I still seem to spend 8-16 hours a day trying to make stuff work...

Scott Evernden
Depends on what "stuff" is. Some tasks are clearly easier now, some programming problems have yet to be solved.
pearcewg
I maintain that "programming" meaning what "Programmers" do isn't any "easier" than its ever been .. Yes we have more lofty problems and power tools , but the job remains a challenge. If it was truly *easier* then more ordinary people would be doing it ...
Scott Evernden
+1 for a sudden outbreak of common sense.
Tim Post
The point isn't working shorter hours, it's getting more done with the hours you have.
Qwertie
+16  A: 

BLOGS

by great programmers like Guido von Rossum , Bruce Eckel, Jon Skeet ...

TheMachineCharmer
And Jeff Atwood?
Peter Mortensen
@Peter ya sure :-)
TheMachineCharmer
+11  A: 

Sometimes I think that the Internet/Google has made programming harder rather than easier.

10-20 years ago pretty much every programming language or tool you bought would come with a nice ring-bound manual covering almost everything you need to know about it.

Whilst good hypertext documentation is obviously preferable to a big pile of paper, a lot of projects these days - both open source and commercial - seem to think they can ship with next to no documentation and solve this by giving you a couple of samples to download and installing phpBB and calling it a "Support Forum".

I do long for the days of exhaustive reference manuals rather than some default Javadoc that adds no value at all. (setAutoWidth(boolean autoWidth) turns AutoWidth on and off? Really? I'd never have guessed, but where do I find out what the AutoWidth feature actually freaking does?)

Dave Webb
I agree. Nowadays when people have lots of information at their disposal, they look and look and are unsure if "that way is ok?". In the old days, you'd just find the one way that works and do it. Much more productive. You should never leave too many open options for a newbie.
ldigas
Greater truths have never been spoken. Most of the Bigger projects (Apache, JBoss, etc) don't have this issue, but every API Reference needs to come with an API Tutorial.
Chris Kaminski
+1  A: 

Multi-monitor graphics cards.

Okay, that's whining on a high level but having the web browser open next to my IDE really helps.

Aaron Digulla
Not to mention having the application that you're debugging running on one monitor whilst the IDE sits on the other one. That's been a godsend for those of us who work on the user interface of a program.
RobH
+1  A: 

IDE's and frameworks which highly reduced the time of development - called RAD.

Lazy Geek
A: 

Web applications becoming prevalent have made things easier.

Don't have to deal with reproducing issues on individual client machines much. Many of the issues occur on the server and can be fixed and the app can be deployed again very easily.

They do have their problems, such as browser incompatibilities and the challenge of how to perform privileged actions on client machines.

IMO the pros outweigh the cons though.

sjbotha
Web apps are OK if they're small, but IMO, large apps have no place in a browser. Large apps that want to use the Web should, IMO, use the Google Earth model, where the app resides on the client machine and goes out to the Web to get what they need.
RobH
Web apps, in the form of Java applets, are more than ten years old.
David Thornley
+1  A: 

I'm not a web developer (yet), but for the desktop, tools have gotten a lot prettier and chrome-plated, but I think the most basic advances happened earlier:

  • Unix: C, diff, scs, ...

  • C++ and its ilk

At the same time, everything that has supposedly made programmers more productive has (for most of us) allowed us to do the same functionality with lots more code.

Mike Dunlavey
+1  A: 

Openness.

Today's it's expected of any decent language/stdlib that you'll have all the documentation available for free and searchable on the internet, backed up with public discussion forums.

Programming ‘in the dark’ because the docs were great big dusty books that cost a fortune and/or were only available to partners was a disaster.

bobince
A: 

Hmm, a little brainstorming. OO with Smalltalk and its IDE, oh, much older. Functional programming with Lisp and Emacs, hmm, by far older. Concurrent programming with Erlang/OTP, hmm, more than 20 years old. And logical programming with Prolog? Don't talk about it. So perhaps ODBMS or RDBMS, no, both older. And dirstibuted computing, hmm, no, RPC and CORBA have been around for a long time, even multi-platform. A good operating system? Unix is already very old. The internet? That too. at least open source software? No, that's also more than 10 years old.

Damned, I've got to admit that there's nothing real new for the last 10 years. So let's do our best to change this. +smile+

mue

Mue
why did you smile
Call it exhilaration.
Mue
+23  A: 

CPU speed of course!!!

10 years ago, there were still 286 machines, and the simplest program could take minutes to compile.

None of the others mentioned factors would have succeed if we still had slow machines.

I remember the first time I opened ProjectBuilder or Netbeans. It took forever and eventually I had to restart the machine.

OscarRyz
Fifteen years ago, I had very fast compiles on my blazing 68030 Mac using Think C.
David Thornley
Hard to fit running unit tests in to your programming habits on slow hardware.
Jay Bazuzi
http://stackoverflow.com/questions/630602/what-made-programming-easier-in-the-last-couple-of-years/630655#630655
Greg Dean
@Greg. Yeap, I saw that in my way to here. Additionally I added my reason why that have made easier.
OscarRyz
10 years ago I had a Pentium II. The original Pentium came out in 1993. There may still have been some 286 machines around 10 years ago, but I don't think they were the norm. Faster machines have helped, but I think your timelines are a little off.
Kibbee
Mmhh true.. perhaps 386? :P We should also consider the geography. Public schools in Mexico in 1999 still had windows 3.1 running on very very slow hardware ( true perhaps not necessarily 286 ) but certainly not Pentium. Or isn't? Geee, I start confusing dates and I'm only 30!! :S :S :)
OscarRyz
Even the absolutely ancient school machines I "maintained" for one old lab (microchannel never caught on so there where no spare parts available) in 1999 where IBM PS/2s (386SX 25mhz). The closest to 286 I could find in 1999 was a handful of DOS 3/GWBASIC machines used to control wood working tools.
David
Probably it was just the perceived speed. In 1999 universities had the fastest internet in the country but the machines speed was terrible. I remember I can see each pixel ( without exaggeration ) drawing on the screen one by one. A simple rendering took about 40 secs to 2 mins.
OscarRyz
And closing a browser took about the same amount of time. The funny thing is one one friend opened "hotmale.com" instead of "hotmail.com" heh e heheh .. It was the most embarrassing time, waiting for the IE3 ( or 4?? ) Or Netscape to close such webpage, showing a lot of "hot male's" pictures. :) :)
OscarRyz
+8  A: 

Built-in libraries and frameworks.

Need to interact with the file system? Need to make a web application? Need to talk to a database? Need to use regular expressions? Need to send email? Need to use a hash algorithm like MD5? Etc. All of these things used to be hurdles that would require either tracking down the right 3rd party library then figuring out how to license and use it or spending significant developer effort to create the functionality from scratch. Today all of these things come for free with the most popular languages (C#, Java, Perl, PHP, etc.) as built-in libraries or frameworks.

Wedge
+1  A: 

The internet and the wide-range, immediate availability of information and example code from various support communities.

Robotsu
Echo's my sentiments exactly, arguably companies development teams are as big as the interested community that utilise their technology due to the readiness and willingness of people to offer their help and experience for free.
Dean
A: 

More and better applications that needed to be created. Our society changed with the PC, as PCs became more integrated into everything, the need for programs. The need for programs meant competition. Programmers honed their skills, made better tools, and by repetition and the need to move forward - programming became easier. Though, I do believe "easier" is in the eye of the beholder. Perhaps in the future those things today will be "easier" when new skills, tools, and competition begin anew.

johnny
A: 

Abstraction. The more and more code others write for us, the less we have to do to get things working.

Giovanni Galbo
+1  A: 

Looking over the previous answers, the only concept we didn't have ten years ago is:

Distributed version control systems (I didn't find a reference to them before this millenium).

Everything else has been implementations, earlier ideas becoming more popular, things becoming less expensive, and information becoming more available.

Either the pace of innovation in software development has gone down, or the length of time it gets a new idea to be implemented and into general use is normally greater than ten years.

David Thornley
I don't think it has to be invented in the last 10 years, to count. Lots of times things don't become widely adopted for several years after their initial creation.
Greg Dean
The question asked for the developments of the last ten years.
David Thornley
+21  A: 

Automated Refactoring Tools

The most important ones are Rename and Extract Method, but Extract Class, Move Method, Introduce Explaining Variable, and their inverses are pretty important, too.

Tools that get these right 90% of the time is great for labor saving, but then you must have good unit tests, the kind that only come from Test-Driven Development, so that means they're really for a restricted audience.

Tools that get them right 99.9% of the time are useful for everyone, regardless of development practice.

That's why the refactoring list in Visual C# is so small: we wanted to go for the "always right" algorithm, even though it took a lot more time on the schedule; time that could have been used to add more refactorings. (It's also why Rename is so slow.)

The result is that people buy Resharper to get a full catalog of refactorings (which are important), but I worry that they aren't aware of the differences between the builtin and addin refactorings.

Too bad we couldn't build a fuller catalog of refactorings, or made Visual Studio extensible enough that you could build your own high-reliability refactorings. Maybe in VS 10. I'm hoping.

Jay Bazuzi
I like this one - nice point
MrFox
For me, it's the really the *combination* of automated refactoring and TDD that provides huge bang for your buck. IMO it takes a fair bit of experience with TDD before you realize that one of its main purposes is to empower refactoring. Both TDD and refactoring are useful on their own, but when properly combined they are far more effective.
Sean Reilly
+1 Rename (resharper here)... is such a beast but with the right tool, it's something you do like every minute and you wouldn't before because it'd mean hunting through dozens of files, correcting namespaces and filenames as well as the actual calls and references.. wow, just wow
Oskar Duveborn
+2  A: 

Vim highlights the opening bracket when you type the closing one.

Steve Hanov
vi did brace matching 30-or-so years ago. This isn't new.
xcramps
vim never had it turned on by default until version 6 something.
Steve Hanov
A: 

No single answer - many factors.

This implies that virtually anyone who answered this question is wrong.

zgoda
+3  A: 

Short and simple answers (in no particular order):

  1. Model-View-thinking
  2. Agile methods
  3. Better hardware
  4. Internet
  5. Other
Hkkathome
+1  A: 

I've also been in the industry for over twenty years and have use a variety of programming languages. How about PICK? Anyone heard of that one? The years of old (1980's) we had to build our own code snippets, libraries and read these thick and not well written books on programming.

The Internet has empowered the developer. With it, vast resources can be searched in less time than it take to breath! Good solid answers by technical peers are there!

But again, without the Internet I could still do my designing, developing, documenting.

Yes the Internet has made it easier but what I find that has really made a difference is the advances of the IDE. Whether it's .NET, Java or whatever language . Using an effective IDE that supports intelisence and gives you a clean graphical, powerful and intuitive environment to build the applications in, is probably the most important to me.

I'm more productive than ever before, even though the languages keep evolving and I'm bombarded by new frameworks, design patterns, and technologies. I'm still productive because of my IDE.

As you know, languages have really evolved as well. Now there are discussions about all the new features available to the .NET developer. So many enhancements in such a short time but we still want all the power and ease of building these highly graphical interfaces, so we accept the changes - bitch a little - and then use them.

So to sum up before I write a book here, my order of what has made programming easier are:

  1. A graphical IDE
  2. The language (C#/VB.NET/Java) evolving
  3. New frameworks and technologies (WSE, ...)
  4. The Internet - because we need an open unbiased, unfiltered source of information

BTW... Good Question.

Rick
Is PICK this: http://en.wikipedia.org/wiki/Pick_operating_system ?
Peter Mortensen
+1  A: 

IMO Generics

Thorgeir
+/-0 for that one :)
Aaron Digulla
+2  A: 

Refactoring tools, to automatically (and without the risk of silly mistakes) perform common changes on code: extract method, inline method, extract class etc.

sleske
+1  A: 

What was sacrificed: Easier programming is accomplished at the cost of higher levels of abstraction - can't bang directly on the silicon like you used to. Means programs run slower and require more memory - but as long as computer speeds double faster than programmers' productivity and memory costs keep dropping, not such a terrible price to pay...

A: 

Twitter

Kyle Trauberman
+1  A: 

I think that things such C++ std library or even boost or Java with its sets of libraries allowed some significant improvements in life of average programmer.

Another useful thing is of course knowledge exchange networks such as codeproject, codeguru or this site.

I don't think that things such as interactive debugging are truly ground breaking - they are more about convenience. However, ability to consult one's fellow programmers outside of one's direct organization is pretty remarkable thing.

Boris Liberman
The C++ standard library is well over ten years old, and Boost will be ten in September. Back when I was younger, Usenet and mailing lists were the primary means of knowledge exchange, and they worked pretty well.
David Thornley
David, if you're saying that whatever I listed above is not that new, then there is no dispute here. If you're saying that these things did not bring any benefit to the programmers' public, then I have to ask you to clarify. After all, IMO this thread is about opinions, not the ultimate truth.
Boris Liberman
A: 

I believe that the increase of the abstraction has made things really easy. Just compare writing a program in C++ with writing a program in C#...

Luis Abreu
+3  A: 

Many of these things have been around in one form or another for a while. For me, if it was just the last couple of years, I would say advances in OS virtualization. I have 7 different VMs on one machine and can take a snapshot of any of them multiple times. If gives me great flexibility on developing against different platforms without having a pile of old boxes under my desk.

I do not believe that anything had to be sacrificed for this, except a bunch of disk space and some RAM, which is much cheaper than several years ago. And you can take more advantage of that multi-core CPU.

Bratch
+9  A: 

Programming is easier??? Damn I knew I should stop using C++.

Comptrol
A: 
mqbt
A: 

Abstractness in the programming, High Level Programming Lanugages, IDE( auto complete, refactoring, code-to-build, Beaten problems Best Practices, on-demand coding, internet code browsing repositotires

A: 

ReSharper. Had to sacrifice about $100 to gain a ton of productivity.

CLaRGe
+3  A: 

jQuery

It singlehandledly (IMHO) made Javascript usable.

cletus
+1  A: 

Monad transformers, of course.

Apocalisp
+6  A: 

Loband MSDN!

Seriously, you need to look at this if you use MSDN! Props to Frank Krueger for pointing this out

Gavin Miller
haha I remember when they added this. It was like an exit gate opened in hell.
Longpoke
+2  A: 

Free learning on internet. Most of the people are learning online now, 10 years ago you had to go to some paid courses to get an introduction. You can do the same today in youtube.

The only sacrifice that we made is the time spent learning that people should share stuff on internet and that profit shouldn't be always the engine for everything.

Elzo Valugi
Before the internet, I learned to program from books in the library.
Qwertie
+1  A: 

Ctrl-Z

and

Source Control

Martin
A: 

Something I wish was more prevalent in debugging is execution recorders, where some parent process traces the entirety of your program forward and backward, recording variable values, stack locations, etc, so you can rewind your application to find out where something got changed. It'd be perfect for throwing to customers for those hard-to-repro issues.

It'd be a PITA trying to get a sanitized version out of somewhere like Raytheon, but I'd kill to have one. Debugging would get so much easier if you could visualize the lifespan of a memory location over time and not just a snapshot in time.

Chris Kaminski
A: 

Frameworks and IOC

When's the last time you sat down and typed out some form of (static) void main()? If you were writing the entry point for the app that you're developing now, what would you put in it?

Dan Monego
A: 

valgrind ... at least, it sure makes debugging those mysterious crashes easier.

Jeremy Friesner
A: 

Experience and knowledge gained over these years.

Ray
+4  A: 

I am surprised that nobody said "open source licensing". It completely changed the life of programmers in the last 10-15 years (when Linux and the open source community began to grow). The availability of open source tools, code, information sharing, allowed large communities to grow and provide google, documentation, ideas, programs, snippets of code.

It gave microsoft competition, it gave OSX its environment, it created the web and the CC licensing that shapes a large part of the web today.

Stefano Borini
That's good point! Thanks!
MrFox
Most of the current popular OS licenses were available more then 10 years before the question was asked. Linux, as an OS you could use without being a serious hacker, is newer than 10 years.
David Thornley
A: 

Nothing! Programming is still really hard, even if you are highly skilled. I cannot think of anything that has arrived in the last 2 years that actually makes the hard part - designing and writing effective reusable and functional code.

Most of what's already been mentioned here has been around in some form or another for a lot longer than that.

+1  A: 

Decompilers to see how other applications work. And damn those obfuscators!

dogbane
A: 

I find having a larger screen helps me visualise more code at once.

Steve
A: 

syntax highlighting

dwelch
A: 

The following made programming easiest in the last couple of years.

  1. IDEs.
  2. Design Patterns
  3. Software Development Life cycle (SDLC)
  4. Version Control System.
  5. Web Tutorials and Forums.
  6. GUI and Frameworks.
Venkats