Where should I start?

I want to learn to code and I have a strong belief that by learning to code in one or two languages I can satisfy my creative desire to both automate my life and create things from scratch.

I need some guidance on where to start? As a side note if its something that is highly useful in the job market then I would be interested in that as well. I really want to learn something that can be utilized in work to either make my personal job easier by automating redundant tasks or allowing me to more or less make my own software to do things I already tediously do manually.

I’ve heard good things about python but figured someone looking from the top down might have some insights into whats good and why before I waste countless sleepless nights learning something that may not be as useful as targeted towards what I want.

1 Like

Hey @Sirwestofash !

I’m a former Java dev turned C# dev who went to a 4 year university and majored in CS. I’m currently working at a mid-large size company but started at a super small no-name place. While formal education isn’t mandatory or cheap, its just what I happened to have done and its most not all of what I see on resumes.

That said, I have friends/coworkers in the industry who have not gotten a formal degree in CS of any kind, but have good work experience. Most of what I see is passion shining through in personal endeavors such as what you seem to be expressing in your post.

There are plenty of free and low cost educational materials on Coursera and Udemy (i’ve taken “classes” on both for my own further learning) and also multitudes of “how to get started programming” threads out there.

If you’re looking for a recommendation on what language to use, I would lean towards something Object Oriented just because thats my own experience. I’m hoping someone on here has a more varied experience and can shine light on avenues to take that aren’t like mine.

Java and C# have similar styles and are large core platform languages. I’ve used Python pretty extensively in my old job, but it was more of a scripting language for us (as was some JVM languages like Groovy).

Use case ends up being 90% of the decision maker (in my limited experience, and I am by no means an expert!) so what you might want to start training yourself to do is asking yourself the right kind of questions.

  1. What is a personal project I want to try and do?
  2. What language(s) out there seem to be the right fit based on researching the project
  3. Go dive in and learn in order to accomplish the project

At the end of this you might realize that you could’ve done it this way or that way or want to re-write it entirely in a different language, but thats normal!

I look at crap I wrote 6 weeks ago like “what the f was I thinking” or “gross why did I do that”.

The bottom line is that if you think you should start with python, DO IT. Follow that curiosity and see where it takes you. Python is great for automating out some tasks. Depending on your OS you could try using Powershell scripts or Bash scripts too!

Good luck and feel free to ping me with questions. I made it a new years resolution to be more active on here so we can help each other improve by keeping each other honest!

1 Like

Well if I am being entirely honest I also want to learn something to increase my potential in the job market. :slight_smile: I have a 4 year degree in physics/electrical engineering but my school only really focused on electrical engineering towards the latter part of my degree and unfortunately my current job has absolutely NOTHING to do with electrical engineering.

So I saw this glitter bomb video where this physicist and former Apple/NASA employee created something really ingenious to help fight porch pirates. https://www.youtube.com/watch?v=xoxhDk-hwuo&t=585s

Essentially I like my current job but I want to find a job dealing more with the tech side of STEM and I want to strengthen my Tech abilities while I hone my soft work skills at my current job. I’m desperately trying to avoid becoming complacent and happy with my current situation. It’s not like I make 6 figures at Google and get 3 months off a year but my job is alright for now.

I recognize that I need more hard skills/experience under my belt as well as job flexibility/mobility. Which I think learning a programming language would offer me. Not to mention it would be cool if I could get back to learning a language that might in some way translate if I ever want to learn something really close to the metal.

As far as a specific project I really have a great idea for a program that would analyze a business model and determine if its profitable, layout maintenance costs for real property/equipment, layout labor consumed in maintenance, as well as adjust each value for inflation automatically every year to determine if something like a new phone is really a good investment for the business. I could maybe do this in excel but it would require lots of manual inputs or making cells that reference each other and I’d prefer if I could instead pull the data from my credit card or bank statements and categorize it automatically or manually to cross reference towards a list of assets and then see how much all my assets are costing me each year, quarter, or month etc or how much they are earning me. Such as if I use that phone to receive paypal, venmo, square payments how many transactions was it before I recouped that cost.

1 Like

Everyone is gonna throw their $. 02 and here are mine. Python. That’s it. Nothing comes even close when it comes about learning a new language and have access to iot devices.

You don’t need to focus on multiple languages at the same time that’s just confusing for beginners. Get decent at python and you will learn the fundamentals in CS so you can move on to the next thing. Java and c languages are good but not even close to scratch python when it comes to adapting CS patterns.

I’m not going to try and convince you to choose Python, but I’ll give some reasons why I use Python. I can’t really comment on job-worthiness as I don’t work as a developer.

