Jump to content

How to get into programming? - Resource Thread

Guest

Intro:

There are several disciplines of programming with different skills.

The main types of programming are:

1. Business & web programming - The most common type of programming done in the world.

2. Excel Spreadsheets - It counts, but isn't commonly considered programming.

3. Science programming - Used for scientific computation, often at Universities. I hear NASA and other engineering firms use this too.

4. Simulation programming - Often associated with games, but some companies have to make training programs for expensive machines like Forklifts.

5. Embedded programming - That automatic sink in the bathroom had to be programmed by someone.

6. Operating System & driver programming - The reason your wifi adapter and usb devices work as well as windows and linux working.

7. Antique programming - Programming obsolete computers. Sometimes this is done by hard wiring computers. The original rocket ships' computers were hardwired computers.

8. Scripting - Sometimes you need to write scripts to modify a lot of files at once. Often using Bash or Powershell.

9. Data Science - I know little about this, so if you know more about it, please chime in!

 

I know nothing about programming

I recommend starting with C. It has a healthy balance between low level programming, and high level programming for beginners.

We're not looking to be experts, I advise just learning how to think logically.

Luckily CodeCademy has a course on C where you program in the web browser.

https://www.codecademy.com/learn/learn-c

 

(we really need to donate money to CodeCademy to keep their server running and helping noobs get started)

If you like C, you can download Visual Studio if you're on Windows and program using "Visual C++." This is technically C++, but all your C knowledge will work fine. C# IS DIFFERENT.

 

IF YOU ARE A MAC OR LINUX EXPERT, PLEASE RECOMMEND SOME MORE INFO! If you're on Mac or Linux, look into "GCC" and download a program like Sublime Text or Atom to edit your text files.

 

If you hated the logic of C, check out the HTML course on CodeCademy. This is more "visual" and aesthetic than logical, but it still has logic.
If you liked the logic but hated the syntax of C, please power through, and just finish the course if you can. Then check out a type of programming you might be passionate about.

 

What do I do next? I took a class on programming or I did that C programming course you told me to do...

Start a project you want to make, or pick a type of programming you want to do, and read about that section in this thread.

What project should you make?

Well several years ago, someone gave me this list of programs to make and it scored him a job:

Spoiler

1. Hello, world!
2. Print out your name and age which if you feed to the program.

3. Monty Hall Simulator. Should store statistics.

4. Create a dice roller program. Input should be in the format like 2d6, where 2 is the number of dice, and 6 is how many sides it has.

5. User can write into a file and save it through the console.

6. Tic-tac-toe (GUI required) game. Should store statistics.

7. Create a SQL database for storing inventory, say computer parts.

8. Create a GUI for interacting with the database. Should be able to add new inventory items, delete actual inventory, and move inventory from one location to another. Make sure to use DataAdapters.

 

User said someone else gave him the list & denied credit for this list.


Business & Web programming

Most businesses operate using computers in some way. Some smaller businesses can still work with pencil and paper but as soon as a business wants to work on a larger scale, many benefit immensely from using computers.

 

90% of programmers will be some kind of business programmer.

 

Businesses have a database full of records. These records often consist of products. Say we're working for an office store. We need to know how many pencils we have in stock, how much they cost, how much they cost us to purchase, how much we sell every day. This information is all stored using a database system. This system is often handled by a technology called SQL which stands for Structured Query Language. There are several variations of SQL but they have a lot in common.

This is a very simple language but you need to understand how data is held inside a database. This will allow you to get the data, and write new data to the database.

If you're still beginning, don't worry too much about security.

If you are starting a business, PAY MONEY FOR CLASSES AND LEARN ABOUT SECURITY FOR YOUR DATABASE!!!! Or better yet, pay an expert for consulting if you cannot hire an expert.

 

With your database setup, you should probably write a program to use your database. There are several programming languages that are used to do this. In the modern age, I am aware of the following languages being actively used:

Java, C#, PHP, Cobalt, Python 2.3, Python 3, Ruby.

You can use many different languages, but the first 3 are to my knowledge, the most commonly used with Cobalt being phased out, but still used by some companies.

