|
If you never programmed in any language before then you need to start from the beginning. You have to learn variables, data types loops and decision branching. Every language does all these thing with wildly different syntax. Codecademy is not just random tutorials. It steps you through the basics of what you need to know in order to do even the simple stuff.
Learning java script is just a small piece of the pie. what you realy need to start with is HTML and CSS(cascading style sheets) to learn how to create the interfaces to your JS code. JS does you no good if you can't get input and display output. Once you have HTML AKA basic web page design. JS and what you can do with it will make more sense.
If what you are wanting is an all purpose language that you can make your own independent interfaces, like you get with executable programs then you might want to consider learning Microsoft C#, basic Free visual studio express or Java proper. both are free and you will most likely find you will never have to buy the premium versions.
|
|
|
|
|
Thanks, Twallick.
You are absolutely correct that the first thing is to understand the constructs of programming. Been there, done that, long time ago. However, I don't think the way things are done are wildly different, and maybe at times close enough to be mildly confusing. I work with a director who says I'm always showing him "old school" drawings like Data Flows and Structure Diagrams whenever I explain things to him. He appreciates it because we went to the same University.
Also, if you can't present what your program does to a person, for the most part, there really is no purpose. Absolute agreement there! IOW, I don't think there are many, if any, in this discussion whose focus is real-time hardware control, and I'm not going there from here.
My thoughts on Java Script are there is already an environment where I can use it without HTML/CSS, i.e. Google Drive, and that is a step off from using VBA with Excel. That doesn't mean HTML & CSS are unimportant, it's just I may put those horses behind the usual cart.
Thanks again for your input to where I am heading.
cat fud heer
|
|
|
|
|
My primary way of learning technology is to use youtube coding tutorials. I ALWAYS start with youtube when learning a new technology and branch out to written tutorials from there.
If you want to learn c# this is one of the BEST video tutorial playlists i have found
https://www.youtube.com/playlist?list=PLAC325451207E3105[^]
Eric
|
|
|
|
|
Eric, thanks for the tip. I've never tried using YouTube tutorials. I will now. That link is bookmarked for when I have the IDE installed and can turn up the sound. (Gawd! I hate cube world!)
Whoever has done these should be commended because they've laid this out like a book, meaning I can go to different chapters when I want. (I'm not much of a YouTuber so I'm not certain where the bar is for this sort of thing.
cat fud heer
|
|
|
|
|
Hello:
I would also consider myself one of the more senior developers (50+). Most of the work we have done over the last 15 years or so was in VB6, but a few years ago we knew the future was somewhat limited.
So I started to learn C#, that and some ASP.NET, Javascript etc. and we are now producing some interesting web sites, web applications and of course more desktop software. I can't say the learning curve has been easy, but we seem to be making pretty good progress now and it is pretty nice to have skills that are a little more "current" now.
It is also fun when you push yourself out of the comfort zone, always lots to learn!
So I would suggest C# too.... good luck.
Dave
|
|
|
|
|
Thanks Dave!
Spart123 wrote: I would also consider myself one of the more senior developers (50+).
It's nice to know that another person younger than I am .... Never mind! I expect just about everyone on this site to be younger than I am.
It's interesting to read that someone in his teens and someone in his 50's have similar recommendations (c#) even with different perspectives, i.e. you mentioned "more current" and he mentioned the future.
I have the feeling that I should be making a list of all the recommendations, then using that as a check list moving forward. Hmmmm...something else on that to-do list.
cat fud heer
|
|
|
|
|
BiggerDon,
Later in the post, you mention knowing COBOL. Quite frankly I still see jobs posted for COBOL, have you looked... Still interested in that?
Others have said this... It is no longer the language... It is the frameworks that consume you, and those depend on what problem you are solving.
I am going through CodeSchool personally because I realized I just "picked up JavaScript", and never studied it. I am flying through the material AND Learning a few new things. I also want to recommend it to some younglings in the neighborhood who are entering High School and need some guidance. After a few badges I say it works pretty well. Do some of the free stuff see how it fits you.
Again, I would look to get back into ANY programming you can find. That help desk experience is not helping. Finally, I am 48... I am feeling like 55 might be the END of my core programming, and I will be simply managing the smart kids (right now only 10-15% of my time is truly ME doing the programming. I do more reviews and designs)...
So, the point is that you have to consider your quality of life as well. Do you want the pressures that come with programming these days?
HTH,
Kirk Out!
|
|
|
|
|
Quite frankly, I was interested in COBOL or much other programming back in the days when my knowledge was fresher. I quickly moved more into the realm of business systems (process) analysis and methodology.
As to the pressures of programming, are they much more than the pressures of managing a project, implementing a time tracking system for 1700 people around the world who think "HQ" means "hardly qualified", working up a presentation to a CIO that is not complimentary to his organization, or working a busy bar on a Friday night. Due dates are due dates, response time is response time. I took up my current projects because I was bored, because there really was no pressure: RIP, retirement in place.
Funny thing is 30 some years ago I heard of someone else going through the same thing I am, reaching 60 and deciding to step "backwards" into programming. Programming has its benefits, i.e. at the end of the day (or project) you can measure your progress and see something you've accomplished.
I hope all of that did not sound like harping. You're challenges are valid. They stimulate my thinking about the direction I am undertaking. I thank you for that.
CodeSchool? I will have to look into it. That makes at least four resources for education/training people have provided here. I already knew of one. Another is good for me.
cat fud heer
|
|
|
|
|
There are a wealth of online courses for learning web development, both free and paid. I'd definitely recommend you get really comfortable with HTML and some CSS, and then start learning Javascript. Javascript is the language of web browsers (and now many servers, too), so its one of the most pervasive languages around, and its works on every platform (Windows, Apple, Linux, iOS, Android, etc. etc. etc.).
My personal favorites are:
Anyways, despite the cost - the paid sites are well worth the money for the advanced concepts and the depth of learning they provide, and are a huge factor in why I'm a professional web developer today (despite having a degree in Music, ). In fact, after getting hired at my current company, I convinced them to invest in Code School for our team and the other devs love it! (We just renewed for another year).
Anyways, best of luck to you in your search for greener pastures!
|
|
|
|
|
Dave
Thanks for the recommendations for on-line training. I'm adding them to my "Check this out" list. With the number of replies I've received to my question, and my personal commitment to respond to everyone who was kind enough to provide their insights, I'm finding I cannot do the check-it-out task in line with responding.
I think you're the first person to mention HTML/CSS. I'm wondering now if I shouldn't have a plan to develop some knowledge in a small set of languages, do some "peripheral" tutorials as any projects progress, making me more ready for more projects. Yep...ask a question and more questions arise!
You mentioned having a music degree. Way back when I worked with a married couple who were musician-programmers. Over the course of those years they said that programming is a lot like composing. As I remember it, movements were like stages of batch processing, repetition was looping, thematics were functions, and variations on themes were if-then constructs. Yes, there was beer involved!
cat fud heer
|
|
|
|
|
Glad to hear you've had such a good response...hopefully you found some good advice along the way! Anyways...the beauty of many of the sites I mentioned, is that you can really get a taste of a lot of languages to see what interests you. While most of what I mentioned is web/mobile focused, there's quite a bit of material on Treehouse that isn't. Eventually you'll want to focus in, but I initially dabbled with PHP, Python, Go and others before focusing in on Ruby & Javascript. I often hear folks say HTML and CSS aren't programming languages (usually with a derogatory tone), and although technically true, IMHO understanding them is just as important (if not more so) in the context of modern web programming than any scripting language.
I think HTML/CSS/Javascript is a great combo if you want to get into automation for Google "Work" products, and it will serve you well beyond that arena as well.
That's funny you mention the programming/composition paradigm (my music degree concentration was composition), and I'd agree that they're definitely correlated! Maybe you could equate your choice of language to the "orchestration"...
|
|
|
|
|
Lots of great advice!
David Lormor wrote: I often hear folks say HTML and CSS aren't programming languages (usually with a derogatory tone)
Ayup! That's why I started with the apology for VBA, to defuse the scoffers in the crowd. The difference between HTML, CSS, and SQL (which some also say is not a programming language) is they don't center on the same procedural structures as the others. Even the vaunted OO languages need If-Else and Do-While and all that jazz that makes them, too, "real".
cat fud heer
|
|
|
|
|
I realize you have "no budget", but if you can crack open the wallet a little try pluralsight[^].
The personal plan costs $29 a month (pricing[^]).
- great coders make code look easy
- When humans are doing things computers could be doing instead, the computers get together late at night and laugh at us. - ¿Neal Ford?
|
|
|
|
|
Thanks, Mr Monkey-Man, sir!
I'll look into pluralsight. Gotta think about the Home CFO wincing as she catches me sneaking one more of my charges on the credit card.
cat fud heer
|
|
|
|
|
It's not quite clear from your question what your primary motive is for learning new languages. From your post in general and the statement:
Quote: Recently I started considering branching out. I figured I could take what I know about programming in a MS spreadsheet world and leverage that to Google Drive and OpenOffice, mainly to start learning more mainstream languages, e.g. Python and Javascript.
I get the idea that you might be driven primarily be a desire to advance your career. The desire to learn mainstream languages seems to be geared towards making yourself more appealing to employers.
However, from statements like:
Quote: Of course, I am interested in your opinions as to which language(s) to go after to build more knowledge and understanding, whether you think this is a fool's errand, etc etc.
I get the sense that maybe you are interested in learning more for its own sake. That is to say you find computer programming interesting and you want to understand it at a deeper and more fundamental level.
Of course, these two things are not mutually exclusive and with many things the truth may be a combination of both. However, it is probably still a worthwhile question to ask yourself if your goal is to go fast or to go far.
In either case the question of which language to learn may not be the best one. If you are hungry for career advancement the first question you have to answer is, how will I demonstrate or provide proof of my new skills? You can spend every free minute you have over the next year studying and practicing a language like Java to the point that you become fairly proficient. However, if you send out a cold resume to someone and simply claim, "I know Java", the chance of getting an interview is slim.
There are ways with varying degrees of effectiveness to try and solve the how to get a job without experience and how to get experience without a job conundrum. It might be solvable by networking. If you know someone or someone who knows someone who will give merit to your claim that you know a language then this might not be a problem. You could also look to publish some of your personal projects or contribute to open source software. You could also take a course from a reputable institution. There is even some evidence that a few progressive companies are giving some small weight to MOOC course completion.
However, if you like your current employer and the possibility of advancement exists there, then that is probably your most likely opportunity for success. You just need to keep doing what you have been doing, finding problems and solving them. You may also need to devise a means of measuring or describing the benefits your problem solving has had for the company so you can present that to the appropriate parties at an opportune time.
Your basic approach, though, seems sound. You started by noticing mind-numbing repetition in your day to day work and automated that a way. So what's the next biggest problem? From your brief description and my experience with spreadsheet use in the wild I would say the next problem might be that your company is using spreadsheets where they would be better served by using a database.
If this is true then you could spend a day learning about relational databases and normal forms. After that you would have to look around the company to see what if anything is available or already in use. You'd pick some specific technology like MS Access, SQLServer, SQLite, or Postgres and start creating the next solution. Depending on the scope of the problem maybe you'd build a prototype or maybe you'd build a fully functioning solution. Then you'd pitch the idea to your bosses pointing out how the system prevents all sorts of errors and allows you to run all these different kinds of queries. Given the description of your skills you should be able to automate the import of the data into the new system so there would be minimal transition costs.
Maybe the problem is more one of sharing and display. In that case you might want to focus on learning HTML and javascript with the goal of making the data available via a webpage. Most managers love data and if you can give them easier access to it or show it in a better way they are going to love you for it. Making something web based doesn't automatically make it better but there could be real gains here.
Again, I don't know the specifics of your situation but if you keep finding and fixing problems someone is going to take notice. If it doesn't lead to promotion within your company it is certainly going to make for some good bullet points on your resume. You will also be able to truthfully claim that you have job experience with the given technology. My point is, though, that the tool choice will be much better informed by the problem you identify than by the well meaning guesses of strangers.
Of course, career may not be your primary focus. You may be motivated by less tangible desires. Maybe you've been doing programming for a while and you recognize how powerful it is. That intrigues you and makes you want to learn how to better harness that power. You want to understand programming at a fundamental level. Yes, this will likely lead to career advancement too but it is more about satisfying your curiosity and the journey being its own reward. If this is the case then my advice is nearly the opposite of what I would suggest for the career path.
In the career path you can move fastest by staying close to what you know. Maybe you go from VBA to C#. You pick up a little power and structure but you stay within the familiar MS ecosystem. However, if your goal is to stretch your mind then you do that best by exposing yourself to ideas that are the most different from what you already know.
If you really want to learn about core ideas that underly computer languages rather than just another syntax I highly recommend the Coursera course programming languages[^] from the University of Washington. A session appears to have just ended but if they allow you to enroll now, do it. You won't be able to get a passing grade for your assignments because the submission deadline will have passed but you'll still get the knowledge. If you later want a good grade to show an employer you can retake the course and will likely pass with distinction. Given the description of your background I can almost guarantee you will have several aha moments while taking the course. The instructor explains core ideas in such clear terms that you will likely shave years off your computer programming maturation process.
While taking the course you may see other classes that interest you and you are welcome to explore in whatever direction you feel the strongest pull. However, if you finish the course and don't know which way to turn here are some other suggestions.
There is MIT's old intro to computer science course 6.001 which I think it still available through OCW. This course follows Abelson and Sussman's "Structure and Interpretation of Computer Programs". There is also the new version of the course, 6.01, which is taught in Python. I don't think the new version is nearly as mind bending as the old one but if you really wanted some exposure to Python it has that going for it.
After that I would suggest getting your hands on a version of Smalltalk like Squeak and spending a couple of weeks with it. A decent book to go along with your exploration is Squeak by Example. The UofW course used to use Smalltalk instead of Ruby for the final section of the class and if I had my way it still would. Smalltalk's live environment is not really quite like anything else and as far as OOP goes it doesn't get much OPPier. Smalltalk is a pure OOP language. I never really understood what Alan Kay meant when he said languages like Java weren't really OOP. It was only after a couple weeks of playing with Smalltalk that I started to understand what he meant.
After that I'd recommend checking out Prolog. You don't have to try and master it but spending a couple weeks with it, say working through the first seven chapters of "Learn Prolog Now!" by Patrick Blackburn, Johan Bos, and Kristina Striegnitz, will be an enlightening experience.
After that you're going to have a pretty expansive view of computer programming. You could look into purely functional, statically typed languages like Haskell or maybe a stack based language like Forth. Though I'm not sure stack based languages really introduce any new concepts over what you will have already learned.
At any point along the journey you may want to stop and actually apply some of the wisdom you have accumulated. I strongly encourage you to do so. After some amount of practice you may become bored and want to move on again and you'll be able to because there is always some new area to explore in the world of computers.
Before I go, let me reiterate in case it got lost in all the above. If you're not sure which way you want to go. You just know you want to learn more. I highly recommend the University of Washington's programming languages[^] course offered on Coursera. I would be shocked if you didn't find it an eye opener.
Whether your goal is advancing your career or your knowledge I think asking, "Which language should I learn next?", may not be the right question. You should either be focusing on what problem are you trying to solve or what concept are you trying to learn. Once you answer that question there may be only one or two languages that actually fit the bill and the choice between them will largely be arbitrary.
|
|
|
|
|
First, thanks for the time and thought put into your reply.
.
Nathan Nowak wrote: It's not quite clear from your question what your primary motive is for learning new languages.
Yep. I left it out for three reasons.
1. My goal was to receive input, not prescription. I was looking for options other had taken for my own evaluation against how I learn, not specific do-this-then-that direction. Many people told their own story, and that is what I sought.
2. It would have just been another boring story we've all seen on forums. That would have deterred people from responding because they would see it as just another whiner. With that in mind, I was humble and edited my request to just as much as I thought was needed. When I felt it was still running long, I empathized with the readers.
3. I offered an open ended question where people could read into it what they wished. That allowed them to feel they understood enough of the situation to consider their input valuable. That's a motivator.
In short, more detail was not only not germane to my purpose, it would have been harmful. These are things one learns in years of consulting in the real world.
I think my method proved itself correct by the number of thoughtful, caring responses: each of great value but none the same.
I have experience in a lot of the background you mention. For example, I have used Access as a research reference repository in my consulting work. I also have used it for years as a mini-datamart, archiving periodic feeds then using queries in Excel to provide historical reporting and projections with trends and seasonality. Normalization? Learned as an undergraduate when many DBs were hierarchical. In 1998, during the Y2K ramp up, the PM on a project I had supported around ten years earlier told me that some of my DB decisions on his project made it ready for Y2K. I use those normalization as second nature. In short, you've confirmed those are still important.
That said, Dan Grossman's course looks like a nice survey. I may try it out when it is offered again.
Thanks.
cat fud heer
|
|
|
|
|
Without any doubt, you should master Javascript (Frontend web development and Nodejs) and that will give you a firm grasp to learn actual frameworks and optional other dialects (CofeeScript, TypeScript, etc.). I recommend you the book "Javascript, The Good Parts" for start.
Second, master Object Oriented Programming and C# and .Net. This will give you access to a robust framework that is growing far from its Windows source, reaching Linux and mobile development using Ximian Mono.
Last, You should learn Java. You need this for Android Framework and for enterprise applications. This thing is huge, so diverse... If in .Net you have two or three ways of make something, in Java you will find 20 or 30 open source libraries for to do the same task. Not better or worse thant .Net, but the learning curve is huge.
While you are learning those, you must study some flavor of SQL (those that you can download free like MySQL-MariaDB, PostgreSQL, Microsoft SQL Express, SQLLite, etc.). It is a must to know database CRUD operations.
I am actually a some kind of programming languages observer. I have pleasure learning and compairing programming languages... but I am not alone. So, I can recommend you some hints of my method to learn as fast as posible a new programming languages:
RECOMMENDATIONS:
1. Install Console2 and customize a tab for use with Node, Java, Grunt, etc. and any tool or language that supports some form of command line. I been using this with every new language that I want to learn, setting up - running batch files (.bat) that send me to the language command prompt. It is a pleasure to open a command window that is ready to test a new programming idea in any language. My actual Console2 configuration, give me fast access to the command line of nine languages (Python, NodeJs, Go, Erlang, Ruby, Clojure, Scala, Julia and Rust) and I expect it grows more...
2. Write down in Word, as succint as posible, looking for use just one or two pages: Primitives or Data Types supported (Enumerate all providing declaration samples), Control Statments, Exceptions control (if any), Input-Output details, Data Conversions, String manipulation and Date-Time manipulation. You will use this for fast checking and prevent lost time searching about it.
3. Write Code. Start with small programs with progressive level of complexity. Tipically, I will follow this path:
* Hello World.
* Input-Output: Ask to the user some radio number and calculate area of a circle. Do not just make the math. In the code try to abstract to learn. I mean, if it is Object Oriented Language, declare a Circle object. Build its method Area for compute. Watch: Supports data hidding? PI constant... can be static? That means, it holds its value replicating a copy in every instance or act like a class var with just one copy for all the instances? etc.
* Basic OS interaction: Make a programm that scan and display all the files and folders from a given path sort by name or size. Goal: To learn access to OS and system files, collections support, etc.
* File Handling. Create, open, modify, delete text files. Goal: Exception handling and OS interactions.
* Database Handling. Basic app with CRUD support. Goal: Learn language string encodings support and, of course, language or framework state handling some RDBMS.
* Network Sockets: Chat between two machines. Goal: Data conversions, streams, strings to bytes, bytes to strings. Concurrency and multi-threading.
* HTTP server: Make a simple HTTP server. Goal: Check HTTP and REST support.
|
|
|
|
|
I use 3 monitors at work. The laptop monitor, and 2 big flat panel monitors.
It makes my life so much easier, especially when debugging applications.
Question, if you still use one monitor, do you also code in notepad?
|
|
|
|
|
I only got a second monitor a few years ago, and no, I didn't code in Notepad.
Vi was the King!
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
OriginalGriff wrote: Vi
ugh.
|
|
|
|
|
It's actually pretty fast for certain things. It is a pain in the butt to remember all the damn commands though.
|
|
|
|
|
Albert Holguin wrote: It is a pain in the butt to remember all the damn commands though
|
|
|
|
|
Once you learn certain commands though, editing text files becomes fast. The commands for vi are also the same as commands for other linux programs like less, so you learn them for one and can use them in the other.
|
|
|
|
|
Emacs.
Regards,
Rob Philpott.
|
|
|
|
|
edlin
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|