I like to learn random useful things to a basic or medium level, I know video editing, how to use Photoshop, I am learning 3d modeling, I even know how to make a (crappy) song in Fl studio, however one thing I never learned are programming languages.
Since there are tons of actually very good app builders online, where you simply drag&drop elements and make a great looking app, is there really anything else, other than apps, you could use programming for, if you don’t plan on a IT career. Essentially is it useful in anyway for a hobbyist like me?
Of course, I realize that it is extremely useful if you want an IT career, but that’s not what I am asking.
IMO, it would help you practice processing problems and procedures in a detailed and logical way. ie. How best to break down a job into manageable steps.
Only if you want to experience the life of drinking copious amounts of mountain dew and the frequent spontaneous f-bombs and less frequent “YESSSS!!!”
Unless you’re building something that some awesome “drag and drop app makers” can’t do, I see little point in learning a programming language. The tricky part is whenever that tool CAN’T inherently do something, and you need to add customization. Then you’re paying some guy a lot of money per hour to do that. You have to balance that against the time and cost of learning it yourself in the first place.
I learned many programming languages over the course of a long career. The only ones that stuck were the ones that I had to use regularly to solve real world problems. The others just fluttered away in the breeze. I probably would not even recognize them if you showed them to me (PASCAL, anyone?). Like any language, you need to speak it regularly for it to take hold.
Having said that, learning a new thing is always useful, if only to get you to think in new ways. I was reared on procedural languages (Assembler, COBOL). When Object Oriented languages came along I had to fight hard to change the way I thought. I was able to use OO only sporadically and I can’t say it ever helped my career, but it was fun to learn.
I am not a programmer, but one course that did help me anyway was called, “Programming Logic and Design”. The object was not to teach you any code or languages or anything like that. Instead, it was designed to teach you structured program logic. I learned to create “modules” that could be plugged in and out of a given total process to modify it or create a different outcome altogether. It’s something I’ve been able to apply in my life even though I am not part of the computer programming world.
So essentially, except learning logic, there’s not a lot of point to learn it in my case?
Since I am playing around with 3d modeling and game engines, I actually have a lot of logic related stuff, for example a hierarchy, a car 3d model object, a light object, physics, materials and shaders and combining stuff like that.
I think it is undoubtedly useful, the question is whether it will be worth the time investment.
Even if programming is not your job, it can still be very useful supplementing many modern roles. For example, if there’s a web page that many members of a team frequently go to to check some status, you can write a script to automatically check when that web page changes and mail out a report. People will think you’re a sorceror but it’s feasible for a non-programmer to learn.
On the other side of the coin, rapid application development tools make it easy enough to implement simple utilities that I sometimes write apps just for my own personal use. e.g. for image-editing, I wanted to make custom palettes but I couldn’t find any tools that could manipulate sets of colors in quite the ways I wanted (or maybe it was user error), so I put together my own tool in a couple hours.
ETA: I missed your last mail. Yes if you’re already familiar with defining objects with sets of attributes and simple rules, you’re already essentially programming.
Programming is useful if you want to very precisely instruct a computer to do something and you don’t have an application that does what you want. For example, I’ve written codes to solve mathematics problems (like probabilities for a specific card or dice game), or image processing (like rebalancing colors in an unusual way), or combining data in a weird way (like vote records for an online Mafia game). Basically, something you want to do, you know how to do, and is too tedious to actually do is a perfect candidate for writing a little computer program to do it for you.
My job is not IT, but a science/engineering one that requires finding, understanding, and correcting data anomalies. I write little programs that assist everything I do at work, so it comes very natural to do the same at home.
Mmmmm, I wouldn’t minimize the practical application of logic so lightly. There is tremendous real-life benefit in being able to dissect a problem, identify its principle components, and construct a solution. The skills I learned in BASIC and Pascal a quarter century ago are still invaluable to me getting through the day.
But to be honest, I’m not familiar with the current generation of programming languages. The last coding I did was creating routines for Neverwinter Nights. Although, those routines were pretty complex because I am unafraid of nesting routines with tons of If/Then variables. And accounting for contingencies like that goes back to the old programming languages.
There’s a difference between knowing a programming language and knowing how to program, and the latter skill is far more valuable, to professionals and laymen alike. Those drag-and-drop environments you mention remove the need for learning a programming language (or more precisely, they offer a programming language that’s very easy to learn), but you still need to know how to program in order to make good use of them. Once you know how to program, it’s very easy to pick up new programming languages, and the skills will serve you very well even in pursuits that have nothing to do with computers. Law, for instance: Legalese is, effectively, a programming language, and hence you need the same skills as for programming to negotiate it.
I have a background as a programmer (have been a manager for many years, so I don’t write production code anymore but I try to keep my skills up) and I don’t think this is useful for a non-programmer. Instead I would invest in learning Excel which is really a programming language even though people don’t think of it as such. And it has many more practical applications to the average person than a programming language.
I agree with this but it takes a long time to really learn how to program. It goes beyond just knowing the language and understanding good design. I got a computer science degree and continued to get more training on the job for structured design and analysis methods, then in 1990 started teaching the latest new thing, object-oriented design. The process never really stops.
Well, of course there are different levels of expertise to anything. You probably know a lot more programming than I do, and I know more than many others. But I’d maintain that even a basic level of understanding, much less than what you or even I have, is still valuable to almost everyone, in every walk of life.
I used my programming skills just recently outside of work. A financial institution I use sends me a 1099 (tax form for non-US readers) every year as a PDF. It’s usually about 15 pages of entries. All of these have to be included on my tax return.
I could probably buy some tax software and try to get the 1099 in some format the tax SW understands. “freefilefillableforms.com” lets me file a free return, but I have to fill out all forms manually. Entering all the info from the 1099 would take hours, plus a big risk of typos.
But since I know programming I wrote an application that parses the 1099 and automatically fills out the tax return. So a couple hours of programming and I don’t need to pay for tax software. Woohoo. And even though I write SW for a living I find writing stuff for myself to be fun, so double-win.
Yes, you can use programming to find answers. You don’t have to be in IT for that to be useful.
About eight years ago, I wrote a technical article for a trade journal, on the subject of key interchange (which is when you put the wrong key into a lock and it turns even though it shouldn’t). I knew that the odds of key interchange in a typical master keyed residential lock were roughly 200 to 1 against. Based on that, I tried to predict the point at which there would be a 50-50 chance of failure. But I wasn’t content to just estimate it. I wanted more data. So I wrote a routine in PASCAL which randomly assigned keys to a master key system and tested them for a specific kind of key interchange. Then I wrote a program to repeat that routine several million times, keeping track of how far each went before failure. The median failure point turned out to be a bit lower than I had predicted. I’m not aware of any real-world data collected on this topic; such data would be quite difficult to gather. But my simulation gave me the results I needed in order to be able to say “Here is the predicted median failure point.” and use that information to show the advantages of using different methods which have much lower risks.
Even if you’re just doing drag-and-drop development, knowing how to program can be useful. Even in those automated environments, they often have a way for you to write some custom code when something triggers. The code language may be more of a pseudo-code specific to your design environment, but you will basically be programming. If you already have experience writing programs even in a different language, you’ll find it easier to write the little code snippets in the tool’s language.
You will also have the opportunity to do some programming if you ever make websites. Even if you use a website builder, you can usually pop into the source and tweak the html and javascript to add additional functionality.
If you’re just learning a language informally, I would recommend Python. It’s a simple language but has advanced capabilities which allows you to do just about anything. There’s a vast user community for Python, so you’ll find plenty of tutorials, tools, documentation, user support, etc. If you’re learning, try to find a guide that’s focused on learning how to program using Python rather than a guide to programming in Python. The programming in Python guides will be directed at experienced programmers and won’t explain any general programming concepts. A learning how to program guide will have explanations of concepts like loops, conditionals, assignments, etc. that teach you how to program in general.
And even if you’re not doing that, and all you’re doing is just rearranging the drag-and-drop elements, knowing how to best arrange the drag-and-drop elements itself requires programming skills.
LOL, parsing PDFs and collating the data into a submitable form is beyond what the OP is talking about I think. I mean, kudos for doing that, but that’s really only a happy side benefit of being a software engineer.
I am also a software engineer. Every time I come up with some quirky idea of something that would be useful to me personally, I get on the play store or google it and somebody already did it. I have to get REAL obscure before I’m not reinventing the wheel.
My computer came with PHP installed … with basic HTML skills I was able to do some fun things with it … fairly quick learning curve … the most complex thing I built with it was a casino blackjack model where I could tweak basic strategy … I found that staying on 16 is about as good as hitting and card-counting systems don’t work as advertised …
What computer programming is good for is when you have a shitload of data that you need to run through a single math equation … y = 12.524x[sup]2[/sup] + 51.786x - 187.23 for these hundred million different values of x … what would take years and years with pencil and paper is an hour programming and maybe ten minutes runtime …
If you think it would be FUN to program a computer … then learn … man, after weeks and months of debugging, there’s no better feeling than to see your program run correctly …
I suspect that learning programming will, to some extent, affect your thinking habits (increased regularization and ordering, moreso with more time spent at it).
I found my skills useful for handling a specific collection of data that can be done with a spreadsheet but the program is much easier to use, has stable structure (complex spreadsheets break too easily) and can quickly combine the information in more interesting ways. The trick in a situation like that is to decide whether a custom program would take more effort than just using existing tools – which means you need a good understanding of programming.
You need to be careful, though. Once you get a thing working, you might end up building out from there, which is a fantastic way to improve functionality and add bugs. Writing a program is easy – most programmers working with complex designs spend far more time chasing down the bugs than actually authoring the code.
In some cases not knowing how to program can limit you. In my last job I build a big data analysis system, but a lot of what I did was little snippets of code to do particular analyses. All the users of my system knew spreadsheets, and the output of the data system could be easily loaded into a spreadsheet, but there were often hundreds of thousands of data and the analysis to be performed would be tough to do in a spreadsheet - tough enough that you’d really have to know how to program to build the proper macros.
Most of these I could knock off in under 20 minutes of coding time, but would have taken them a lot longer to put into Excel or our Open Office equivalent.
In some cases people would be blocked by over a million data items - but a little Perl script did it just fine, and a lot faster than even loading the spreadsheet would be,
I think the decision must be made on whether you run into problems hard or impossible to solve without custom code.