After that, I don't know the extent to which they are used.

The combination of your SQL and Java or alternatives is what we call "Backend" programming.

 

But most of these programs are just servers for websites. Your database is on a server. Your Java program is on a server interacting with the database. When I go to your website, what am I going to see?

Well, likely HTML.

 

If you are an Aesthetic programmer or have an eye for art or visual design, you could be a really talented "Front End" programmer. If you want to be a front end programmer, you would need to know HTML. Hypertext Markup language.

This is a language you use to make text get formatting when you open the document in your browser. You can change the size of font, you can add buttons and text boxes.

After this, you would learn CSS because HTML and CSS really go hand in hand.


CSS stands for Cascading Style Sheets. This is the language you use to make HTML web pages have colour, or even fine tune the size of the text.

Finally, you'd also want to learn some JavaScript at the end.

JavaScript has NOTHING to do with Java.

 

JavaScript is a language used to make web pages more interactive and dynamic. Have you ever seen a really cool sliding animation on a web page? Have you ever seen a menu expand and show a bunch of buttons?

That's all part of JavaScript, but there is so much more you can do with it.

But without getting a firm grip on HTML-CSS and JavaScript won't do too much for you. Learn the technologies in that order.

 

If you so happen to learn both the "Backend" and "front end" programming, you would be considered a "Full Stack" developer. Many business programmers are "full stack." This doesn't mean they are experts. I myself am a Full Stack programmer. I focused my efforts on getting really good at Java, and I love SQL as well, but it also takes me a full work week to write 2 lines of HTML code. The difference is that I CAN do both. Not that I'm an expert in both. Give me an equally difficult Java task and it could be done in as little as 2 hours.

 

Excel Spreadsheets

Just because you don't compile code doesn't mean it's not programming. Jobs like being an accountant are helped immensely by special codes and logic you can write in the Microsoft Excel spreadsheet program.

You can sometimes even enhance Excel using languages like Microsoft Basic if you know what you're doing.

To go another step, you can link Excel to Microsoft Access which is a SQL program.

 

I DON'T KNOW MUCH ABOUT EXCEL... I BELIEVE ACCOUNTANTS ARE THE PRIMARY USERS OF IT AND THEY OFTEN WRITE CODES TO PROGRAM EXCEL TO DO CRAZY CALCULATIONS AND PRODUCE GRAPHS.

 

Science Programming

Science is related to math. Not many people know this, so Katy Perry threw herself under the bus so those that weren't aware could know something that many thought would be an obvious statement.

Physicists, and chemists, and all kinds of wicked smart people are doing all kinds of research into what would appear to be magic to many of us lay persons. There are many incredibly complex equations in math and science that can be used to create solid foundation to theories to prompt expensive experimentation or to calculate what would be needed.

Not many Scientists are programmers. They are experts in Chemistry, biology, and so on. So, often times, they will start writing science programs and calculators in Python because they heard it is an easy language. Python can be very easy to start with, and can be very quick to write code. So if you want to do scientific computation, or join a team of scientists, you might want to get into Python and the libraries for scientific use.

 

If you could luck out into a scientific collective that has dedicated programmers or scientists that program, Matlab is to my knowledge, the best or best known closest to best science and mathematics programming language out there. Some engineering programs use Matlab to calculate their engineering designs to determine all kinds of things.

 

Simulation Programming

Okay, yeah you just wanna make video games. lol, it's fine, we all do. Until we either realise it's not nearly the same as playing them, or we realise how friggin difficult it is.

Traditionally, most games are written in C or C++. Nowadays, you can basically write your game in nearly any language, but C# is a popular choice because of a game making program called Unity 3D.

If you want to make games or simulations with a small to medium company by working for them, you're likely going to be using Unity with C#.

If you want to work for someone like Nintendo, Activision, or Sony, you're probably going to need C++. C and C++ are chosen because of their low level connection to the hardware. Because of this, don't be surprised if you are expected to have a basic understanding of Assembly. Often X86_64. You probably won't be reading machine code, but Assembly has a few dialects, and the most common today for Computer games and console games is X86_64. Taking a class on computer architecture should help out with this.

 