The projects I typically work on are self-centered, so I’m basically the only user and the only developer. I create things that may be used only once or become a constant part of my workflow. From daemons to terminal applications to graphical applications. Anything that’s repetitive and can be automated within a reasonable amount of time, I do so. Most of the tasks aren’t particularly computationally heavy. As a result, I don’t really care about the performance differences between languages. I just know that 100% of what I’ve wanted to accomplish, I can accomplish with Python. I can’t say it will always fit your project requirements.

I think some general advice that seemed pretty good was basically to pick a language and go for it. Most languages will accomplish most tasks.

Personally when I’m bored and want to play with code stuff I like to listen to podcasts like Coder Radio to see what languages they have played with recently. I’ve been grabbed by clojure. Its java, but also lisp, so I sorta know how it handles data already.

Just poke around and see what you like. Try out something in a game if you can’t decide. VIS-100 is a good game to poke around in. Plenty of others though.

Good luck!

1 Like

Try to develop software that you are passionate about. Thats a great way to learn what you will and will make you learn what you absolutely hate. Python would also be my first language to learn to learn this coming months (still busy at the moment, I will start this Feb). Its a hacky language, good for ad hoc jobs, so they say and that fascinates me.

Other alternatives may be Rust.

1 Like

I have been leaning towards Python for a while as it was always used by fellow classmates in school either directly in certain classes they were taking or just for speeding up some tasks.

Well in my current job a user before me actually made a script to pull screens from terminals we service and utilize software on to push ad campaigns. I’ve been wanting to dissect his code and maybe fix some of the bugs in it but I can’t really figure out where to begin and what I need.

Is over the internet the best method to finding good resources or is there an end all be all book to teach me techniques/basics to python? I have downloaded the app Learn Python and I am not opposed to getting some paper time as opposed to screen time. More of your $0.02 is appreciated :slight_smile:

I have to take regular trips for work once a month and I will be sure to add this to my podcast list! Thank you for letting me know. I had no idea there was even a podcast for coding :smiley:

I have never heard of Rust can you elaborate more on the pros/cons of it? Maybe we can learn some Python together. I am infamous for my stubbornness and OCD tendencies once I get an idea in my head so maybe these negative traits will be good for this venture.

Python is a good choice to start with. I consider it the modern BASIC, it has a fairly simple syntax so if you have zero programming experience than it is a good place to start. Not sure how in demand it is for the job market, but learning at least one programming language will make learning another much easier since most of concepts are essentially the same and knowledge will carry over.

It is one of the most useful languages I have learned over the years, using it for most of my own personal needs. Also like using it for prototyping and quick tests, can focus on making something work and getting the structure/logic in place without having to worry about memory allocation or variable types before writing in something like C++.

1 Like

Automate the boring stuff I have seen often recommended. I honestly don’t remember which tutorials or guides I went through to get me started, but a lot of it was probably just from googling python tutorials.

In general learning programming is a two part process. Learning the language(syntax and builtins) and learning how to build with it. The language part shouldn’t take long to pick up(especially with python), but the second part is harder.

A lot of people learn by taking on projects of escalating difficulty. It’s a process that you build on iteratively. You start very small and simple, and slowly pick up new things and concepts from the language by seeking out solutions(googling is your friend). You can also read about programming patterns or frameworks and see how you can apply them. I think getting to the point where you can read another person’s project and really understand how it works is a good way to learn as well.

Sadly as a listener, the coder radio podcast has ended(still available to listen to), but one of the guys from it started one called Automator

2 Likes

What OS do you run? Have you done any programming at all before?

I’d consider powershell on windows or Applescript on the mac. Either will be able to help you get started with some actual real-world usable stuff for your own personal use - starting out with very small low effort stuff (which will motivate you to learn more - you can get some quick easy instant wins).

They’re built into macOS or Windows respectively.

Once you’ve got some of the concepts nailed pick a language that looks interesting to you.

I’d start with one of the above (or maybe bash/perl/python scripting on Linux if that’s what you’re on) as they will enable you to get some results that are actually useful - fast.

Worry about the job-relevance once you’ve dipped your toes in the water and have some experience. Learning a second or third language is a lot easier if you already know how to program in something.

I would suggest Python, and Go first.

Languages like Rust, Scala, Erlang/Elixir, Kotlin can come later, once you have got some familiarity.

Learning and being capable in multiple languages is a good thing, as one can then use the right language - tool - for the job.

2 Likes

Python is very good for doing automation and creating things from scratch, which appear to be your primary goals. It also serves well as an introductory language due to some jargon that means it handles a lot of things for you. So rather than worrying about how much memory a data type is or which data type to use, Python will interpret all that for you. It will also reserve and free up memory without you having to tell it what and when to free it up.

