Beta
×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Ask Slashdot: Can an Old Programmer Learn New Tricks?

Unknown Lamer posted about 5 months ago | from the new-and-exciting-skills dept.

Programming 306

An anonymous reader writes "I have been programming in some fashion, for the last 18 years. I got my first job programming 15 years ago and have advanced my career programming, leading programmers and bringing my technical skill sets into operations and other areas of the business where problems can be solved with logical solutions. I learned to program on the Internet in the 90s.. scouring information where ever I could and reading the code others wrote. I learned to program in a very simple fashion, write a script and work your way to the desired outcome in a straight forward logical way. If I needed to save or reuse code, I created include files with functions. I could program my way through any problem, with limited bugs, but I never learned to use a framework or write modular, DRY code. Flash forward to today, there are hundreds of frameworks and thousands of online tutorials, but I just can't seem to take the tutorials and grasp the concepts and utilize them in a practical manner. Am I just too old and too set in my ways to learn something new? Does anyone have any recommendations for tutorials or books that could help a 'hacker' like me? Also, I originally learned to program in Perl, but moved onto C and eventually PHP and Python."

cancel ×

306 comments

Sorry! There are no comments related to the filter you selected.

You could ... (-1)

Anonymous Coward | about 5 months ago | (#46513967)

But then you start trying to do things in new and inventive ways. In the end, though, you just end up breaking everything, such as being able to login to /. I guess this is goodbye, /., it's been a great ride.

Re:You could ... (0)

Anonymous Coward | about 5 months ago | (#46514031)

wtf bro

Nope (-1)

Anonymous Coward | about 5 months ago | (#46513971)

No tricks left. Just death. Neat trick.

Practical application is the only way (5, Interesting)

Karmashock (2415832) | about 5 months ago | (#46513983)

You have 18 years of learning by doing.

Classes and tutorials are not what got you there. You did things.

Name a program you could make in C or perl that you know well. Now try one of the new languages you wish to learn and set the goal of making that program in that language.

Then do it.

You'll have to look up syntax etc for every little operation. But you'll learn. And once you know how to do that you'll have the confidence and core knowledge to bootstrap yourself further.

Re:Practical application is the only way (3, Insightful)

busstop (36269) | about 5 months ago | (#46514117)

Name a program you could make in C or perl that you know well

Actually I think you should take this a step further, not just taking a program you could write, but one you have written already. This turns the exercise from a programming-from-scratch to a porting one: All logical problems were solved when you wrote the original version. Now you can concentrate on the details of the new language/framework/whatever.

Re:Practical application is the only way (4, Interesting)

Chrisq (894406) | about 5 months ago | (#46514173)

Name a program you could make in C or perl that you know well

Actually I think you should take this a step further, not just taking a program you could write, but one you have written already. This turns the exercise from a programming-from-scratch to a porting one: All logical problems were solved when you wrote the original version. Now you can concentrate on the details of the new language/framework/whatever.

This will work well except when you are switching to a new programming paradigm. If you rewrite a program you originally wrote in a procedural language in a mixed or object oriented language (python, java, scala, ruby, etc.) you will have to work very hard not to code a procedural solution. Similarly with a functional language - but you are more likely to struggle to write something procedural in haskel or ocaml.

Re:Practical application is the only way (4, Insightful)

Hognoxious (631665) | about 5 months ago | (#46514635)

If you rewrite a program you originally wrote in a procedural language in a mixed or object oriented language (python, java, scala, ruby, etc.) you will have to work very hard not to code a procedural solution.

That might happen if you try to translate it routine by routine. The result will be similar to if you translate a text using only a dictionary; as my Latin teacher used to say, "Don't translate the words, translate the ideas."

The right way is to treat the version in the old language as a specification or a reference version.

P.S. Avoid the temptation of adding fixes, enhancements etc, at least until V1.0 is done; if you're going to drift off the model, you might as well say sod it and make something new.

Re:Practical application is the only way (2)

gl4ss (559668) | about 5 months ago | (#46514211)

but the new frameworks aren't for that.

they're for essentially reconfiguring a program someone else made and scripting some additional functionality into it. maybe he should instead try something like QT, instead of all the myriad openmonoraildjangobangopingoflexs's that are out there and in "demand" (there's no ruby jobs out there but plenty of RoR jobs oddly enough)..

I'm pretty sure he would have no problem picking up android or windowsphone programming either(and both are arguably "frameworks" too).

Seconded (1)

Anonymous Coward | about 5 months ago | (#46514205)

I'm old (50's) switched from C++ Windows to Java/Android. I've failed to pick up Java before, but once I had a goal in mind, it all became very very easy. Now I'm a great Java programmer (well highly paid anyway).

I think I failed before because I didn't *use* it, I *learned* it, and once I learned it, I forgot it quickly. Now, I actually use it to make money, and solve real problems, its all so trivial to now, its become second nature.

'Frameworks'? If you want to learn something, I'd go with Java and Android now (with Eclipse), its the future. For web? LAMP still is fine, you have Perl, and PHP they're still fine tools in common use.

Re:Seconded (1)

narcc (412956) | about 5 months ago | (#46514345)

If you want to learn something, I'd go with Java and Android now (with Eclipse), its the future.

I'd bet against that.

Re:Practical application is the only way (1)

gbjbaanb (229885) | about 5 months ago | (#46514227)

amen to that.

I'm a C/C++ dev by history as I've been dong this shit for ages and today its all C# , so to learn this new stuff I browse around the information about the language from sites including /. and then stepped into trying it out for a semi-real project (ie a tool to do some DB updates). Turned out to be really easy and now I can do the C# stuff with just the usual amount of googling (as whatever you do in C# its all bloody different thanks to MS changing stuff all the time, and partly because I just can't be arsed to remember all this crap anymore :) )

So, just stop whining about how difficult everything is and get stuck in. You can't be any worse at doing it than most of the kids who call themselves experts in various languages because they can code up hello world.

Re:Practical application is the only way (3, Funny)

Lumpy (12016) | about 5 months ago | (#46514483)

Exactly. Old C programmer here, it took me exactly 8 days to learn coding for OSX and iOS. It's just wrapping your head around things. and don't be afraid of saying ,"what nimrod thought that was a good idea" at times, because I see a lot of idiocy inside the frameworks.

I also chuckle at things when I see what amounts to devolving to perl obscurity in a lot of the new stuff. People trying to save keystrokes and sacrifice readability, damn kids get off my libraries and frameworks.

what you need them for? (5, Interesting)

gl4ss (559668) | about 5 months ago | (#46513987)

maybe that's your problem. just taking a framework and using it for nothing leaves you with nothing.

most "frameworks" are just gobbled up shit anyways, quite often now consisting of other frameworks which consist of other frameworks and so you end up with something that serves a tcp/ip connection, serves 100kb of files but somehow manages to take up 300mbytes of disk space and 600mbytes of ram...

so whats a hip framework today? is it hip because it's actually good? unlikely. as proof just check what was hip and cool 10 years ago, 9 years ago and so forth.

Re:what you need them for? (5, Insightful)

gweihir (88907) | about 5 months ago | (#46514201)

I agree on the framework quality. Also, their primary use is to allow people that cannot program well to get something done (badly). Last time I looked at a Java-Framework, I came to the conclusion that using it is a gross violation of all standards of professional code generation. One effect is that it takes people months before they can do even simple things.

Fortunately, my current project requires speed and efficiency, so no frameworks, but raw C from the ground up. (Libraries like OpenSSL or PCRE are fine.) The project before that I used Python as glue and C as worker. Still no frameworks.

Personal recommendation: Avoid frameworks. They create far more problems than they solve. And they slow everything down.
 

Re:what you need them for? (2, Insightful)

gweihir (88907) | about 5 months ago | (#46514213)

Oh, and ignore all the assholes here that think your question is not worthy of a genuine answer. They likely do not even know what a c-compiler is.

Re:what you need them for? (1)

narcc (412956) | about 5 months ago | (#46514355)

Personal recommendation: Avoid frameworks. They create far more problems than they solve. And they slow everything down.

No need to make it personal, that's solid advice.

Re:what you need them for? (1)

gweihir (88907) | about 5 months ago | (#46514387)

Thanks!

Re:what you need them for? (5, Informative)

hattig (47930) | about 5 months ago | (#46514399)

And which framework was that? If it's targeted at "enterprise" use, then speed and efficiency won't be one of its core features, not with runtime annotation processing...

For example, Apache Wicket is a gross bloated thing to avoid the "horror" of learning how to program a web UI in JS that communicates with the backend server using sane RESTful APIs. OTOH it saves you from writing those APIs and keeps your codebase in a single object oriented language.

Hibernate is a gross-but-cool thing that saves the developer from touching JDBC. It's overhead pales in comparison with the network latency/RTT and database effort though, and it allows the programmer to again do database operations at a decent OO high level. Personally, I prefer JDBC but that can end up with a lot of boilerplate code to do simple operations. But OTOH you could end up with dodgy DB code, failure to try/catch/finally properly, etc. HQL can DIAF.

And Spring ... Spring does everything. Dependency injection is a major advantage (until you use it, you might wonder why your "EntityManager" class is not good enough), interceptors, etc. Ignore the MVC crap, that's old hat.

And tooling is another thing. Maven is essential for the Java developer today. Until I used it, I was happy with Ant and manually updating dependencies. Selenium is an essential web UI integration test tool too. Anything that makes testing, integration testing, etc, easier should be welcomed with open arms. Team-based development is a recipe for breaking code contracts in multiple places.

There are a lot of new tricks that a programmer that has stayed in a comfortable role for a long time could have missed, and find problems when looking for a new job. Luckily, a good C programmer is unlikely to be applying for Java roles, and roles are often now in the embedded marketplace where frameworks are less common over raw C with common libraries.

And there will be plenty of people that disagree with everything I've written. The joy of programming, eh?!

Re:what you need them for? (3, Insightful)

jythie (914043) | about 5 months ago | (#46514551)

I think this touches on the real utility of frameworks, other programmers.

In many ways, learning or utilizing a framework is not about what it gets you technologically, it is what it gets you socially. It gets you on the same page as other developers, using the same tools, talking the same language, etc. Even if the tech itself does not make the project go any easier, the commonality does.

Plus, once you know the framework well enough, it gives you enough background TO agree or disagree with others on a project rather then not be able to participate in design discussions. For instance if I had not taken the time to learn and work with Spring on a major project I could not really threaten to break the fingers of the next developer to utilize dependency injection, at least not with any credibility.

Re:what you need them for? (2)

Lumpy (12016) | about 5 months ago | (#46514493)

"I came to the conclusion that using it is a gross violation of all standards of professional code generation. "

Amen brother. Kids today cant be bothered with good code, and their spaghetti crap ends up as a "standard" in some places. look through a lot of the TI MSP embedded libraries and frameworks. We dont use ANY of it as it is all a bloated mess for a small embedded platform.

Hell it's a bloated mess for any platform.

Re:what you need them for? (1)

gbjbaanb (229885) | about 5 months ago | (#46514269)

alas, what you say is true.

But there is a huge amount of effort being spent in using these things, to the point where you go for an interview and they're not interested in what language skills you have, but whether you know framework x or y.

So that's why you want to learn them, shit reason really :(

Do more (1)

invictusvoyd (3546069) | about 5 months ago | (#46514287)

Just learning new tools seldom works for hackers. Hackers invariably look for efficiency which means the right tool for the job. There is not much sense in using for example C to write a wrapper or a log parsing script and likewize there is not much sense in using perl to write an operating system , Do more . u'll need more and u'll consequently know and learn more

Re:what you need them for? (1, Interesting)

Anonymous Coward | about 5 months ago | (#46514467)

most "frameworks" are just gobbled up shit

Rubbish. Unless you're talking about some obscure amateur effort, but who's talking about that anyway? You could dismiss and problem-solving technique on that basis. Are you trying to say that he won't gain anything from the likes of Qt, .Net or Cocoa?

Good frameworks exist and they're popular. Their worth is well proven. Why waste your time (and customer's cash) reinventing solutions?

If the poster wants a taste of how a framework is used and structured, there are plenty of good online resources. For example, take a look at Stanford's iOS courses based on Cocoa – very comprehensive and free in iTunes U.

If you need to ask, then for you the answer is no. (1, Insightful)

jrumney (197329) | about 5 months ago | (#46513991)

If you have to ask Slashdot, then I'm afraid that the answer is no, you have reached the end of learning new tricks if you cannot figure something this simple out on your own. The good news, from the experience of an even older programmer, is that this does not happen to everybody.

Re:If you need to ask, then for you the answer is (1)

Anonymous Coward | about 5 months ago | (#46514167)

Ditto. I'm a contractor developer (mainly Java, but C, C++ and hey I can build a PIC board if I have to :-) ) - no single job > 3 years, and I'm just coming up to 55. So I've been developing for 39 years ... damn! Started with a Pet and ZX Spectrum, Z80 etc and worked up from there.

My last contract was very Spring/Hibernate oriented - I'd never really used them in anger, but now I can handle the key parts with my eyes closed. Previous one was a fast trading system - lots of Java concurrency and messaging, again, I'd played but I hadn't fought. Before that, it was a big govt project - not much new tech, but a nightmare team organization which I hope I did a lot to straighten out. Before that I was writing an XHTML/CSS parser/renderer for a mobile phone company.

I read a book on a new thing and then try it. I'm reading about ReST and Node at the mo' because I encroached on it before and it was sort of a mess, and I need to tighten it up. Starting a new contract is generally a whirlwind of new stuff - but I love that! It's like being on fire.

Re:If you need to ask, then for you the answer is (1)

Threni (635302) | about 5 months ago | (#46514237)

The perfect answer. And you can see for yourself, by a casual glance at Stack Overflow, that there's no shortage of new programmers without a clue in their head, and who expect people to solve problems that `give me the error` but who don't think it's important to include the actual error (as if there's only one possible error that could be provoked in that situation) or who demonstrate an utter lack of any resourcefulness, inquisitiveness or common sense.

Re:If you need to ask, then for you the answer is (4, Insightful)

serviscope_minor (664417) | about 5 months ago | (#46514273)

If you have to ask Slashdot, then I'm afraid that the answer is no,

Nope, this answer is utter horseshit.

I've encountered the same framework madness as the OP. I've come to the conclusion that 99% of them are utter drivel and it's almost more work to figure out how to use it than it is to code it from scratch, which makes it kinda useless as in the latter case you get much better flexibility.

Basically, it seems like they make the easy 80% of a problem tribial and the remaining 20% nearly impossible. Better to stick to good libraries instead.

Elaborating a bit, the GP like me learned from lots of available material in the old days. In those days, the lack of frameworks and general flatness made things a bit more straightforward. Basically you could figure out what things meant at a fundemental level fairly quickly. With the vast modern frameworks, there seems to be much more trusting in the magic of them, and that doesn't sit well with someone who has a decent nuderstanding of programming, operating systems and architecture.

My advice, ignore the mega frameworks if possible, and don't onfuse them with handy platforms and avoid those as well.

Re:If you need to ask, then for you the answer is (1)

Viol8 (599362) | about 5 months ago | (#46514487)

" I've come to the conclusion that 99% of them are utter drivel and it's almost more work to figure out how to use it than it is to code it from scratch, which makes it kinda useless as in the latter case you get much better flexibility"

Agree 100%. Often they're written by idiots just out of university who've read a couple of design patterns books and now think they've got the inside view of programming. All they end up doing is creating a top heavy behemoth that is all structure and no functionality - perfect for a degree dissertation, useless for the real world - and a royal PITA for anyone to use properly which usually ends up with everyone subclassing the framework classes and rewriting half of the functionality themselves anyway.

Re:If you need to ask, then for you the answer is (1)

Lumpy (12016) | about 5 months ago | (#46514501)

The problem is a lot of managers that cant even understand programming 101 have latched onto framework crap like it's the holy grail.

Code quality across the board has dropped by a magnitude over the past 5 years out there.

Re:If you need to ask, then for you the answer is (2)

ras (84108) | about 5 months ago | (#46514303)

If you have to ask Slashdot, then I'm afraid that the answer is no, you have reached the end of learning new tricks if you cannot figure something this simple out on your own.

Right answer, wrong reason.

Every good engineer I know, software or otherwise, can't resist learning how the next new shiny works and seeing if they can't put it to good use. In fact I sometimes feel guilty of wasting inordinate amounts of time doing that sort of thing. Thus I know I can learn new tricks because I do it all the time.

They reality is it I hadn't done that all my life, I would be in the dust bin now. I learnt to program in the 70's, on punch cards. Our uni lecturers tried to get us to imagine the shiny's we would have now, I guess as a way of preparing us for continual learning. It's funny now I look back on it, but among the many things we didn't think of are the internet, mobile phones, public-key cryptography, or cryptographic hash functions. It's been a remarkable time to live through.

If the submitter doesn't know he can learn new things too, he is in deeper shit than he realises. It's not a question of whether he can or can't - he almost certainly can. But if he hasn't been doing continually, there is soooo much to catch up on.

Re:If you need to ask, then for you the answer is (1)

X10 (186866) | about 5 months ago | (#46514473)

I must agree with this. It's possible for some, but you need to have an explorative mind, that apparently you don't have if you have to ask here.

I first learned to program in Fortran, way back, in university. In my first job I did Cobol, then I switched to C and C++. After that, from 1995 on, I did Java, and now I do Android and Java. On the side I did Prolog, some php which I hate, and all the other stuff that you run into and you try out for a while. I'm sure I'll make more switches before I retire.

Yes (1)

kthreadd (1558445) | about 5 months ago | (#46513993)

I've never been able to learn "frameworks" from books. I've tried, not my thing. Documentation on the other hand is usually a good start, especially if it's written to be short and to the point. Most important, look at code. There's a ton of free/open source software which you can look at, learn from, contribute to. Find a small bug, learn how to fix it, make a patch, send it in.

Why Does It Have To Be A New Trick? (0)

Anonymous Coward | about 5 months ago | (#46513997)

Old Judges? Old Lawyers? Old Chemists? Old Teachers? Old Cops? Old Comedians? Old Reporters? Old Mechanics? Old Authors? Old ... WTF!?!

Specialism (5, Interesting)

Anonymous Coward | about 5 months ago | (#46514003)

I'm in about the same situation, except that I'm not 100% autodidact (I *did* learm programming at school, back in the 1970's), and I sometimes feel the same.

There's one observation though: we've got a number of 'junior programmars' here, fresh from school.
They're all extremely good at what they do, much better at using a framework than I am, but at the same time they're not even competent in stuff I consider elementary.

Among them are 4 (four) Flash developers. As a test, when we moved to another building and they all got new computers last year, I made them configure their mail reader (MS Outlook) by themselves. Just gave them each a piece of paper with everything they needed, set them loose, and observed.
One immediately came back asking for help, and two of the others wouldn't have got it working without assistance from the fourth.

Those same four are proficient in Perforce (source management) because they were taught how to use that that at school, and when they were hired, the person who hired them (who left the company since) installed a Perforce server especially for them. When I tried to make them switch over to Subversion because that's what I and everyone else uses here, three out of four complained that it was too difficult. Even with Tortoise as a client.

Re:Specialism (1)

hattig (47930) | about 5 months ago | (#46514415)

Yes, hyper-specialism is a problem, as is unwillingness to learn new things. Those Flash devs will not go far unless they push their boundaries.

SVN is not hard. Git is not hard, but a little more complex up front than svn checkout/update/commit. Any intelligent person can get their heads around these in a couple of hours, especially when someone is willing to help them or sit with them through a sample session (an essential part of mentoring).

Re:Specialism (0)

Anonymous Coward | about 5 months ago | (#46514511)

The fastest way to motivate a programmer to accept change is to just change it. when they whine, point at the door and say,"I am sure you can find another company that will let you use your perforce all day long out there. Go find it!"

suddenly they shut up and put in the effort that day to learn the new software. Flash developers are a dime a dozen, and it sounds like you have 1 good flash developer and 3 medicore ones, maybe it's time to replace the 3?

move over (0)

ThorGod (456163) | about 5 months ago | (#46514009)

No, please retire so I can have a job, thanks, bye.

yes (4, Informative)

Coeurderoy (717228) | about 5 months ago | (#46514011)

Although 18 years of programming is barelly adolescence ... (I started with fortran IV because fortran 77 was still being implemented ...
Now let's assume that you want to learn to write Fubarish code, you'll find out that there are at least five major languages/IDEs/Frameworks to Fubar...
Choose one, preferably one of the "bigger ones" and make sure it's activelly maintained...

And then take a deep breath, and know that IT WILL TAKE TIME .... the issue is not that you really need to "learn new paradigms" in most cases it's just rather minor variations of old ones (some time very neat variations, that is the fun part)... the issue is that you "almost understandn but yet it does not seem to make sense"...

The issue is similar to adult learning new languages vs children learning... adults do not really learn slower than children, but they want to express themselves correctly and speak about "interesting things"...
Kid's are happy to say "see spot run, give ball me !", adults feel frustrated by this and have trouble making the initial steps...

So be patient and for instance try something like meteor or angular and try to make an ugly "hello world" app... (or what ever is relevant to what you'd like to build ...)
then "hello world, AGAIN and I'm the best" app...
then "hello "
etc...
at some point after five time more time than you initially thought it will hit you ... "I did it !" ....

    Good luck youngster :)
      (and now get off my lawn ...)

Take it easy (1)

Anonymous Coward | about 5 months ago | (#46514013)

I am in the same age as you, and I learn all the time. The day I stop learning it is time to get another job. But take it easy, there are so many tutorials out there written by someone who understand half of what they are writing about. Framework of the week etc. They write the tutorials because they learn at the same time and that is fair enough. The signal to noise ratio is pretty low, but you can always buy a book on the subject, and start playing with Obj-C or whatever. For me it's always good to have a left hand project where I try out new techniques and knowledge. If you have the people skills, management could also be a way forward. Listen to this: http://www.manager-tools.com/2... [manager-tools.com] If you are considering management, subscribe to a podcast! Good luck

DRY (0)

Anonymous Coward | about 5 months ago | (#46514015)

If you used functions in your programming style, they you already applied the DRY principle. With functions for example you encapsulate a set set of instructions to perform a task. If this set of instructions changes, this affects only the implementation of the function (one place). All the calls to the function stay the same.

You have already given up... (4, Insightful)

ChrisKnight (16039) | about 5 months ago | (#46514017)

If you think fifteen years in the profession makes you an 'old programmer'.

Re:You have already given up... (3, Insightful)

fuzzyfuzzyfungus (1223518) | about 5 months ago | (#46514107)

If you think fifteen years in the profession makes you an 'old programmer'.

Depending on how old you are when you start, the amount of time required to become 'an old programmer' can be identical to the amount of time required to become 'a programmer'...

Re:You have already given up... (1)

X10 (186866) | about 5 months ago | (#46514479)

:-)

I don't see myself as an old programmer. I started programming in 1978.

Re:You have already given up... (0)

Anonymous Coward | about 5 months ago | (#46514617)

If you think fifteen years in the profession makes you an 'old programmer'.

Well, it makes you ready for the scrap heap, if you're in HR.

On the other hand, I learned programming in the 1970s and I'm still picking up new technologies.

You cannot possibly become expert in everything programming-related anymore. Even I can't do that. The field has become far too broad. Instead you need to look at what is going to be interesting and profitable for you and focus in that area. Look at concepts, not frameworks. Does Big Data look appealing? AI? Statistical processing? General Business?

Once you have an idea of what kind of systems you want to develop, look at what's prominent in that market. Both languages (C#, Java, scripting or even COBOL) and frameworks. Especiallty pay attention to what's prominent in the locale where you wish to work, since different places have different preferences. Don't just grab the new-and-shiny, since fads often die out quickly, look for something with some staying power.

YES! (1)

KingOfBLASH (620432) | about 5 months ago | (#46514019)

Learning is just about putting in the work. If you decide that you want to learn emacs LISP, and want to implement a project in it, it's possible if you're willing to put in the work.

As others have pointed out, the more salient question is, why? If you really have progressed up the ladder, then presumably your focus is no longer about daily programming, but more about project management and general management. At that level, it becomes less important to be able to implement a widget in the newest shiny language, but to be able to bring the project (successfully) to completion.

No (5, Informative)

phantomfive (622387) | about 5 months ago | (#46514029)

Am I just too old and too set in my ways to learn something new?

No. This question> [slashdot.org] comes up [slashdot.org] all the time [slashdot.org] on Slashdot [slashdot.org] .

Honestly, from your description (which is too short to be certain, of course), and based on other programmers I've known with similar symptoms, you give up too easily, and that is your problem. Every programmer eventually runs into something that is hard. The key is to keep at it until you understand. Read through the Javadocs for Java [oracle.com] until you understand how they are organized. Or whatever framework you want to learn.

It's primarily a matter of not giving up until you have it learned.

Re:No (0)

Anonymous Coward | about 5 months ago | (#46514095)

Am I just too old and too set in my ways to learn something new?

No. This question> [slashdot.org] comes up [slashdot.org] all the time [slashdot.org] on Slashdot [slashdot.org] .

Honestly, from your description (which is too short to be certain, of course), and based on other programmers I've known with similar symptoms, you give up too easily, and that is your problem. Every programmer eventually runs into something that is hard. The key is to keep at it until you understand. Read through the Javadocs for Java [oracle.com] until you understand how they are organized. Or whatever framework you want to learn.

It's primarily a matter of not giving up until you have it learned.

Yeah, I was in the same situation as you before.
I learned to program based on self-learning. When I tried to learn dot Net (from C) few years back, it was very difficult the first few days. However, eventually, you will get good at it and eventually be master at it.

Yes, from another comment, I tried learning and using frameworks but eventually stopped. Based on my needs, it was best served creating my own algo than use frameworks at all.

Re:No (2)

serviscope_minor (664417) | about 5 months ago | (#46514283)

Honestly, from your description (which is too short to be certain, of course), and based on other programmers I've known with similar symptoms, you give up too easily, and that is your problem. Every programmer eventually runs into something that is hard.

Quite possibly. I think that programmers of a certain sort are used to hard problems, like delving into the guts of hardware for a driver or a triky algorithm, to solve a task in cunning, but more efficient way. The frameworks aren't any of those types of hard. It's more of a wall of "wtf is this shit?".

Very hard to go over that wall, and frankly, I'm a bit skeptical that it's worth it in many cases.

It's Never Too Late! (5, Interesting)

buchalka (416106) | about 5 months ago | (#46514039)

I've been a programmer (mostly) for the past 25 + years.

At 16 I wrote my first computer game, love it and then... Stopped.

Used Fortran, Cobol and stuff and eventually Java Enterprise stuff.

Realised I HATED IT!!

At 46 decided games were my passion (should have continued from my first game at 16).

Fast forward 3 years I feel proficient in Objective-C, Cocos2D and other game frameworks - I absolutely love it. 3 published games later and a pile of other stuff - Having the time of my life.

Do what you love is all I can say to anyone readying this.

And if you want to learn IOS there is NO BETTER COURSE out there (yeah I like capital letters) than the free Stanford CS193P course on iTunes - Google it.

Paul Hegarty rocks as an instructor.

Embrace it, I am living proof its never too late!

I've been learning new things for 30 years (4, Interesting)

AccUser (191555) | about 5 months ago | (#46514043)

I started to learn programming at the age of 11, and two years later had a 'summer job' writing software for a contracting firm in central London. That was in 1984. I'm now 43 years old, and am still learning new things. I stopped contracting a couple of years ago for a simpler life, and my software development is more about scratching my itch rather than a clients, and it is certainly more interesting that way. If you're not motivate to learn something new just for the sake of it (I'm a big fan of Duolingo and Khan Academy) then you're going to have to find that itch for yourself.

Re:I've been learning new things for 30 years (1)

SimonInOz (579741) | about 5 months ago | (#46514579)

I wrote my first bit of code in 1970, in FORTRAN, and now, at 59, I still like coding. It's not where the money is, so I mainly do architecture, but coding is much more fun.

Is it hard to learn the new stuff? Yeah, it is. Definitely harder. The new frameworks tend to be pretty huge, and rely on lots of fairly random assumptions - "convention over configuration". You need to pick up a big heap of conventions, which is painful.

On the other hand, the basic structures still shine out. Async here, sync there, message there, update there, abstract everywhere ... It's easy to miss the fact that years of programming have nailed the basics - probably when you write code in a language you are familiar with, it tends to work. Usually fist time.

But yes, learning by doing is the best way. Try it, you'll like it.

Bat damn, there are a lot of frameworks these days.

Translation (4, Insightful)

Max Threshold (540114) | about 5 months ago | (#46514045)

"I played around at writing code, but I never actually learned any of the other skills that are just as much a part of being a programmer."

If you haven't learned those skills in fifteen years as a professional, the problem isn't your age. I became a professional programmer at the ripe old age of thirty-six, and learned all the skills you're afraid of in my first year on the job. I had to!

It's okay to be tired of programming (5, Insightful)

neiras (723124) | about 5 months ago | (#46514047)

Years ago I actually burnt out. I felt like I couldn't learn anymore. I kept sitting down in front of my editor and going through the motions, wondering where the inspiration was, never able to click into the zone, chasing focus, being unproductive.

I took three years away from code. I got married and started a family. I worked at a relative's construction company. At first I had to force myself not to think about tech. Then I found myself actually forgetting about it because I was doing other interesting stuff. Eventually I realized I needed some software to do something, so I sat down to build it and the old joy was back. Everything felt fresh again.

Recommend you take a break and do something completely different - for years if necessary. You only live once. You might come back to software, you might not. Do what's right for you. The programming world will still be here rediscovering old design patterns and handwaving about the latest development process fads if you choose to get back into it.

Re:It's okay to be tired of programming (0)

Anonymous Coward | about 5 months ago | (#46514101)

Great advice. I often have experiences "in the real world" while on hiatus from coding that result in great ideas for new things to code.

Re:It's okay to be tired of programming (1)

carnivore302 (708545) | about 5 months ago | (#46514485)

Probably the best advise I've seen. I'll try it myself.

Complexity (3, Informative)

jones_supa (887896) | about 5 months ago | (#46514055)

I learned to program in a very simple fashion, write a script and work your way to the desired outcome in a straight forward logical way. If I needed to save or reuse code, I created include files with functions. I could program my way through any problem, with limited bugs, but I never learned to use a framework or write modular, DRY code. Flash forward to today, there are hundreds of frameworks and thousands of online tutorials, but I just can't seem to take the tutorials and grasp the concepts and utilize them in a practical manner.

I can see where the problem is. You just have to accept that everything is million times more complex than when you started. The new big frameworks and sophisticated build systems are going nowhere. You are were used to writing relatively simple programs. Today you need some serious grit to get through projects.

Re:Complexity (2)

fuzzyfuzzyfungus (1223518) | about 5 months ago | (#46514139)

On the plus side, while the upper bound for complexity(sometimes necessary, sometimes self-imposed) shows no signs of slowing down, the supply of problems that are tractable with historical methods shows no sign of exhaustion.

If the slashdot-asker is asking because his boss wants a problem that isn't a member of that category solved, or the cheap offshore labor has gotten adequate at solving that class of problems for peanuts, he is undeniably in serious trouble; but the mere existence of greater complexity does not appear to have actually solved all the lower complexity problems.

Re:Complexity (2)

jabberw0k (62554) | about 5 months ago | (#46514463)

Furthermore, if you're trying to solve a complex problem with complex tools, you probably need to go back and think about how to reduce or compartmentalize that complexity. That's the UNIX philosophy: building blocks. There's no reason you can't use Perl (possibly with Moose or Mojolicious if you need them) for a modern project. No reason you can't use PHP or C++ or whatever you know, with the addition of a few new libraries. Leverage what you know, don't replace it.

please (-1)

Anonymous Coward | about 5 months ago | (#46514059)

don't feed the troll.

This is the stupidest fucking question that has ever been asked.

"I'm an 18 year veteran and expert in the field. What should I do?"

getting excited about stuff that is not so excitin (0)

Anonymous Coward | about 5 months ago | (#46514061)

Learning new tricks is the easiest part.
Getting excited about half baken technologies that offer only part of the solution is the hardest part.
The more experience one has the easier it gets to debunk all the 'magic' and merits of most popular new technologies.
Since most people have only touched very few other languages and platforms, they are very biased towards the technologies they favor most.

Sure, but... (1)

Anonymous Coward | about 5 months ago | (#46514063)

You and I have a similar number of years programming and working. I'm still learning new things every day. In the early 90's there was a relatively small number of choices to get the job done, usually just pick a language and go do something. Now just the breadth of it can be overwhelming.

The really great thing about today is you can go to your favorite search engine and type "[language] [what you want to do]" and it's likely going to be the first result on stackoverflow (unless you choose Go as a language). Beats going to the index of all those reference books.

If you're out to learn I suggest focusing on the area that interests you most: web, devices, web services, databases, etc. From there pick the platform (Win, *nix, Android, iOS, etc) and start narrowing down your language choices.

Here's the stack I use in daily life: Visual Studio, C#, ASP.NET MVC, jQuery, Angular, Bootstrap, Web API, WCF, Entity Framework, SQL Server. Visual C# Step-by-Step is a decent intro book http://www.amazon.com/Microsoft-Visual-2012-Step-By/dp/0735668019. I also recommend CLR via C# by Jeffrey Richter once you've mastered the basics.

If that doesn't appeal to you pick your own path by what interests you and what you see a decent number of jobs for in your area. Give yourself a project you want to make, something kind of simple, then set out to do it using that new language. This is the best way to learn a new language or framework, at least for me.

I enjoy http://pluralsight.com as well. The videos can take some of the fear and anxiety that comes from "I have no clue what I'm doing" out of new topics which will help give you confidence to explore more on your own.

My concern is why you got out of programming as a career in the first place. Is it something which truly interests you? Can you enjoy the mundane along with the exciting greenfield development? Can you handle struggling to get what you want? If so, march on and good luck!

If you have to ask... (0)

Tanuki64 (989726) | about 5 months ago | (#46514073)

...yes, you are too old.

judging by my coleagues (1)

mythix (2589549) | about 5 months ago | (#46514075)

Who are what I would call "old programmers", I'd have to say no.

They don't even want a new desk or laptop. change is evil.

Doesn't help and most is crap anyway (0)

Anonymous Coward | about 5 months ago | (#46514079)

Learn by doing. Tutorials won't get you there.

Most of the frameworks are just bloated rehashes of someone else's badly implemented framework in the 'flavour of the month' language. Generally created by people who are incapable of actually focussing and solving real problems. "Me, I'm working on the framework code, not blocked"

Find a project that interests you, implement it.

Education vs training argument (1)

dbIII (701233) | about 5 months ago | (#46514097)

Training gives you only the VB or dotnet of the month. Education means you can sort out sorts in all sorts of languages because you know what should happen instead of just what to write.

Open your mind (1)

WarJolt (990309) | about 5 months ago | (#46514103)

There are other programming languages besides those listed in the article. It's interesting there is a whole resurgence of new programming languages.
Some people need a little encouragement. Write formally verified code and learn Coq. Learn a functional programming language like haskell or take a blast from the past and learn smalltalk.

You might never use these for anything practical, but what you learn from them is invaluable. You need to constantly be learning new things.

Re:Open your mind (1)

Tanuki64 (989726) | about 5 months ago | (#46514129)

You might never use these for anything practical, but what you learn from them is invaluable. You need to constantly be learning new things.

In that case I would not learn such worthless stuff. Sorry, but 'you might never use these' is worthless in my book. When I feel the need to train my learning muscle it is stuff like OpenGL, video encoding, OpenMP. Stuff I can use and do with the languages I already know, but are new to me. Just learning a new programming language becomes sooner or later brainfuck. It is the illusion of doing something new, but without actually leaving ones comfort zone.

Same start different ending (0)

Anonymous Coward | about 5 months ago | (#46514133)

I more or less started programming in the same way. DIY, no frameworks or anything.

The only difference is I never stopped learning. For example I tend to learn at least 1 new language a year... well I at least try and sometimes fail. For example I really hated perl and PHP, really. But when I decided I need one editor to rule them all i.e. emacs I started to learn lisp (which appears to be never ending process with elisp), and when I needed a scripting language to do all of my scripts in I learned python. When I needed to do some micro controller home automation stuff well I learned assembler for AVR just because the arduino library was too big. and so on there is always something to learn you just need to have the right incentive.

My point is. In the process of learning new languages one usually get exposed to new ways of thinking, which may include one or more frameworks :), that keep your mind moving. So instead trying to learn a framework I suggest you try to do the thinks you do anyway in with different language but try to stick to the new language de-facto standards. Take python for example it has so many modules that you don't need to reinvent the wheel every time so using python is more about finding the right module then doing it yourself. If you can make a module better you can always contribute your version the the rest of us :).

Rediscover your joy (2)

undulato (2146486) | about 5 months ago | (#46514147)

As others have said - find something you enjoy programming. I started making games for mobile a couple of years ago using Unity3D [unity3d.com] and Mono/C# - it ticks a lot of boxes for me, just enough coding, just enough creativity and other bits, just enough story telling. If you get bored of one bit you try another and eventually you get there. Plus you learn something about your target platforms along the way.

Games or mobile might not be the way you rediscover your joy but there is bound to be some great tech out there that you just can't wait to get your teeth into. Word to the wise - Kinect and Leap are not it.

Pick a problem first, not the solution (1)

Sarusa (104047) | about 5 months ago | (#46514175)

I've been programming longer than you have and I'm still learning new things every day. That's not an exaggeration - we have so many cool projects at work that I can't stagnate.

The key here is to have a problem to solve, then learn whatever you need to learn to solve that problem.

You don't decide 'Well I should learn PHP now... okay, now what do I do with this?' or 'I hear Java is good on a resume.' You find a problem that's interesting to you (I want to make a game that... I want to make a neat device that...) and then you learn whatever it is you have to learn. For instance starting to deal with firmware, motors, devices, etc is like a rebirth for a lot of people compared to the boring ennui of database and web services. It's amazing how much you can do with a little Arduino or Raspberry Pi or the equivalent, and that's often enough to kick you out of your stupor.

If you can't think of anything, or if coming up with a game or trying a neat little embedded system doesn't put you back into obsessive creative mode then it's probably time to consider a new line of work, or just how to ride out your days till retirement.

Reviews (0)

Anonymous Coward | about 5 months ago | (#46514177)

Ask your collegues to review your code also pair programming. Use that to discuss DRY concepts and other desirable quality attributes.
With pair programming you (the newbie) are the driver (typing) and your collegue (experienced modern languague programmer) the navigator (correcting you, thinking about what comes next).

Golly, yes (1)

khelms (772692) | about 5 months ago | (#46514183)

I recently moved from Assembler on punched cards to the new-fangled Cobol language on a green screen!

Do you have actual use for it ? (1)

dam.capsule.org (183256) | about 5 months ago | (#46514197)

I find that for me, trying to learn some new tech or framework without a real project behind it never works. I just can't go through a tutorial without having a real use for it. I will simply stop at some point.

Yes (3, Interesting)

kevingolding2001 (590321) | about 5 months ago | (#46514207)

Yes, you can learn new tricks, but like everything else you have to work at it. I've been programming in some fashion for close to 30 years but I'm still learning new stuff all the time (getting employed on the basis of the new skills is a bit harder, but not giving up yet).

If you are struggling to come to grips with frameworks, might I suggest that you are probably not getting 'why' they are written, or what they are trying to achieve. Not getting that means you are trying to memorize a whole bunch of stuff that doesn't seem to make any sense, and that is basically impossible.

The easiest way to understand the 'why' of a framework is to start trying to write equivalent things yourself from scratch.

Once upon a time I installed Django and worked through the tutorial. Admittedly I was pretty impressed with the inbuilt admin interface that you got for very little code, but beyond that it all seemed too long-winded and abstract for what I wanted to do. So I decided to not use Django and just write my own application directly using wsgi.

I spent a day or two happily coding up a number of functional pages and a rudimentary menu system. Then I realized that some of my code was getting a bit unwieldy. Functions to parse the url and call the appropriate function were getting too long, and code that produced the output was starting to be duplicated in numerous places. I sat down and had a good think about how I could refactor stuff to be more maintainable when suddenly it hit me... "I'm re-writing Django (though much more poorly)".

Once I realized that, and I understood the problems that Django was trying to solve it all suddenly made a lot more sense and I found it easier to get my head around it all.

Maybe (2)

BlackHawk-666 (560896) | about 5 months ago | (#46514221)

It sounds like you don't really have 15 years experience. You have a few years experience that you've been repeating over the last 15 years. You also tend to sound more like a scripter than a programmer (not that there's anything wrong with that!). Becoming a fully fledged programmer would therefore be the next step for you, and you could certainly take it, but I doubt you will. You are lacking one or more of these:

* confidence
* direction
* motivation

Learning ability is not likely to be the issue, it's the lack of desire to learn that is at the root.

Find something you are really passionate about and make that happen using whatever tools are considered the best in that domain. Many older programmers unwind and expand by writing games or personal projects that scratch their itch. Find something that interests you and get coding.

Personally, I'm working on a pair of games right now. One with a team (8-16 month duration), and one that will take the next few years of my life which I am starting work on solo. They give me reason to fire up the compilers, read the docs and flex my chops.

You appear to not know fundamentals. (4, Insightful)

tlambert (566799) | about 5 months ago | (#46514225)

You appear to not know fundamentals.

This is very common with self-taught programmers, or programmers who came up through either vocational training, or programmers who were apprenticed into their jobs. Unfortunately, this makes you much less valuable, because you probably don't know the proper terminology to use when referring to a specific algorithm, or you do not have a working knowledge of rarely used data structures, or you do not know object oriented programming paradigms. Minimally, you are going to be handicapped when you are trying to communicate about these things with your peers - in other words, people who have a formal education in these things can use a shorthand you can't, and as a result your communications bandwidth is considerably less than theirs, when talking about technical aspects of the work.

The first key to understanding frameworks is that there is an inversion of control: the framework dictates the control flow, not you. This may come from after you call into a framework functions, but in the simplest implementation, it comes from you not getting to write your "main" function. If you have used yacc, and did not supply your own main because you have linked to liby.a and used the liby.a supplied main() and yyerror() routines, then you have used this type of programming. If you have used rpcgen and used librpc.a to supply the main() for your program, you've also done a similar thing.

The second key to understanding frameworks is that you are allowed to extend, but not modify, a framework. Extension is done by overriding callback methods, or by providing additional event processing by hooking the default action, which is typically an error action. For this to be understandable, you need to have a minimal understanding of object orients programming. It's perfectly possible to do object oriented programming in C (in fact, libXt and libAw and other widget toolkits in X Windows did exactly this, prior to wide availability of inexpensive C++ compilers. If you've ever had a pointer to a structure that contains function pointers, and substituted one set of function pointers for another by setting the structure pointer through which you call things to one structure instance or another, you've done this. In simplest terms, you can write a function that gets called when you press a button, but you can't change the fact that it's a button, or the fact that when the UI sends an event into the framework, that causes your function to get called when the user clicks the button.

The third and final key to understanding a framework is that things have default behaviours. If you don't supply a function to handle a particular event, then the framework is going to supply one for you. For example, if you have a menu bar with drop down menus, the main menu will probably have a quit option. If you don't supply a function to implement the quit (e.g. popping up a dialog and asking if the user wants to save their work, if they've done any), then the default action will happen instead, and the program will quit - without saving the changes, since it's your responsibility to know that there were document or settings changes, and it's your responsibility to warn the user, if the user needs warning.

You might have some minimal knowledge, through use of Python, of the very basics of frameworks, but since the language doesn't actually force their use, then you probably don't have a very good understanding beyond that.

My suggestion would be to take a class or seminar on object oriented programming; one thing that's pretty popular is the Stanford series on iPhone programming using Objective C, which will also teach you concepts about object instantiation and messaging, which are things you might need to know on top of just object oriented programming.

You'd also do well to learn a compiled object oriented language, like C++, if you opt out of learning Objective C, rather than relying on "getting it" by using a language which doesn't force object orientation on you. At the very least, you'd benefit from using some type of interface builder to build a GUI program; it doesn't matter if it's for iPhone or Mac Desktop or Windows. You *can* learn to do this on other platforms, but they're generally pretty poor IDE environments compared to the ones available from commercial vendors like Apple and Microsoft, and it won't *force* you to think the right way about the problem space, if you use something like "Eclipse".

The historic joke in this regard is "You can write FORTRAN in any language"; it's true, as long as you are talking about the languages you've state you know, which all allow for linear, procedural programming.

It also wouldn't hurt to take an algorithms class so that you at least know what someone is asking you when they as "What's the order of that algorithm?" or say something like "Great, that's an O(N^2) algorithm; can you think of a way to solve the problem more efficiently, perhaps with an O(N log(N)) or an O(N) algorithm instead?", instead of staring at them like a deer stares at a bus that's about to run them over.

Re:You appear to not know fundamentals. (0)

Anonymous Coward | about 5 months ago | (#46514597)

shut up

on ap (-1)

Anonymous Coward | about 5 months ago | (#46514247)

admired his courage of those who persevere like you, wish you success

lioa [lioa.net.vn]
on ap [lioa.net.vn]
sua lioa [lioa.net.vn]
sua on ap [standavietnam.vn]

Change jobs (0)

Anonymous Coward | about 5 months ago | (#46514257)

Few things will force change like changing jobs. Find one you like, make sure to interview them and if you "like eachother", go for it. Sounds like you are bored, or like others said, you need a break.

I've been writing a lot of 6502 assembler lately (1)

chitselb (25940) | about 5 months ago | (#46514285)

... for the Commodore PET. http://pettil.tumblr.com/ [tumblr.com] But now my code is better than it was in 1979, and by now I have used dozens of other languages and operating systems. Am I "expert"? No. I take the approach of learning the minimum I need to accomplish the mission (usually delivering maintainable code) plus whatever else I become curious about along the way. What usually works best is to combine a new project with a new set of tools, so I'm learning the new tool while trying to finish the project. I describe the approach as "You are here and you want to get there." or "Lewis and Clark" approach. If you started with Perl, learning Ruby. Consider learning something old school, like Forth. Install Linux on your desktop. Force yourself to live in it by deleting Windows first. In short, become uncomfortable. The best learning occurs in that space.

Too old to learn is an excuse (2)

Alioth (221270) | about 5 months ago | (#46514301)

Unless you have some kind of brain problem (learning difficulty, Altzheimer's etc), you're never "too old to learn". "Too old to learn" is I think an excuse much of the time, learning can be difficult and it's human nature to avoid difficult things much of the time and instead take the path of least resistance. So understand it's going to take some real effort and try to take a structured approach to whatever you're going to learn. If you learn best by doing (or enjoy learning most by doing) then structure your learning by using practical tasks.

When learning a new programming language often you spend a lot of time in the reference manual simply because quite often things surrounding a framework or language are fairly complex - this makes progress seem slow and difficult, but if you can focus on a task and complete it and keep doing it, it gets easier.

As others have written, have you learned the fundamentals? You may want to go back to basics for a while and really make sure you understand some of the basic CS types of things if you find you're reading documentation on some class library and it mentions things like linked lists or other data structures and you're not sure how that would be implemented.

book recommendations (2)

louic (1841824) | about 5 months ago | (#46514327)

Read the following two books, that is how I learned to go from qbasic to object-oriented python using design patterns:
- code complete
- design patterns
After that of course you need practice.

By the way, it is worth it and makes code more easily reusable because it allows to make small changes to existing code more easily. Although this does not teach you to use frameworks, the logic of thinking in patterns and how to do object oriented programming properly is a very good start.

You're not me (1)

Anonymous Coward | about 5 months ago | (#46514333)

In a way you sound like me, but aren't.

I learned programming out of a drive to actually fix what I saw were problems (that turned out to be really terrible coding by the original author, or just a lack of care.)

In C land, I'm not afraid to use a library if what I need is in that library, but I loathe C++ and OBJC "frameworks" because these add layers of unnecessary trash on top of efficient code. I do understand C++ for the most part, but I find a lot of what is written in C++, is needlessly written in C++ out of some inane desire of a "team" to standardize on a coding style rather than a practical reason that means using a OOP language.

I ripped out a proprietary scripting language and replaced it with JavaScript in one project and had that work relatively well. So it's not like I ever felt there was a reason to stick to coding an entire program entirely in C. However when it comes to OOP things, I find the cruft that has been added to languages like Perl and PHP are out of some desire to make the language more irritatingly like Java and C++ instead of, you know, useful.

What you need to learn depends on what you actually hope to accomplish. I ported RLE code from C to a proprietary scripting language, back while I was in high school, because I wanted to do -that-. I glued image-capture code into an open-source project so I could capture screenshots from the application. I glued in code, into two different gameboy and nintendo emulators so I could learn what notes are being played by the sound system in a game. The stuff has application somewhere else, but generally would be considered a waste of time to have done it had I not wanted to learn something specific.

My interests in programming often involve image manipulation or compression. Do I hope to be hired by Adobe or Bioware or something? No. If my ultimate goal was to work for either of these companies I would have just went to school 15 years ago and stuck to it. But as it turns out, had I done that, I would likely not have been employed by simply taking the local college's classes. Those turned out to be horrible. The college hired people when "Java" was the buzzword and not a single professor during that semester could actually program in it (oh lovely Java 1.0x code mixed with JDK 1.1 books they had us buy.) I knew more than the professor teaching the class, and as a result the students asked me for help with everything. I kinda just went "screw this, I'm not paying to teach a class" and withdrew from the program. In hindesight, I'm glad I didn't stick with it because both Java and Macromedia director, are pretty much not used by anyone doing multimedia. (They should have stuck with C++.) I should have just went to Digipen if I wanted to make games.

But back to the frameworks, I don't like them. I find I don't generally care for "OOP for the sake of OOP" programming. As soon as you see words like "factory" in the source code, run, run away. DRY means "don't repeat yourself", translates to if someone has already done it, don't do it again. The practicality of this depends on what language you use, (eg scripting languages often involve having to use C libraries or built-in functionality, writing libraries -in- the scripting language is a foolish thing to do.) If you primarily work in C code, then it's very easy to use "standardized" libraries like zlib or libpng without a second thought, because nobody else has written an alternative better code (lzw, lzma, etc) that can be applied. For example if, I rip zlib out of libpng and replace it with lzma, it would make it super slow and only produce png files that can be read by my application. That's a pointless endevor for the sake of saving a few bytes in the resulting images. I did this with a video codec (saving a few bytes across a few million images is more meaningful) and ultimately came to the same conclusion that even though switching the compression algorithm saved either time or space, the resultant incompatibility didn't provide a meaningful excuse to not use the stock code. I did however discover more efficient ways of tweaking the input buffer so that less data went into the compression phase ( http://en.wikipedia.org/wiki/Video_compression_picture_types ) in a lossless codec, such as tuning when when the I frames were generated instead of every nth frame.

wow (4, Interesting)

Tom (822) | about 5 months ago | (#46514337)

Someone broke Betteridge's Law [wikipedia.org] . That's quite a lot more interesting than the actual question, which is, of course, dumb.

That only young people can learn is one of those myths that get debunked all the time and no one ever pays any attention. You know that bullshit about language and how children pick up languages (including their mother tongue) magically while adults struggle so much? Yeah, it's total bogus, in fact adults learn languages faster and better than kids with the same investment in time and dedication.

The main difference is that young people in practice learn faster because they have little else to do. If you'd get the same exposure and personal teacher attention as a small kid does, you'd pick up a new language in half the time.

So the real question is: How much time and effort are you willing to expend? Is it something you really want and are willing to spend a few hours a day on?

try this (1)

fiftybmg (842638) | about 5 months ago | (#46514341)

Get hold of the code generation tools from imatix.com . Specifically the gsl. This will bridge the gap between custom routines, and packaged libraries, by teaching yourself how to generate the libraries from a core requirement definition. It's a lot easier for old programmers to 'get' the gsl than it is for the current crop of IDE developers. Once you get your head around how that works, you will better understand the 'modern' approach, and especially it's limitations and drawbacks when it comes to performance and re-use. Complexity is a manifestation of poor code design, and somehow complexity has become cool.

Your way works, the new way doesn't... (0)

Anonymous Coward | about 5 months ago | (#46514349)

The old way of doing things is still the best... But it doesn't promise cheaper labor like the new way does, framework reuse by abstraction... I don't really get it either... As an Electronics Engineer, I learned to write code in HEX and assembly on microcontrollers like the Z80 and 68HC11, just as you describe. I believe this is still the best way for mission critical applications. Also I find it nearly impossible to understand what the code is actually doing in the hardware with higher level languages... I'm a bit biased being a hardware guy at heart, I'm not happy unless I fully understand the state of the machine at all times...

Anyway, given the fact that code written in years past, seems, to be of much higher quality, I'd say the guidance to find the cheapest and fastest way to abstract and reuse code, has failed, so your not alone my friend.

Programming Old School (4, Insightful)

John Allsup (987) | about 5 months ago | (#46514353)

Programming was done and dusted as a discipline in the sixties, got creative in the seventies and has been taking the piss ever since. New programmers need to stop learning tricks and learn to write good programs that work on minimal resources and work under strain and with no guessing games involved, just like the Space Shuttle people did, and learnt the beauty of purity that Lisp showed, the beauty of simplicity that Forth showed, and redevelop the lost art of programming. Modern day computing is ugly. [ Here ends the rant of an old school fundamentalist ;-) ]

From someone who's been in the same position (3, Informative)

Anonymous Coward | about 5 months ago | (#46514401)

Starting from the position of an "old skool" programmer and trying to learn all the new tricks at once is difficult. You're absolutely right about that. Don't let that discourage you though.

The reason it's difficult is because if you're trying to learn one of the common frameworks from your position, you're basically trying to learn a whole shedload of new things all at once. There's a ton of buzzwords and jargon that you'll need to work through, new concepts, and of course the conventions of the framework itself. It's too much to try to learn all that in one hit.

What you need (and what all the framework authors and tutorial authors seem to miss) is to take things a step at a time. You'll probably be able to get through things pretty quickly that way.

I'll assume you're familiar with OOP already. If not, that's where to start because most of the modern concepts that you're talking about hang off of having a structured object model. Make sure you have a grasp of the more advanced OOP concepts like inheritance, polymorphism and the like; they're all actually fairly simple concepts once you get past the jargon, but again key things to know before tackling the next bit.

Now you can start thinking about "Design Patterns". This is another topic where there's a lot of people spouting jargon in a way that makes it virtually impossible for the uninitiated to understand what they're talking about. The basic thing to know is that design patterns are just ways of writing software. They've all been around for a long time, and you're probably using a lot of them already without even thinking about it just because they're the obvious way to achieve things. They key thing to know is that in the mid-90s, a book was published [amazon.com] which described the common patterns, and gave them names. These names have become the standard ways of referring to them, so you'll find people talking about Factories, Adaptors and Singletons and expecting you to know what they mean. You may want to consider getting a copy of that book.

Next thing to learn about is a concept called MVC. Where design patterns describe ways of writing individual classes or linking them together, MVC is about the architecture of your entire application. Virtually all the common frameworks these days use an MVC architecture, so you really do need to know what this is before you'll get anywhere with a framework. MVC divides your code into business logic ('Models'), user interface ('Views') and code to manage the interface between them ('Controllers'). As with design patterns, the basic concept of keeping your business logic separate from your user interface has been good practice for decades, but has been formalised with concepts like MVC.

Those are the core things you need to know. Additional concepts (you mentioned DRY in the question) will show up along the way as well but you can pick them up as you go.

Get used to a poorly designed environment (4, Insightful)

Required Snark (1702878) | about 5 months ago | (#46514407)

If you started to code before the rise of the internet, you learned how to function in a somewhat useful development environment. The infrastructure and tools for internet based programming are severely broken by those standards.

To a significant extent, all the practices that make a workable environment were abandoned for the internet. It's likely that the learning curve problem you are experiencing is a reflection how bad things have become for coders.

Take languages. With the possible exception of Python, all the languages associated with web development have glaring flaws. PHP is conceivably the worst language to ever gain broad acceptance. JavaScript does objects wrong and has evil lexical scoping rules. You have to be very careful or you can step on an assumption made by object in a library that you don't even know was loaded.

Thoughtful system design has been replaced by object oriented programming. The failed assumption is that if you have an object model, you must be doing a good job. This is a prime example of magical thinking [wikipedia.org] . Just because it's all objects does not mean that it was done right. (I'm talking about you, Java).

Then there are the "non-standard" standards. The poster child is HTML in the browser. To reach the full user base web pages must code for multiple incompatible implementations. Chalk up a lot of this to Microsoft, but even they had a lot of help creating the garbage dump called web standards.

Frameworks take the mindset of spaghetti code, force it on the coder and then claim that they are really great. Take Cake/PHP. Using it is the equivalent of chewing on a mixture of crushed glass and push pins. It only seem useful if you have been swimming in the cesspit of PHP.

To be fair, I must say that JQuery is one of the best examples of software out there. I demonstrates that even given a flawed language like JavaScript, and the snake pit of inconsistent DOM implementations, elegant and useful software is possible. It's just too bad that there are very few tools that do such a good job.

So don't blame yourself. You are as smart and capable as you ever were, it's the work environment that has become degraded. If you come to grips with the current crop of shoddy software you can achieve your ends. A more fundamental issue is if you want to work in such a terrible situation. After having the experience of being productive, it's a real let down to experience using such a crap set of tools.

Learn some new languages (0)

Anonymous Coward | about 5 months ago | (#46514421)

I have been writing software since I was a kid using a ZX81. I have been through many phases in my development from assembly, procedural and then OO. At times you get in a rut and locked in your ways. I recommend some of the following to help you break out of your rut

1) Change jobs so you are exposed to different code and ways of working
2) Learn a new language from a different paradigm. Functional or some other area that is new to you
3) Learn unit testing with mocking etc
4) Write a roguelike on your own time and use it to explore new techniques and ways of thinking

For me it has been the journey into functional languages and agile techniques that has given the spark back again :)

Great MOOC for learning Java (0)

Anonymous Coward | about 5 months ago | (#46514427)

Hi
I am 50 years old and learnt to program in COBOL in 1982. I nevere really 'got' Object Oriented coding, but I'm just coming to the end of the Amplified MOOC of Java Programming, and it now makes perfect sense. In my day job I write in Perl, but now I would rather code in Java, as it makes more sense.
https://course-mooc.amplify.com/course
Tim

My first question is... (-1)

Anonymous Coward | about 5 months ago | (#46514459)

Are you retarded?

If yes, then no, you cannot learn new tricks.

If no, then yes, you can learn new tricks.

Do something that's interesting. (1)

jbrohan (1102957) | about 5 months ago | (#46514461)

I'm very old, IBM 360 anyone! It's much better if the subject matter is interesting. I've worked on all sorts of problems from accounting (ugh) to robotics (Yea) in many countries in the world. Currently I'm working on a way to use computers to help seniors and their carers live better lives. The carers are busy and there are more seniors than ever before. It's called Stay-in-Touch.ca and runs on an Android tablet or a dongle. I have a specific need (apart from meeting a super salesman) to port some functionality to send pictures to grandma from an iPhone, from facebook, twitter and so on. We can do it from Android, of course. Work on your own and sell the apps. I provide the API. There is an infinity of projects in this vein. (Apparently this old programmer can't figure out new lines in slashdot!)

You don't want to (1)

X10 (186866) | about 5 months ago | (#46514489)

Actually, as a programmer, you don't want to learn new tricks. The "trick" you should master is to write decent code and to be curious after the tools you can use to write that code. It doesn't really matter what programming language you use if you have the skill to quickly learn the specifics of that language. Once you know a few, you see the general pattern, and you know them all.

Burnout? (2, Interesting)

Anonymous Coward | about 5 months ago | (#46514507)

It's possible that you are experiencing symptoms of burnout. I get this from time to time, I can't focus enough to learn new stuff. Try taking a few weeks off (at least evenings) and do something completely unrelated, like play video games or just concentrate on your sex/love life for a while. Eventually you'll be chomping at the bit to get back to the computer, and then you'll be fresh and better able to move your mindset onto unfamiliar ground.

But you better believe that learning new stuff is the bread and butter of a programmer's career; you don't just stop, ever. I mean I've been programming since 1982 but only last year I learned the theory of Kalman Filters and this year I'm diving into some Support Vector Machine stuff, as well as ramping up on the PS4. Mind you, this is pure CS stuff; learning frameworks-du-jour has never really interested me all that much. This also may be an issue for you - you may suspect in the back of your mind that learning these modern frameworks is a waste of time, and you may be right ...

Shoelaces were a bitch (1)

usacoder (816957) | about 5 months ago | (#46514527)

But I finally got them to work.

BOS (0)

Anonymous Coward | about 5 months ago | (#46514543)

there are hundreds of frameworks and thousands of online tutorials, but I just can't seem to take the tutorials and grasp the concepts and utilize them in a practical manner

That's because all these frameworks are a bag of shit.

Projects, not languages (1)

Antique Geekmeister (740220) | about 5 months ago | (#46514573)

Merely speaking a language may not be interesting enough to rekindle your interest and encourage growth. But there hundreds of good open source and freeware projects that would benefit from your insight and experience. CPAN, github, GNU, and Apache all host projects that may interest you nad have relevance to your work, without being part of your daily grind. Perhaps you'd enjoy a chance to refine some familiar old project?

Your question makes no sense at all (1)

prefec2 (875483) | about 5 months ago | (#46514621)

Every human is able to learn new things. It is in our nature. Most people stop learning in a school way after school and switch to experience learning. However, in the IT industry you always should learn new things from books or tutorials. If you have not studies CS at university (which is IMHO the only way you could not have heard anything about frameworks) then it is time to learn theoretical foundations of your field. It will mix perfectly with your experience and of course challenge one "fact" or another.

However, being 18 years into programming would make you not old. At least not if you started as a kid. With my background it would make you 30. This is not old. That was the time where I reentered university.

You're not a *real* programmer (0)

msobkow (48369) | about 5 months ago | (#46514657)

You're not a *real* programmer until you decide to write your *own* framework. Your framework won't be useful to anyone else, but you'll think it's the best way to do things because it reflects the way you *want* to do them. You'll spend months or even years hacking away at your framework, ship it, and then some poor slob will try to download and use it.

That is the ugly truth about 99% of frameworks. They're hack jobs by one or a very few people that deal with a very specific problem or code style, and are useless for anything else.

Most frameworks don't "make sense" because they only make sense to the people who wrote them. Everyone else just goes through the motions, crosses their fingers, and hopes that it doesn't break because they haven't the foggiest idea what to do if something goes wrong.

Load More Comments
Slashdot Login

Need an Account?

Forgot your password?

Submission Text Formatting Tips

We support a small subset of HTML, namely these tags:

  • b
  • i
  • p
  • br
  • a
  • ol
  • ul
  • li
  • dl
  • dt
  • dd
  • em
  • strong
  • tt
  • blockquote
  • div
  • quote
  • ecode

"ecode" can be used for code snippets, for example:

<ecode>    while(1) { do_something(); } </ecode>