But if you really want a job for a big company, your knowledge of algorithms and mathematics are what you need.

 

Embedded Programming

This is the programming of your refrigerator, your dishwasher, your high tech gaming mouse, and even the crosswalk buttons.

You're not programming computers. You're programming "Microcontrollers." The number 1 micro controller to learn with today is the Arduino. This micro controller is programmed in the C programming language. For professional use, the STM 32 is a professional micro controller that is similar to the Arduino and also very cheap in price.

 

Learning about Circuits and Circuit Blueprints is very beneficial. A degree in Electrical Engineering or Electrical Technology would be a great pathway into this kind of programming. You're likely dealing with custom circuits or controlling electronic lines of data directly to get all kinds of electrical components to work like buttons, LED lights, and LCD screens.

 

Some Micro Controllers or companies still may program in a flavour of Assembly. Learning micro controller assembly wouldn't be a bad idea, but as far as I have been told, the industry is trying to move to C so it's easier to update the code.

 

Operating System and Driver Programming

This is very similar to Embedded Programming. You're working on the systems that allow programs to interact with hardware.

No gamer is going to get to play his call of duty without an operating system for call of duty to run on. No business is going to be able to open Internet Explorer to check their inventory and see if they need to order more pencils.

No YouTuber can record his voice over without a driver for his microphone.

 

Unless you work for Microsoft, you're likely going to be writing drivers or working on the Linux operating system.
To my knowledge there is a combination of 3 languages used to write all modern operating systems and drivers.

Assembly, C, and C++.

The low level access to the hardware is what requires these languages to be used.

 

With a degree in Computer Engineering or Electrical Engineering, I think that's where you'd want to start to get your understanding of computers.
Certain Computer Science programs might even go deep enough into the subject to help you get a job in this field. Many Computer Science programs only have one or two classes on Operating Systems, so at the very least you'd be exposed to it, but it's probably going to be more like Theory of Operating Systems than programming Operating Systems.

 

Here's a resource I saw Microsoft had on how to begin writing a driver for the Windows Operating System:
https://learn.microsoft.com/en-us/windows-hardware/drivers/gettingstarted/

 

Antique Programming

Some people need ancient computer programmed. This is a wide field, but some computers were programmed by how the electrical components were wired up.
Some computers were programmed with punch cards.

Some computers were programmed using a series of switches or cables.

Some computers have a 6502 processor or a processor from the era and require that dialect of Assembly to program them.

These jobs are to my knowledge, highly specialised, and very uncommon.

 

Scripting

Scripting is an administrative type of programming. This is often used to make a similar change to a bunch of files. For instance, renaming all your files from "myCoolDocument_1" to "Science Homework 1." There's many uses to scripting, but this is a basic use of it.

Another use of scripting might be to run a program. Say once every year you want to empty your Windows recycling bin. Well, that would be done with scripting or the event scheduler.

Any task the user can do that the user doesn't want to do can be done with scripting.

On Linux, this is often done with a language called Bash. However, different versions of linux and different configurations could use all different languages.

On Windows, this used to be done with Batch Files. Now moving forward, new scripts are written in Powershell. Batch might still be used, especially if a company has been around a long time.

To be operating system independent, a lot of people are now writing scripts in Python.

 

Data Science

Data Science and Machine Learning are about taking a lot of data and finding some kind of trend. This could be done in Excel, but in the academic world (all I am aware of for data science) the main languages are either:
Python because it's simple to use, or a college's language of choice for students to "get good" at.  There are a ton of great APIs you can use, and some will generate graphs for you and generate full human readable reports.

R is another language that is supposed to be more professional and is dedicated to the Data Science discipline.

 

 

So I got pretty good at one of these disciplines...

Great! Get a job if you want to do it as your life's purpose. Help businesses stay in business to keep people's lives good, improve science, write some games or simulation, support old tech that is essential, or have a computer do tedious work.

If you want to learn some things that are not "hard skills" then you should learn how to

1. Listen.

2. Work with someone you hate or that you think hates you.