Depending on how deep you go, you may find some limitations with Python, but that’s rare. You would have to get deep into systems programming and computer science theory and application to hit those limitations.

Python is generally always in demand, you can use it for systems administration, web development, automation, machine learning, tools and utilities (such as monitoring and visualizations).

Another good selling point is Python is cross platform. It will work on any Linux operating system, MacOS, and Windows.

Python has a lot of things in the standard library to assist with this. glob and iglob are something I use all the time, as well as their math, os, socket, sys libraries. With the last four, you can make any command line utility you want to do pretty much anything. Check memory usage? Yup. Check if a site is online? Sure. An agent process that collects system and server status? You betcha.

There is a decent tutorial on python.org. This dude covers a lot of content in Python, including the web frameworks to build websites, PyQt for building a GUI, and functional programming concepts (I don’t know if you’ve ever heard of functional programming, but brace yourself for digital heroin).

The negative reviews complain about the accent, but it didn’t bother me :man_shrugging: Just don’t play faster than 1.25 speed, maybe.

1 Like

They say its reasonable safer to code in it, in a way that produces less or no memory leak. I think that alone is a good sell, security-wise.

This article that quickly came up on google may have done a good summary (although in ways that I honestly cannot appreciate at this time).

https://hackernoon.com/programming-in-rust-the-good-the-bad-the-ugly-d06f8d8b7738

For a “my first toe dipping in programming”, I would recommend Arduino or Processing.
Neither has you mess arround with low level software-hardware interaction, beginner friendly tutorials are plenty.


When you want to bang your head against walls:
C++


Make your life easier?
Windows: Powershell scripts
Linux: Bash scripts

1 Like

Those videos on yt python in an hour are good to give you an overview. If I were gonna try learning a new language, I’d start a project,with it even, if it’s a hand held guide, that should do the trick.

I’d suggest not to focus too much on choosing a language and just getting to work. Also the employability will come as your skills grow you, you can also look that up later. What you need is the fundamentals of programming applicable to any language which I suggest python3 for learning.

However, python is pretty decent in terms of employment opportunities, I am a dev and use it regularly and I keep getting pinged to be recruited doing python development all over the place. Also tons of data engineering is primarily python.

3 Likes

What is it you want to program?

Generally, I would recommend C# or JavaScript (maybe php, maybe Java) over python unless you wanna work more in the devops or sys-admin space (then python all the way). Python is mainly used for that and for machine learning (its used for everything else too… just less often). You could also learn machine learning, but in general the bar to get into a data scientist role a bit higher than other programming I think, so they are gonna ask for degrees more often than if you work as a web dev or backend or full-stack dev.

If you have any specialiced degree into virtually anything that people need software for. That can also be really valuable. Depending on what it is maybe more so than being a better developer. Assuming you’re gonna write software for that space/domain.

Python’s a good language both for a first time learner, and as a viable career skill. I echo the posters above me that it’s a good option.

My suggestion for new learners is to always start simple. You should have a solid grasp of the underlying language before you start playing around with frameworks. It’s easy to use a framework later, but it’s much, much harder to unlearn framework-isms if you adapt them into your coding style first.

Don’t stress out over which language you should start with; they get easier to learn as you go. Once you have general programming experience, you’ll pick up new languages as weekend projects. You will pick up a couple of languages you never use again. Where you start isn’t that big of a deal.

It’s easy to get bored or frustrated with programming if you don’t care about the end result. Focus your early projects on simple little tasks that you’ll actually use. Scratch your own itches.

Finally…

The ability to write code will get you an interview. The ability to collaboratively write code will get you a job. Code that other people can’t skim might as well not exist.

Learn Git best practices and use them. Publish your work even if it’s crappy (Imposter Syndrome is very real) and preferably use an open source or free software license so that other people can contribute changes and improvements.

If you want to write proprietary code later, that’s fine, but the open source model is a great way to build a portfolio and demonstrate you can play nice with others.

3 Likes

Yeah, that´s ofc also true. You can learn something more… let´s say more economically viable for what you are trying to be emloyeed as, as your second or third or whatever language too. And it´s gonna be way easier. I also didn´t mean to say python was bad to learn in any ways, it´s not. Just depending on what you do later it´s either the thing to use/know, or not actually used that much compared to other stuff.

I really like PHP7 for development. It has interfaces and abstract classes which allow for traditional object oriented design pattern implementation without having to hack them like you would with duck typed languages.

I’ve found it less cumbersome than other “real” programming languages like Java or C#.