Ask Slashdot: Can an Old Programmer Learn New Tricks?
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."
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 ...) ... "I did it !" ....
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
Good luck youngster :) ...)
(and now get off my lawn
Am I just too old and too set in my ways to learn something new?
No. This question> comes up all the time on Slashdot.
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 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.
"First they came for the slanderers and i said nothing."
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?!