3. Learn to speak English better or learn how to be more concise.

4. Learn Git. CodeCademy has a great intro course on it. Git-scm.com is the offical git site which has tons of great documents to learn more about it.

5. Learn Kanban. Many companies use technology like Trello and Jira to keep large teams organised.

6. Remember to get some exercise. Just go for a walk for 10 minutes every day at the very least. If you can dedicate 1 hour to a workout a day, that's phenomenal.

7. Maybe grab a salad or put back the cookies.

8. Your friends and family and pets could use your company. Sometimes it sucks being in your own head. Just hang out with them sometimes.

9. Don't get caught up in the money or being the best. John Carmack is the best programmer, and you will never ever be better than him. Elon Musk has all the money in the world. Enjoy the programming you do, and be happy with the money you make or find a programming job where there isn't so much stress. I heard some crazy stuff about how Amazon has mandatory firing of employees-do you really want that? Maybe, but not everyone should.

 

How to apply for a job and write a resume?

Yeah yeah, apply for a job... tailor it to the random stuff some HR person slapped on a job listing after a 3 second google search of something programming related.

 

Look for companies that do the type of programming YOU want to do. Great, now you have some kind of guide. Your guide is the job listing.
You can tailor your application to the job listing, like if their "required" language is JavaScript, but "Great to haves" list Python, and Lua, make sure JavaScript appears first on your resume.

 

What do you need?

Spoiler

1. Your name, your EMAIL, what state & country you live in. You can do a full home address, but if you're willing to relocate, or do the commute or work remotely, it's not that important.

2. Link to your Portfolio. They're super easy to make and you can find free website makers & hosters. Even Notion or a Google Doc would work fine if you can make a link that is mostly human readable. IE, if I can't click it, I should be able to type it in very easily.

3. Skills. Just list your skills.

    IE, "Languages: C, JavaScript, Bash"

         "IDEs: Visual Studio, Eclipse, Sublime Text."

          "Cloud Computing: AWS EC2, Azure Blob Storage"

4. Past WORK experience. List jobs you had and say what you did.

    IE "Google. 2005-2006

          Senior Programmer

          Wrote the database code for Google Docs.

          MySQL, Java, Spring, Azure."

5. Add past projects you worked on. They're like a job, and well respected, but are known to be different from a "real" project.

    IE "My Cool Web Browser 2013

          I wrote a web browser to read HTML, CSS, and JavaScript.

          Supported HTML 5, CSS 1, JavaScript 2

          www.MyCoolResume.com/MyCoolWebBrowser

          C++, QT, ASIO

6. Education. Sorry, but education is just a checkbox. Unless you went to MIT, Harvard, Oxford, University of Beijing, University of Moscow, I don't think your college matters; just have finished one.

    IE "Linus Community College 2016

          Bachelor's in Computer Science.

          Minor in Business"

What about a cover letter?

Spoiler

Write about why you're excited to work for this company, and do THIS job.

Give some examples of things you did in your past projects or jobs that show you are qualified to do this job.

 

Dear Google,

 

I am excited to apply for your Skynet Mid Level Programmer role. I always loved your work with Artificial Intelligence and machine learning. I think Skynet would benefit humanity by ending our suffering, and this is a cause I can get behind.

 

I am qualified to be your Skynet Mid Level Programmer because I worked on my own web scraping stalking machine. I thought that if I could find out where someone lived, and found out everything about his life, I could control his life. Using Python, I was able to scrape the web, and prod around social media sites to get unauthorized access to the databases of Facebook & Twitter. Using Machine Learning APIs, I was able to determine that Joe Mama was going to go to Disney Land on October 3rd, so we could send Terminators to that location to terminate him on Judgement Day.

 

Thank you,

Sincerely,

Luke Lafreniere

 

 

I'm shooting for a pin so we can answer as many beginner questions as possible without getting too nitty gritty.

If you are an expert in a field, please donate some information. My knowledge spans Video games & business programming. The rest comes from what I have heard in lectures or talking to other programmers.

Beginners and intermediate programmers lacking confidence or direction could hopefully use this OP as a guide on where to go next, or how to proceed.

