Turn on thread page Beta

Where to begin (again) watch

Announcements
    • Thread Starter
    Offline

    16
    ReputationRep:
    Hi guys,

    so I used to be a very primitive coder. I used Visual Basic 6 (made for windows 98) and touched on Python.

    I have not coded now for 6 years but would LOVEEE to get back in to it again.

    I know the world of coding has come a very long way in 6 years so my question is what should I learn to get into this industry? I want to learn a coding language that is relevent for today AND could land me a job.

    Which languages should I try?

    Thanks
    Online

    17
    ReputationRep:
    Technology always evolves, but the fundamentals tend to stay the same - if you understand concepts such as strings, conditionals, functions, repetition, etc. from your past experience, then that kind of thing will be the same today.

    The answer to "which language should I learn?" really depends upon what kind of areas interest you. Python is used heavily in the realm of data science, and frequently used by engineers who work in DevOps or QA testing.

    The ever-popular high-level and general purpos languages such as C# and Java remain popular in the world of business enterprise, across a whole range of different kinds of areas (Financial, Aviation, E-commerce, Healthcare, Transport, Entertainment, just to name a few)

    If you're interested in the gaming industry, then C++ is still the "de-facto" standard, and isn't going anywhere any time soon.

    If you're interested in embedded devices and low-level hardware/systems programming, then the C Programming language is still dominant.

    In general, it doesn't really matter which programming language you start with - the skill in software engineering is about solving problems. A programming language is just a tool - if you know how to solve a programming problem using Python, then the relative difficulty of solving that same problem using C++ or Java instead is a matter of learning about the nuances of that language and its tools or libraries.

    Broadly speaking, don't worry too much about which language you pick - choose a language to become competent with, and then learn about the principles of software development. Companies who recruit entry-level programmers are interested in candidates who possess strong problem solving and software engineering fundamentals - they don't usually care whether an entry-level programmer happens to have particular experience in the exact same language that they use.

    So to that end, I'd suggest you just pick any language, then focus on gaining competency in software engineering skills (Honestly, Python is still a really good choice in 2018 - there will be plenty of new things to learn about Python 3.6 which you probably wouldn't have used 6 years ago... but so is Java, and my personal favourite is C# due to the massive amount of support, tooling, and general availability of free online resources).

    Just keep in mind your goal - when an employer is looking to recruit a junior software engineer, they'll have an expectation that you'll have a good grounding in all of the fundamentals. That generally includes at least some of the following:

    - OO Programming (classes, constructors, objects, inheritance, polymorphism)
    - OO Design (so-called "GoF" patterns, abstraction, encapsulation, 'SOLID' principles)
    - Knowledge of common algorithms and data structures (Sort, search, stacks, queues, dictionary/maps, lists, trees)
    - Unit Testing (Many universities still don't teach this, but employers like to know that you understand it)
    - Debugging, logging, exception handling, and general error-handling and diagnostic skills
    - Understanding of "code quality" - readability, sensible naming, code structure, understanding why programmers avoid "goto" or "global variables".
    - Understanding the concepts and features commonly found in high-level languages (e.g. pass-by-reference vs pass-by-value, "static" variables, arrays, strings)
    - Some familiarity with data persistence - e.g. File I/O, Relational/SQL Databases, NoSQL
    - Able to use some common 'plain text' data formats - CSV, XML, JSON
    - Basic Understanding of some kind of networking (Whether that's HTTP/REST, TCP/IP, or some other kind of messaging)
    - Asynchrony, Concurrency, Thread-safety
    - Data types (e.g. integers vs floating-point arithmetic, characters-vs-strings)
    - Know how to construct a working UI (e.g. mobile phone app, desktop app, or nontrivial web content using CSS/JavaScript)
    - Know how to use common software engineering tools - particularly a version control system, an IDE and a debugger.

    If that sounds like a lot, then they're all things which do take time to learn, but are also things which you'll naturally get better with when you've spent some time learning a high-level programming language, when you've spent time working on your own non-trivial projects, or maybe had a chance to work with some open source software.

    Helping out open-source projects is an excellent way to gain experience if you struggle to think of your own project ideas - in particular, being able to explain to a future employer how you've taken somebody else's open-source code and made changes to it often looks impressive if you're trying to enter the world of commercial software development, because it is more challenging to work with other peoples' code than writing all of your own from scratch, and because it mirrors very closely the way you'd be expected to work in the real world..

    Here are a few good quality resources, which you might find useful depending upon which language you're interested in starting (By the way, i would strongly recommend you choose just one language and stick to it - don't confuse or overload yourself by trying to learn multiple languages at the same time, that approach can be counter-productive when you're trying to focus on the fundamentals):

    General computer science and C programming:
    https://www.edx.org/course/cs50s-int...harvardx-cs50x

    Python:
    https://www.edx.org/course/introduct...itx-6-00-1x-11
    https://developers.google.com/edu/python/

    C# and ASP.NET:
    https://mva.microsoft.com/en-us/trai...eginners-16169
    https://www.asp.net/get-started

    Introductory courses for various widely-used languages (Python, JavaScript, SQL, HTML/CSS):
    https://www.codecademy.com
    • Thread Starter
    Offline

    16
    ReputationRep:
    (Original post by winterscoming)
    Technology always evolves, but the fundamentals tend to stay the same - if you understand concepts such as strings, conditionals, functions, repetition, etc. from your past experience, then that kind of thing will be the same today.

    The answer to "which language should I learn?" really depends upon what kind of areas interest you. Python is used heavily in the realm of data science, and frequently used by engineers who work in DevOps or QA testing.

    The ever-popular high-level and general purpos languages such as C# and Java remain popular in the world of business enterprise, across a whole range of different kinds of areas (Financial, Aviation, E-commerce, Healthcare, Transport, Entertainment, just to name a few)

    If you're interested in the gaming industry, then C++ is still the "de-facto" standard, and isn't going anywhere any time soon.

    If you're interested in embedded devices and low-level hardware/systems programming, then the C Programming language is still dominant.

    In general, it doesn't really matter which programming language you start with - the skill in software engineering is about solving problems. A programming language is just a tool - if you know how to solve a programming problem using Python, then the relative difficulty of solving that same problem using C++ or Java instead is a matter of learning about the nuances of that language and its tools or libraries.

    Broadly speaking, don't worry too much about which language you pick - choose a language to become competent with, and then learn about the principles of software development. Companies who recruit entry-level programmers are interested in candidates who possess strong problem solving and software engineering fundamentals - they don't usually care whether an entry-level programmer happens to have particular experience in the exact same language that they use.

    So to that end, I'd suggest you just pick any language, then focus on gaining competency in software engineering skills (Honestly, Python is still a really good choice in 2018 - there will be plenty of new things to learn about Python 3.6 which you probably wouldn't have used 6 years ago... but so is Java, and my personal favourite is C# due to the massive amount of support, tooling, and general availability of free online resources).

    Just keep in mind your goal - when an employer is looking to recruit a junior software engineer, they'll have an expectation that you'll have a good grounding in all of the fundamentals. That generally includes at least some of the following:

    - OO Programming (classes, constructors, objects, inheritance, polymorphism)
    - OO Design (so-called "GoF" patterns, abstraction, encapsulation, 'SOLID' principles)
    - Knowledge of common algorithms and data structures (Sort, search, stacks, queues, dictionary/maps, lists, trees)
    - Unit Testing (Many universities still don't teach this, but employers like to know that you understand it)
    - Debugging, logging, exception handling, and general error-handling and diagnostic skills
    - Understanding of "code quality" - readability, sensible naming, code structure, understanding why programmers avoid "goto" or "global variables".
    - Understanding the concepts and features commonly found in high-level languages (e.g. pass-by-reference vs pass-by-value, "static" variables, arrays, strings)
    - Some familiarity with data persistence - e.g. File I/O, Relational/SQL Databases, NoSQL
    - Able to use some common 'plain text' data formats - CSV, XML, JSON
    - Basic Understanding of some kind of networking (Whether that's HTTP/REST, TCP/IP, or some other kind of messaging)
    - Asynchrony, Concurrency, Thread-safety
    - Data types (e.g. integers vs floating-point arithmetic, characters-vs-strings)
    - Know how to construct a working UI (e.g. mobile phone app, desktop app, or nontrivial web content using CSS/JavaScript)
    - Know how to use common software engineering tools - particularly a version control system, an IDE and a debugger.

    If that sounds like a lot, then they're all things which do take time to learn, but are also things which you'll naturally get better with when you've spent some time learning a high-level programming language, when you've spent time working on your own non-trivial projects, or maybe had a chance to work with some open source software.

    Helping out open-source projects is an excellent way to gain experience if you struggle to think of your own project ideas - in particular, being able to explain to a future employer how you've taken somebody else's open-source code and made changes to it often looks impressive if you're trying to enter the world of commercial software development, because it is more challenging to work with other peoples' code than writing all of your own from scratch, and because it mirrors very closely the way you'd be expected to work in the real world..

    Here are a few good quality resources, which you might find useful depending upon which language you're interested in starting (By the way, i would strongly recommend you choose just one language and stick to it - don't confuse or overload yourself by trying to learn multiple languages at the same time, that approach can be counter-productive when you're trying to focus on the fundamentals):

    General computer science and C programming:
    https://www.edx.org/course/cs50s-int...harvardx-cs50x

    Python:
    https://www.edx.org/course/introduct...itx-6-00-1x-11
    https://developers.google.com/edu/python/

    C# and ASP.NET:
    https://mva.microsoft.com/en-us/trai...eginners-16169
    https://www.asp.net/get-started

    Introductory courses for various widely-used languages (Python, JavaScript, SQL, HTML/CSS):
    https://www.codecademy.com
    Thanks
 
 
 
Poll
Do you think parents should charge rent?
Useful resources

The Student Room, Get Revising and Marked by Teachers are trading names of The Student Room Group Ltd.

Register Number: 04666380 (England and Wales), VAT No. 806 8067 22 Registered Office: International House, Queens Road, Brighton, BN1 3XE

Write a reply...
Reply
Hide
Reputation gems: You get these gems as you gain rep from other members for making good contributions and giving helpful advice.