by Tyler Durden
The surge in tech hiring in the U.S. in 2021 and 2022 represented one of the most aggressive talent grabs in industry history, only to be followed by widespread layoffs and hiring freezes as economic headwinds and post-pandemic corrections hit the sector.
This dramatic swing has reshaped the software development job market, leaving both companies and developers to navigate a new landscape of cautious growth and strategic hiring.
This graphic, via Visual Capitalist's Kayla Zhu, shows the percent change in software development job postings on Indeed U.S. since Feb. 1, 2020 to Feb. 28, 2025.

Poster Comment:
44 years ago I learned to program IBM computers in assembly language. When I entered 3rd grade, Harry Truman was President of the US.
#1: Pinguinite To: Horse (#0)
I had an assembly programming course in college. But before that, I programmed in binary. My Dad bought me a computer on a circuit card. It had a row of red LEDs, 16 for the address, and 8 for data. That was the monitor. The keyboard consisted of two rows of electric contact pads next to each of the 24 LEDs so I could switch each LED to on or off.
I programmed it to multiply 2 numbers. I showed my achievement to my Mom, with the answer clearly shown in binary form on the LEDs. She wasn't very impressed.
I think going forward the programming profession is going to be wiped out by AI. Just ask an AI to make a program that flawlessly plays tic tak toe and it's done in seconds. All us programmers are and have ever been are intepreters between end users and computers, making them do what people want though the art & science of programming. But programming tools have evolved to increase efficiency and the end result of that will be no more need for human programmers. People just tell AI what they want a program or even a computer to do and it will do it.
Pinguinite posted on 2025-03-15 16:25:17 Reply Private Reply
#2: Horse To: Pinguinite (#1)
Horse posted on 2025-03-15 17:12:26 Reply Private Reply
#3: Dakmar To: Pinguinite (#1)
That is hardcore Neil, it sounds like you were an enthuisiast very early on. I started out with BASIC on TRS80 in High School in 1982 or so. But it wasn't until 1987 that I was able to get real training, which started out in BASIC, but also was two semesters of COBOL, and an independent project, which I used to learn C. It was early on, during that late DOS period that I ever messed with assembler code. What I learned was I don't ever have to write in assembler.
My Dad bought me a computer on a circuit card. It had a row of red LEDs, 16 for the address, and 8 for data.
I remember the one my father gave me, like a 30 in 1 kit with resistors, capacicitors, and variable versions on both, along with lights, and a meter thing. All in a wooden tray, with springs to connect the wires as called for. This was before the LED ones came out, but one of my friends got the LED version a couple years later, probably as a Christmas present from his Dad.
Tandy/Radio Shack. They were sold as kits, with a booklet showing which spring hookups to wire together for different applications, although there were a lot that were just variations on a theme.
Dakmar posted on 2025-03-15 17:34:42 Reply Private Reply
#4: ghostrider To: Pinguinite (#1)
Sounds like there is a good chance that "Deep Though" will work out the answer really is 42.
ghostrider posted on 2025-03-15 18:10:15 Reply Private Reply
#5: Dakmar To: ghostrider (#4)
Dakmar posted on 2025-03-15 18:19:07 Reply Private Reply
#6: ghostrider To: Dakmar (#5)
ghostrider posted on 2025-03-15 18:28:37 Reply Private Reply
#7: Pinguinite To: ghostrider (#4)
I asked this:
It replied:
===================================
Here's a Python program that implements a tic-tac-toe game where the computer plays perfectly except for every 3rd game, where it intentionally makes a suboptimal move to potentially lose: python
import random import os
class TicTacToe: def __init__(self): self.board = [' ' for _ in range(9)] self.game_count = 0
def print_board(self): os.system('cls' if os.name == 'nt' else 'clear') for i in range(0, 9, 3): print(f"{self.board[i]} | {self.board[i+1]} | {self.board[i+2]}") if i < 6: print("-" * 9)
def available_moves(self): return [i for i, spot in enumerate(self.board) if spot == ' ']
def is_winner(self, player): win_conditions = [ [0, 1, 2], [3, 4, 5], [6, 7, 8], # Rows [0, 3, 6], [1, 4, 7], [2, 5, 8], # Columns [0, 4, 8], [2, 4, 6] # Diagonals ] return any(all(self.board[i] == player for i in condition) for condition in win_conditions)
def is_board_full(self): return ' ' not in self.board
def minimax(self, is_maximizing, depth=0): if self.is_winner('X'): return -10 + depth if self.is_winner('O'): return 10 - depth if self.is_board_full(): return 0
if is_maximizing: best_score = -float('inf') for move in self.available_moves(): self.board[move] = 'O' score = self.minimax(False, depth + 1) self.board[move] = ' ' best_score = max(score, best_score) return best_score else: best_score = float('inf') for move in self.available_moves(): self.board[move] = 'X' score = self.minimax(True, depth + 1) self.board[move] = ' ' best_score = min(score, best_score) return best_score
def best_move(self, lose_mode=False): if lose_mode and self.available_moves(): # Make a suboptimal move by choosing randomly from non- winning moves moves = self.available_moves() return random.choice(moves)
best_score = -float('inf') best_move = None for move in self.available_moves(): self.board[move] = 'O' score = self.minimax(False) self.board[move] = ' ' if score > best_score: best_score = score best_move = move return best_move
def play_game(self): self.game_count += 1 self.board = [' ' for _ in range(9)] lose_mode = (self.game_count % 3 == 0)
while True: # Player's turn self.print_board() while True: try: move = int(input("Enter your move (0-8): ")) if 0 <= move <= 8 and self.board[move] == ' ': break print("Invalid move!") except ValueError: print("Please enter a number!")
self.board[move] = 'X'
if self.is_winner('X'): self.print_board() print("You win!") break if self.is_board_full(): self.print_board() print("It's a tie!") break
# Computer's turn computer_move = self.best_move(lose_mode) self.board[computer_move] = 'O'
if self.is_winner('O'): self.print_board() print("Computer wins!") break if self.is_board_full(): self.print_board() print("It's a tie!") break
def main(): game = TicTacToe() while True: game.play_game() play_again = input("Play again? (y/n): ").lower() if play_again != 'y': break print(f"Games played: {game.game_count}")
if __name__ == "__main__": main()
===================================
Pinguinite posted on 2025-03-15 18:38:05 Reply Private Reply
#8: Pinguinite To: All (#7)
Pinguinite posted on 2025-03-15 18:41:30 Reply Private Reply
#9: Pinguinite To: Dakmar (#3)
I remember programming basic on one and getting half way done and then having my entire program wiped out. Apparently the button called "New" would reset the programming environment! And that very convenient button was located right beside the "Enter" button. And I kid you not!
Later versions improved on that. I also remember saving programs on a cassette tape.
Pinguinite posted on 2025-03-15 18:45:29 Reply Private Reply
#10: Dakmar To: Pinguinite (#9)
We were recording our classwork on cassettes, but even that was iffy and forget about trying to do any sort of search.
Dakmar posted on 2025-03-15 18:50:37 Reply Private Reply
#11: Dakmar To: Pinguinite (#7)
I've never really had any reason to write gaming software, so the inner iterations hurt my brain.
Dakmar posted on 2025-03-15 19:03:06 Reply Private Reply
#12: Pinguinite To: Dakmar (#11)
Pinguinite posted on 2025-03-15 19:13:37 Reply Private Reply
#13: Dakmar To: Pinguinite (#7)
With a little effort, that could be re-used as part of a teaching course on writing VBA macros in Excel.
It's all just 0 and 1, after all :)
Dakmar posted on 2025-03-15 19:14:02 Reply Private Reply
#14: Dakmar To: Pinguinite (#12)
That funny. I usually start hairy VBA macros with "record macro" and see what's there once I hit Stop. Sometimes it's as simple as replacing hardcoded ranges with .cell coordinates.
Dakmar posted on 2025-03-15 19:18:07 Reply Private Reply
#15: Pinguinite To: Dakmar (#10)
Pinguinite posted on 2025-03-15 19:22:45 Reply Private Reply
#16: Dakmar To: ghostrider, Esso (#13)
TikTikTik, still waiting on that USAID grant to teach horrible old women to use staple guns.
Dakmar posted on 2025-03-15 19:24:06 Reply Private Reply
#17: Dakmar To: Pinguinite (#15)
See if you can get it graft a 1970 Torino Sportroof rear window/decklid onto a 1970 Mercury Cyclone without destroying the character of the Merc.
Dakmar posted on 2025-03-15 19:27:35 Reply Private Reply
#18: Pinguinite To: Dakmar (#17)
Pinguinite posted on 2025-03-15 19:29:14 Reply Private Reply
#19: Dakmar To: Pinguinite (#18)
Dakmar posted on 2025-03-15 19:31:59 Reply Private Reply
#20: Dakmar To: Pinguinite, Esso, ghostrider, Horse, TommyMadArtist (#18)
Dakmar posted on 2025-03-15 19:42:42 Reply Private Reply
#21: Dakmar To: ghostrider (#20)
Dakmar posted on 2025-03-15 19:49:22 Reply Private Reply
#22: Dakmar To: Dr Kimmy (#21)
Dakmar posted on 2025-03-15 19:51:43 Reply Private Reply
#23: Dakmar To: All (#20)
Dakmar posted on 2025-03-15 20:01:25 Reply Private Reply
#24: Dakmar To: Pinguinite, Esso (#18)
Dakmar posted on 2025-03-15 20:12:48 Reply Private Reply
#25: Dakmar To: All (#24)
Dakmar posted on 2025-03-15 20:15:33 Reply Private Reply
#26: titorite To: Pinguinite (#8)
titorite posted on 2025-03-15 20:59:17 Reply Private Reply
#27: Dakmar To: titorite (#26)
Dakmar posted on 2025-03-15 21:09:35 Reply Private Reply
#28: ghostrider To: Pinguinite (#7)
ghostrider posted on 2025-03-15 22:14:04 Reply Private Reply
#29: Dakmar To: ghostrider (#28)
damn this song is boring...:)
Dakmar posted on 2025-03-15 22:19:05 Reply Private Reply
#30: Dakmar To: ghostrider (#28)
Dakmar posted on 2025-03-15 22:28:17 Reply Private Reply
#31: ghostrider To: Dakmar (#21)
ghostrider posted on 2025-03-15 22:29:03 Reply Private Reply
#32: Dakmar To: ghostrider (#31)
Whenever I try to play this on my guitar it just sound like sad Don Ho crap, but I can still do pretty good on the vocals.
Dakmar posted on 2025-03-15 22:34:03 Reply Private Reply
#33: Dakmar To: All (#32)
Dakmar posted on 2025-03-15 22:46:15 Reply Private Reply
#34: Dakmar To: ghostrider, Esso (#31)
Never give up on the wrist bra movement, flexibility with restraint! Is there a wink emoticon?
Dakmar posted on 2025-03-15 22:51:18 Reply Private Reply
#35: Pinguinite To: Dakmar (#17)
Decided to give it a shot. You'll have to tell me how good a job it did. If any.
Pinguinite posted on 2025-03-16 02:13:19 Reply Private Reply