When writing information, pretend you're someone's second uncle and the person is 16 and you're the "tech" guy in the family.
That's the target audience and how you should look at explaining things.

"What language? What does it do? Why?"

 

Some info I'm looking for would be like how to better define things like I did in Business programming.

I'm not going to bloat section.
For example I won't bloat the video game section with what a gameplay programmer is, what a graphics programmer is, what an animation programmer is, what an ai programmer is, what a.... let's just keep it simple for beginners.

 

Final note:

Programming is not the end all be all.

If you want to make a ton of money in life, be a professional sports player, study business, or learn how to scam people. Otherwise, you'll probably make less money.

If you want happiness, get a significant other. Otherwise, your bed will be the only one at home to hug you after a long day of work.

If you want to be satisfied with your life, be happy with what you have right now. Otherwise you will never ever be satisfied.

Link to comment
Share on other sites

Link to post
Share on other sites

I totally read this whole thing, yep all the way. Great work!

 

I want to add that industrial automation and similar fields are always looking for people. Robots (fanuc, abb) PLCs ( siemens, allen-bradley)

 

This kind of falls into the embedded category but is a little broader.

If your question is answered, mark it so.  | It's probably just coil whine, and it is probably just fine |   LTT Movie Club!

Read the docs. If they don't exist, write them. | Professional Thread Derailer

Desktop: i7-8700K, RTX 2080, 16G 3200Mhz, EndeavourOS(host), win10 (VFIO), Fedora(VFIO)

Server: ryzen 9 5900x, GTX 970, 64G 3200Mhz, Unraid.

 

Link to comment
Share on other sites

Link to post
Share on other sites

Just now, Takumidesh said:

I totally read this whole thing, yep all the way. Great work!

 

I want to add that industrial automation and similar fields are always looking for people. Robots (fanuc, abb) PLCs ( siemens, allen-bradley)

 

This kind of falls into the embedded category but is a little broader.

Is there a resource you can recommend that I can look into?
Maybe I can add a few sentences noting that robotics programming is related, but thinking to the Mars rover cars, it might be its own section.

I don't know much about robotics but that's the subject I learned programming with.

Link to comment
Share on other sites

Link to post
Share on other sites

If you want to learn industrial systems programming, you can get a cheap click PLC. Otherwise, it can be difficult to get your hands on studio 5000, or TIA portal without paying an arm and a leg. However they both do have similuators available. Lot's of distributors have luch + learns, and other teaching seminars.

 

Learn about PID loops, Kinematics, Ladder Logic.

 

Learn about electrical wiring and diagrams, you are dealing with discrete IO and PLCs are designed to behave like electric circuits using relays.

If your question is answered, mark it so.  | It's probably just coil whine, and it is probably just fine |   LTT Movie Club!

Read the docs. If they don't exist, write them. | Professional Thread Derailer

Desktop: i7-8700K, RTX 2080, 16G 3200Mhz, EndeavourOS(host), win10 (VFIO), Fedora(VFIO)

Server: ryzen 9 5900x, GTX 970, 64G 3200Mhz, Unraid.

 

Link to comment
Share on other sites

Link to post
Share on other sites

On 10/26/2022 at 2:29 AM, that_dude said:

I know this is the turth but also absolutly wrong. The issue is embed is such a diverse category:

Simatic, VHDL, C++, C, assambler are all united under embedded. That isn't even touching hardware design, all the tools and specialisations.

 

The line get's blurred between microcontroller and "PC". Take the STM32MP1: Dual core A7 (800MHz) with single core M4 with FPU. So you might just run a full Linux distro on the A7 and an RTOS on the M4. With ICs like the STM32H7 lineup you would also run somesort of OS on it or even waste resources with ineffiecient Python.

Go down to the smalles MCU and you suddently find yourself writing assambler with 64 byte of RAM which is not comparable to writing a embedded linux programm.

How would you recommend differentiating the subjects?

I don't have the professional insight to declare that programming vending machines is the same or different from programming a wifi adapter or windows operating system.
I believe they are both often circuit level programming.

On 10/26/2022 at 2:29 AM, that_dude said:

For a professional path start out with STM32 . One issue with Arduino is the lack of debugger.  Btw. Arduino is C++ and not C.

C++ is the goto for embedded programming. C is still popular for certain applications and some strange trends have surfaced like MicroPython (utterly inefficent without benefits) but the bulk is C++, C and assambler. 

C++ will stay. Even FPGA "programming" might be soon possible with C++ (current Xilinx C++ toolchain is a nice techdemo and mostley academia but this will be a gamechanger once it is mature).

It all depends on the workfild. You should be able to read schematics, datasheets and communicate with hardware engineers and emi groups regardless of your job but deeper knowledge might not be an requirment. Knowing the basics about logic analyzer, oscilloscopes and VNA isn't bad either as you might need them for debugging the firmware.

Awesome, I will add some of this information to the Embedded Programming section.

On 10/26/2022 at 2:29 AM, that_dude said:

How to actually start out?

0. The absolute basic: mathematics and theorictical informatics. Concepts like FSM (state machine), digital filters, fourier transformation, etc. are the bread and butter of embedded programming. MIT opencourseware and books might be a good option.

1. Learn basic programming on the PC.

2. Decide what your path will be.

3. Get a devboard and play with it:

- budget option: STM32F103 nucleo ($20)

- "advanced": STM32F4xxx or STM32F7xxxx disco (those with LCD and touch so you can look into LVGI and touchGFX) ($40-$80).

- for FPGA the goto are Digilent Nexys 4/A7 (might be above $100; it's sucks but most introductionary training are done on these. The only upside is the resell value will be close to what you bought it for on the used market). Two language choices: VHDL and Verilog. If you are in Europe learn VHDL. In America Verilog might be the goto but they also use VHDL.

- Black magic and EMI? No idea. I am not into HF (high frequency like wifi antennas, radar/mmWave, analog transmission lines in the GHz region, etc.). Maybe downloding an RF-simulator and reading books.

4. Your own pet project. This will be the door opener into the industry. It will outweight most if not all degrees or internships.

 

If you are into hardware design: Analog Discovery 2. The older Analog Discovery 1 was cheaper but this is still good value for money (assuming you can get the edu discount). One book you will read is Art of electronics. Most libraries have this book so you don't need to purchase or pirate it.

 

Regardless check out the youth/edu programms of the major organizations. Often you can join them for the price of a beer per month and gain access to events, magazin, standards and more. Some offer dedicated youth orginazations with local meetups/groups.

I don't want to get too nitty gritty, but you do have some good points I can factor in. FSM are a more general programming design paradigm-maybe I'll add a section on programming paradigms if I can find a sufficient amount of data that isn't too bloated and distracting.

Link to comment
Share on other sites

Link to post
Share on other sites

9 minutes ago, that_dude said:

Would make robotic it's own topic. Their are overlaps but it is unique and just run with the broad embedded term for the rest. Maybe add a sub category for FPGAs:

You can't programm FPGA like a normal software as it requires unique thinking and interesting challenges like signal propagation or crossing clock domains.

If you're a professional Robot programmer, or were a professional robot programmer, could you write a section on this?

 

When writing information, pretend you're someone's second uncle and the person is 16 and you're the "tech" guy in the family.

"What language? What does it do? Why?"

 

2-3 paragraphs at most. Try to keep it high level, and just mention things like "Program in C"
 

As far as FPGAs go, they are different, but I think that noting how needing to know about circuits really covers it and as they get more into it, they will start to understand it.

Just buying an arduino and doing some of the basic stuff with it would teach them a lot about it. One reason I noted Electrical Engineering is because it's that different from computer science which I'm expecting most people to assume they should get.

 

Staying high level, and simple.

9 minutes ago, that_dude said:

Paragrah about writing documentation, testing/code review and development strategies (e.g. agile) might be helpfull.

For the fundermentals a book or public university scripts.

I think I might just put a footnote in the "So I got good at one of these" section.
"Learn Agile"

 

I'll think about this some more.

Link to comment
Share on other sites

Link to post
Share on other sites

  • 2 weeks later...
On 10/25/2022 at 3:24 PM, fpo said:

Business & Web programming

Most businesses operate using computers in some way. Some smaller businesses can still work with pencil and paper but as soon as a business wants to work on a larger scale, many benefit immensely from using computers.

 

90% of programmers will be some kind of business programmer.

 

Businesses have a database full of records. These records often consist of products. Say we're working for an office store. We need to know how many pencils we have in stock, how much they cost, how much they cost us to purchase, how much we sell every day. This information is all stored using a database system. This system is often handled by a technology called SQL which stands for Structured Query Language. There are several variations of SQL but they have a lot in common.

This is a very simple language but you need to understand how data is held inside a database. This will allow you to get the data, and write new data to the database.

If you're still beginning, don't worry too much about security.

If you are starting a business, PAY MONEY FOR CLASSES AND LEARN ABOUT SECURITY FOR YOUR DATABASE!!!! Or better yet, pay an expert for consulting if you cannot hire an expert.

 

With your database setup, you should probably write a program to use your database. There are several programming languages that are used to do this. In the modern age, I am aware of the following languages being actively used:

Java, C#, PHP, Cobalt, Python 2.3, Python 3, Ruby.

You can use many different languages, but the first 3 are to my knowledge, the most commonly used with Cobalt being phased out, but still used by some companies.

After that, I don't know the extent to which they are used.

The combination of your SQL and Java or alternatives is what we call "Backend" programming.

 

But most of these programs are just servers for websites. Your database is on a server. Your Java program is on a server interacting with the database. When I go to your website, what am I going to see?

Well, likely HTML.

 

If you are an Aesthetic programmer or have an eye for art or visual design, you could be a really talented "Front End" programmer. If you want to be a front end programmer, you would need to know HTML. Hypertext Markup language.

This is a language you use to make text get formatting when you open the document in your browser. You can change the size of font, you can add buttons and text boxes.

After this, you would learn CSS because HTML and CSS really go hand in hand.


CSS stands for Cascading Style Sheets. This is the language you use to make HTML web pages have colour, or even fine tune the size of the text.

Finally, you'd also want to learn some JavaScript at the end.

JavaScript has NOTHING to do with Java.

 

JavaScript is a language used to make web pages more interactive and dynamic. Have you ever seen a really cool sliding animation on a web page? Have you ever seen a menu expand and show a bunch of buttons?

That's all part of JavaScript, but there is so much more you can do with it.

But without getting a firm grip on HTML-CSS and JavaScript won't do too much for you. Learn the technologies in that order.

 

If you so happen to learn both the "Backend" and "front end" programming, you would be considered a "Full Stack" developer. Many business programmers are "full stack." This doesn't mean they are experts. I myself am a Full Stack programmer. I focused my efforts on getting really good at Java, and I love SQL as well, but it also takes me a full work week to write 2 lines of HTML code. The difference is that I CAN do both. Not that I'm an expert in both. Give me an equally difficult Java task and it could be done in as little as 2 hours.

Another type of "Business" programming, which from my experience is highly lucrative and way easier to break into than any other area, is what I would call niche-business programming. I am a ServiceNow developer, which isn't working at the company ServiceNow but with in their platform at consultants and/or (larger-scale) end users. There's not even close to enough niche developers even with ServiceNow (the gold-standard of IT Service Management platforms) and that generally means its way easier to get started. ServiceNow also uses NodeJS (all be it outdated and not directly convertible to other jobs) so you could transfer your skills elsewhere if ServiceNow ever dies. Per GlassDoor ServiceNow developers can expect (as a median) a salary of 70K to 130K (USD & in the USA) so its pretty equal to other areas as a SWE. 

 

While this kind of work wont be, and definitely shouldn't be, everyone's thing... the work is just as rewarding & challenging (for those who prefer that) but with a lot less competition. 

Link to comment
Share on other sites

Link to post
Share on other sites

1 hour ago, ThatDevMat said:

Another type of "Business" programming, which from my experience is highly lucrative and way easier to break into than any other area, is what I would call niche-business programming. I am a ServiceNow developer, which isn't working at the company ServiceNow but with in their platform at consultants and/or (larger-scale) end users. There's not even close to enough niche developers even with ServiceNow (the gold-standard of IT Service Management platforms) and that generally means its way easier to get started. ServiceNow also uses NodeJS (all be it outdated and not directly convertible to other jobs) so you could transfer your skills elsewhere if ServiceNow ever dies. Per GlassDoor ServiceNow developers can expect (as a median) a salary of 70K to 130K (USD & in the USA) so its pretty equal to other areas as a SWE. 

 

While this kind of work wont be, and definitely shouldn't be, everyone's thing... the work is just as rewarding & challenging (for those who prefer that) but with a lot less competition. 

ServiceNow can be a lot more pleasurable to develop for if they can actually bother keeping it up to date. I mean its script does not even have ES5 support, what the hell? Anguler version is still the age old angular.js 2 point something. 

Sudo make me a sandwich 

Link to comment
Share on other sites

Link to post
Share on other sites

On 10/27/2022 at 4:54 PM, fpo said:

If you're a professional Robot programmer, or were a professional robot programmer, could you write a section on this?

Robotics is less a programming domain than an application IMO. We have basically 4 categories of programmers that work with robots at my job: 
A) Control engineers/ automation engineers/ process engineers/ deployment engineers/ robotics operators/ etc. that will be SMEs for a specific robot-type and responsible for the configuration of finished/fully-developed robots. Sometimes this involves actual programming, sometimes it is just done through config. files or front-end utilities. Most of them are comfortable scripting but would not meet the technical bar to be hired as an SDE. Not really any expectation to know a language here, but most of them are at least comfortable with BASH, making minor edits to existing C++, SQL, XML/JSON/YAML, and some web automation tools like Selenium. 
B) Hardware development engineers, embedded programmers, robotics engineers that design and build prototypes of the robots. They do all the IC and PLC programming. We don't utilize a ton of FPGAs, but I'd probably throw the FPGA developers we have in this grouping. Most of them have an engineering degree (Electrical, mechanical, computer, control, signal, aerospace, robotics, mechatronics... see a pretty big range, but much more often a BE vs BS). Most of these teams use C/C++ as their primary languages. 
C) Computer Vision, Machine Learning Infrastructure Engineers, Applied Researchers - build the ML/AI and sensor/vision models. Most of these have PhDs. 

D) General SDE, Machine learning engineers - training models, connecting all the systems, motion logic, material handling logic, building control interfaces, etc. Most of total development staffing... no hard educational requirements, just need to meet the general hiring bar for SDEs. Mix of C++ and Java, primarily. 

The robotics teams also have the usual development support roles ~ QA/test engineers, appsec, devops, safety and compliance etc. that have varying degrees of involvement on the SWE side. 

Link to comment
Share on other sites

Link to post
Share on other sites

On 10/25/2022 at 5:24 PM, fpo said:

9. Data Science - I know little about this, so if you know more about it, please chime in!

Data is an entire field of itself, similar to what was discussed before with embedded systems.

 

You have Data science, as you mentioned, which are people who often get data and try to build models on top of this data (often spending more than 90% of their data wrangling with the data itself rather than building models), but you also hava data engineers (hi, that's me), who make the data available for other users, such as data scientists.

And you don't even need ML models for most stuff, so that's where data analysts come in, they enough basics of programming in order to analyse some data and build dashboards/KPIs for a company and help them steer in the right direction, or just provide enough insights for a business analysts to actually make a decision.

 

There are also machine learning engineers, the ones that work with building feature stores and making pipelines to automate the creation and deployment of models.

 

 

You also forgot to mention about the ones who help to run the infrastructure, like sysadmins, devops, SREs, etc etc.

FX6300 @ 4.2GHz | Gigabyte GA-78LMT-USB3 R2 | Hyper 212x | 3x 8GB + 1x 4GB @ 1600MHz | Gigabyte 2060 Super | Corsair CX650M | LG 43UK6520PSA
ASUS X550LN | i5 4210u | 12GB
Lenovo N23 Yoga

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×