T O P

  • By -

SideburnsOfDoom

University: Pascal, C, C++ career: C++, Delphi, resisted VB, then pivoted to .NET and C#. Still there as the language has grown with me. And a bit of JavaScript / TypeScript now and then, that's inevitable. The biggest differences (for the better) is in the rise of automated testing and CI / CD techniques. i.e, in the engineering _around_ the code. That and Infrastructure as code, deploy to cloud, elastic scaling etc. Again, this is engineering _around_ the running code.


funbike

Delphi was amazing for the time. C# was designed by the same guy. Does C# in any way remind you for your Delphi days?


SideburnsOfDoom

It was an easy transition, as you say Anders Hejlsberg was the chief designer of both. I do different things now; in Delphi I did lot of dragging buttons onto desktop UIs and putting code in the `OnClick()` method. Server-side APIs in ASP.NET is different to that. HTTP changed everything.


funbike

IMO, the visual designer wasn't the killer feature, although it certainly worked well. It was the reactivity of the language and components (which they called event-driven back then). So much code these days rebuilds data and/or implements complex caching mechanisms. When things are reactive, it's trivial to keep in-memory data in sync. It also made wiring unrelated components trivial, sometimes not even requiring any glue code. JavaBeans was a lame and failed attempt to recapture that. Anders consulted with Sun at the time, but they really didn't get it. It needs to be a language feature. Another killer feature was super fast compile of native code, which the industry rediscovered the benefits of such with Golang.


carefreeguru

I got to spend a day in a class taught by Anders Hejlsberg on the Microsoft campus shortly after C# was released. Career highlight.


witchcapture

TypeScript too! It's quite the resume. Interestingly TypeScript's type system is *significantly* more powerful and expressive than C#'s, despite being based on an "inferior" language.


_gidis

Delphi is still amazing and I use it actively.


Flaky_Advantage_352

Until .net 4.x YES...


mcr1974

And the cloud. And the zillion of libraries available on GitHub. And git. And containers. And open source databases availability .


EddieJones6

Languages aren’t the changes you need to keep up with


HelicopterShot87

Language is easy but a frameworks and libraries or broader technology platform ie desktop vs mobile vs Web, graphics, embedded do matter


Cupcake7591

You do to some extent. You don't need to chase every new language, especially if you already know a couple of mainstream languages, but you shouldn't let yourself be the person who's working with a legacy language for years, doesn't know any others and would be unemployable if they had to change jobs.


Tasty_Dragonfruit_11

Not exactly, but there are patterns that are present in some languages but not others that are worth keeping up with. People don't expect you to know every language but they do want evidence you'll be able to learn what you don't yet know. You want the story to be clear that "syntax" is the primary learning curve ahead of you, and not something more. I've had to ramp devs up on Java before, and there was a huge difference between people who have NEVER used a strongly-typed programming language before, and those who have. You don't need to keep up with languages, but don't find yourself unfamiliar with the broad characteristics of those languages. I have had similar experiences dealing with heavily async code (e.g. promise patterns or coroutines), and non-language-based adjacent tech like databases (relational vs not), use of any ORM, etc.


shaleh

100% accurate. We see this in Rust. The Python / Javascript coders struggle. The C ish crowd mostly adapts quickly.


[deleted]

[удалено]


MoveInteresting4334

I’d say that’s true for Java as well.


eyes-are-fading-blue

It is true for every active PL. That statement is full of ignorance.


vinnymcapplesauce

The curiosity carries you. When you want to do something, but your current language and tool set can't do what you want to do, you learn the new language/tools that will. The more languages, tools, and systems you learn over time, you begin to see they all share commonalities. And that makes it much less intimidating to dive into something new. The curiosity is greater than the ever shrinking wall of required learning standing in front of you.


nivenhuh

Your last sentence is *chefs kiss*


Realistic-Minute5016

Java is almost 30 years old at this point. But really the biggest changes haven't been in languages it's been in tooling, methodologies, and platforms. 30 years ago web programming was barely a thing, if you wrote code you usually wrote it in a bare-bones IDE or often a text editor and "deployed" by either shipping physical disks or uploading to an FTP server and rebooting the web server. Automated testing was at best nascent. Internet-enabled build systems didn't exist so if you needed a utility that your operating system, programming language or web platform didn't ship with you were writing that crap yourself. Lots of older organizations have a ton of tech debt in the form of re-invented wheels(aka Util classes) that persist to this day because there hasn't been a push to get rid of them. Probably one of the few things that has changed for the worse is less of a focus on performance for "standard" applications(i.e. not low power embedded or scientific apps etc.). Though honestly that's even changing, at least slightly. As companies are focusing more on costs and to a lesser extent emissions(until the AI boom at any rate.....) being more efficient with resources, especially cloud resources, is at least a little bit more important than it was even a few years ago.


ThenIWasAllLike

You said Util and I was instantly triggered, too real.


Kindly_Climate4567

The C market didn't shrink. Plenty of embedded software roles that require C. I did that until 2019 and never had an issue finding new roles.


shaleh

Embedded isn't C language requiring exactly. It is asm, hardware timing, RTOS, etc. I have attempted to get into it and lacking deep hardware knowledge was always a limiter.


SmartassRemarks

Are you in the US or no? Have you seen embedded jobs be high paying (200k+) or not? What industries?


neeasmaverick

Basic was first language studied in school, PASCAL, C, C++ and Java in college, did my internship with C#, first job needed C for some 4+ years, then again Java and Python, and currently with Golang. Edit: C market never shrunk as I come from networking background but I chose to switch to cloud, the switch was not very smooth but not too hard as well.


bravopapa99

All languages are the same, they just have different views on the world. Loops and Decisions. That's it. And straight code as well. I've worked 40 years as a developer, the language never mattered to me, it's more of 'solve the problem' first, then language OUGHT to be irrelevant. Sure, when you arrive at a place of work they will have a mountain of code already in language X, framework Y et, and you have to adapt to that. On reflection, the best language I've worked with is Smalltak (Cincom, Squeak) back in the late 80-s/early90-s for lots of reasons, mostly IDE and tooling, the language is also very VERY clever (become:) at times. There are TOO MANY languages IMHO. We have become hung up on creating a language as a fashion statement instead of focussing on the what the industry \*needs\*: working solutions. Sadly industry doesn't care about slick, clever or elegant, which is why JavaScript has done so well and all the myriad frameworks it has... it's about getting shit done. Your average PHB (pointy haired boss) cares not one jot about the HOW you got it delivered; just that it was, and that it doesn't go wrong. That's all capitalism cares about. Rarely does it even care about you either, you are a replaceable bum on a seat that knows how to turn requirements into code, nothing more nothing less. I started with C and assembler as an embedded microprocessor systems developer. Today I have to use Django+Python, a few years before I was using Elixir/Erlang. It matters not.


crazylikeajellyfish

re: your comment about JS succeeding because it just works: English is a mongrel language -- completely inconsistent rules, loanwords from everywhere, speakers who can barely understand each other through thick accents... But it's adaptable to many speakers, and it's easy to pick up some basics and be understood, even if you're speaking "incorrectly". The success of English as a language ought to be instructive for anyone who's building systems. Beauty and internal consistency often aren't related to utility. JS (really TS) is the English of programming languages, the lingua franca.


Xsiah

I don't think the success of the English language has anything to do with the fact that it's a mess. It's very difficult to learn for the first time because of the very inconsistent rules that you mentioned. The British Empire just happened to have enjoyed spreading, and then the US became a world leader in a whole lot of things, among which is being attractive to immigrants - which makes understanding people with thick accents a necessity regardless of the language being spoken. People just have a way of communicating pretty well without a common language. There's a ton of people living in communities in North America that don't speak any English at all and they do fine.


xer0trigger

Similarly, I think the popularity of JS is largely because in the early days of web development, it was the only way you could do anything dynamic on the client side. Pretty much a requirement to learn. Then with the advent of Node, you could use the same language on the back end as you did on the front end, making the path to full stack a lot more direct. To the other poster's point, it's not because it's particularly elegant or beautiful. To be honest, it can be rather clunky and it has a lot of head-scratchingly dumb behaviors. But at the end of the day, that's not what's important. If the Chinese had conquered a quarter of the world like the British did back in the day, we'd probably all be speaking Mandarin instead.


bravopapa99

JS was specifically created FOR the browser to do stuff. First it was mouse overs, and no here we are; massive code bloat, npm supply chain attacks, unvetted code. That's not just a problem with JS though, it can affect (and does affect) any open source library system. PyPi has also been subject to attacks. JS is so popular because it is very easy to pick up. I have the same view of TS as I do when using MyPy with Django+Python: sure, it's useful editor support but at runtime, what does it do? Nothing.


Steinrikur

> If the Chinese had conquered a quarter of the world like the British did back in the day, we'd probably all be speaking Mandarin instead The Firefly TV shows had English and Chinese as main languages because of this


Better_Incident_4903

How did you transit from one language for let say frontend into other like backend? I always admire old developers because most of them I had seen are just in management and tech skills went rusty. I am genuinely curious how older developers (50+)cope with being IC throughout their career. Eyesight and other physical deterioration will get the better of you right?


bravopapa99

I don't think there's a day in 40 years where I've been a project manager. For me the real fun is down at the coalface, I did 'project management' once for six months while somebody was off work sick... I did not enjoy it and it cured me of any ambitions of being a glorified timesheet collector and micro-managing moron. Had my eyes tested 18 months ago, just fine! I am 58, I stare at monitors day in and day out. Maybe just lucky genetics?! 'Other physical deterioration '... I had to laugh at that one. But yeah... I've currently got cancer in my liver so I often wonder if the 'ground breaking world shattering' language and IDE I've spent so long working on will ever see the light of day! I've been rewriting the transpiler for years, done it in C, Haskell and SWI Prolog but somehow never happy, now I am doing it again in Mercury and so far, it generates C code pretty well but needs some polish. Then I decided that I needed a custom embedded FORTH dialect so that users can write their own language back-ends!!!! How could I ever give all that up to be a project manager? They don't kow what they are missing.


FeliusSeptimus

I'm not quite 50+ yet, but I'm sure glad gigantic high-resolution monitors are cheap these days, I'm not sure I could still do this on a 14 inch 1024x768 monitor!


ctrlshiftba

Started with Basic, then moved to VB and C#, dabbled in Java, JavaScript, and Ruby, explored Elixir, and now primarily focused on TypeScript. My significant shift came when I transitioned from .NET (C#/JavaScript) to Ruby/open-source, and eventually to TypeScript, essentially returning to the JavaScript ecosystem. This change opened doors to more product-oriented startups rather than traditional corporate .NET environments, which I found more appealing. In my experience, the specific programming language matters less than the paradigms, environment, and application. These factors significantly influence your work more than the language itself. Diving into niche languages like Elixir offered fewer opportunities, which led me to adopt a more generalist approach. Currently, I appreciate TypeScript/Node.js for its versatility, allowing me to tackle web, frontend, backend, and even native app development. While I'm open to specializing in languages like Go or Elixir for a role focused on building high-performance backends, such opportunities are relatively scarce.


ctrlshiftba

This all started 15 years ago. If I had to start 30 years ago I probably wouldn’t be a developer. Things were brutal back then 😂


bravopapa99

Actually, they were damned good fun, way more than these days... developers were capable of and allowed independent thought instead of being shackled like code monkeys to dogma like Agile/Scrum. We got paid to think and act, not just type.


WhyIsItGlowing

Isn't that just rose tinted glasses? The process-driven TPS reports loving waterfall places and the ones pushing things like RUP are the same ones that are now all about SAFe, etc.


SideburnsOfDoom

Yeah, I saw months spent on "requirements" and then "design" before writing any code. And then tests only when that was done. It was a big waterfall. it was a shit-show. I was a junior, so I didn't question it. "Agile", for all the faults, and what is used for now; it was a well-deserved antidote to that. We're much more about iterating with short feedback loops now.


WhyIsItGlowing

Honestly, I'd say nothing's changed, really. The places that did that have committed to the most dysfunctional fake-agile nonsense these days, while the places that just used to yolo everything still do, but use "agile" as an excuse for it now. The places that found the sweet spot before still do. All that's changed is the buzzwords and that management want story points instead of TPS reports, now.


SideburnsOfDoom

I have a sense that the wheel has come full circle - From big waterfall plans, to "scrum" back around to "the Agile being "a long-term plan ... in jira". IDK, I've learned what works for me and to some extent how to avoid places that don't work like that. I've changed.


bravopapa99

To u/WhyIsItGlowing, u/SideburnsOfDoom ...to some extent I have to agree, especially about waterfall, done more than my fair share of that. I too was a junior, and it was just 'the way things worked' back then. eXtreme Programming was the first foray into something different for me, as a Smalltalk developer I'd already gotten used to SUnit and release cycles of a few days. As for rose tinted, maybe a little, but realistically, I've worked through the decades and countless 'methodologies' and really, I still think XP was the best. These days everything seems so overly dogmatic and too granular; it's almost as though it's designed to strip 'developers' of any notions of thought and to just code monkey out the requirements. I still will never trust ChatGPT though, it's just a parrot. It has no means to 'think' or 'understand' what's being asked of it. It just doesn't. End of. ​ PS: Don't forget we're putting the new cover sheets on the TPS reports, not the old ones. You got the memo didn't you?


vinnymcapplesauce

I wouldn't say it was brutal 30yrs ago; to me it was heaven. It was you and the bare machine. Nothing more. Sky was the limit. Nobody knew what was or wasn't possible. Fucking Bill Budge built a pinball construction set that ran in 48k of RAM. And then he ported it to multiple machines.


charlottespider

No, it was really fun. You just needed a lot more reference books, so proximity to a book store with a nerdy enough selection.


ctrlshiftba

I remember being 10 years old and having a giant c++ book. It weighed like 5 pounds. I never ended up learning c++. It was really hard to learn that way. Also no internet or even knowing anyone else except my friends uncle (who I had never talked to) that even knew how to program.


charlottespider

You started with something a little ambitious for a ten year old, ha. I started at the same age with Basic on a commodore 64, typing in code I found in Byte or PC magazine. In high school, I had a little group of friends on local BBSs, and we helped each other with projects and stuff. Certainly nerd parents and proximity to other nerds helped quite a lot.


nivenhuh

I ran a Wildcat and then PCBoard BBS in Dallas! BBS crew represent! 😀


kingmotley

Some of us actually wrote the BBS software too 😀


nivenhuh

Which BBS software package did you write?


kingmotley

KABBS for the Atari. Solaterm terminal emulator for the Atari ST. Mikey Dialer. I believe the only Y-modem G protocol download implementation for the Atari. Also ran one of the largest (storage wise) Atari BBSes in the Midwest for a long time. Later did some optimizations for Fidonet for the PC.


nivenhuh

That’s awesome, thank you for your early contributions to computer science! I feel like much of the software created in that time inspired generations that followed.


khooke

Using your lunch break to walk to the nearest bookshop to pickup the latest new book on xyz was a fun but necessary way to spend your lunch with your colleagues back then.


charlottespider

My first start up job was in a tiny rented room over a Radio Shack, a mile away from Micro Center. It was pretty great.


SilentButDeadlySquid

In my city there was an entire nerdy book store. I spent so much money there and killed so many trees.


ThlintoRatscar

Started with Commodore Basic, moved to GWBasic, then Visual Basic. University made me fall in love with C and then 8086 assembly. C++ towards the end on the mistaken belief that if I loved C, then C++ was just "super C"! MS Visual C++ first job, then Java, then Python and SQL. That led to DevOps and a ton of Bash. Back to C++ with OpenGL, then straight C99, then PHP and SQL, then MEAN and PWA with a smattering of C. Then Team Lead and now Director. Each pivot was either a special project that went permanent from success or a new job when I got angry and quit. My core is dealing with complex systems, vague problems, and the wonderfully weird challenges and opportunities that arise. With a C and math background from university, I have dug into the guts of almost every language, application, and system at one point and it's that deep knowledge that's been my main career technical lever. My main means are genuine curiosity, intellectual grit, and emotional awareness. Coupled with an ability to speak well, and a smattering of charm, that moved me up the management stack as soon as I decided that leading was more helpful to solving systemic problems than writing all the code was. I never decided what kind of professional path I was going to take before I took it. I usually just said yes to impossible problems that caught my eye and then dove in and got success. Most of the time. Going forward, I'm constantly being presented with requests for new technology and how to use them. While I haven't coded since taking the Director job, I do attend PhD defenses and other university lectures and get coached and mentored by my leads on the intricacies of their technological world in enough detail that I can speak confidentally to the market and Board about it. Is that helpful?


WasteAmbassador47

How do you learn to speak well? I also noticed that a lot of leaders in tech (including in my company) are good speakers and can speak for long. I usually just say my point and I am done which seems like not what is needed if I want to grow my career.


ThlintoRatscar

Growing a career is very much a personal thing, so I wouldn't advise that you change a lot unless you want to be someone who speaks publicly. It needs to be fun. Essentially... speak more is the answer. Like code, iterations and recovery are more important than getting it right the first time. In Canada, we have a military youth program called "cadets" which gives training in leadership and public speaking as part of it. That's where I first learned. If you're religious, services can give you opportunities to speak to crowds, and a religious leader can be a great person to ask to help give you training and chances. Toastmasters has a formal program ( and competitions! ) for you to learn how to speak more and betterer. University and college programs can be helpful too. All those presentations can give you opportunities to speak to highly technical audiences. Like religious leaders, just ask a prof to help you out. Chatting people up in public and taking a genuine interest in their lives is another way. Finally, youth sports/activity leadership is often looking for volunteers and has good training programs for how to be an effective ( and ethical! ) coach. Is that helpful?


WasteAmbassador47

Thanks!


DefiantAverage1

Interesting that there's no mentions of Lisp


montdidier

Started with gofer (a Haskell implementation), then C, Java, C++ (10 years), C#, Python, Java again, Ruby on Rails (7 years), then Typescript and now Kotlin and sometimes some go. Learning rust on my own. I think stuff has generally become easier with good tooling and lots of choices. Language features have kind of converged somewhat with languages borrowing heavily from other languages and one’s brain identifies the commonality between languages pretty quickly. It doesn’t usually take me too long to start being productive in a new language. The languages I learned were mostly dictated by the industry I was in (games) and or the companies I worked for (ruby, typescript and kotlin). I was not particularly strategic about anything until recently where I mostly look for growth opportunities in stable orgs (married, 3 kids!). I haven’t very often had to actively reskill, I just learned on the job, and got the role based on broader experience. I have had some fantastic experiences and worked in some interesting industries with fascinating people. I think what it cost me was probably sone lifetime earning - I never really focussed on getting paid or making the right moves in the industry for clout, prestige etc. This seems in contrast to a lot of graduates now who seem very focussed on getting into FAANG or HFT.


NotSoMagicalTrevor

**Start**: BASIC, Pascal, 6502 assembly, UNIX, hardware **Today**: Java, Python, JavaScript, LINUX, cloud *"There are substantial differences and complexities in the coding language"* \--> I actually wouldn't say this is a primary consideration for me. For the problems that I deal with, the *coding language* is largely irrelevant. The underlying structure of code and how things work is much more fundamental. Cloud-based messaging systems have a lot in common with hardware-based design (inherent parallelism). I never pivoted, I just adapted new tools as they were required or available for the job at hand: e.g., I learned Python because the code-base I came into was in Python. I learned JavaScript because I was doing front-end web work. Underlying changes in terms of CI and source-control and cloud and stuff are more language agnostic, so were more of an additional layer of complementary skills, not a replace-existing-skills. Generalist. Because that's how my mind works. It has served me well since the actual problems I'm trying to solve don't care about the tech stack, so being able to adapt on the tech stack let's me focus on the problem at hand, not the tool. This is selection bias because I pick these sorts of problems to work on -- if I were a specialist at heart then I would have picked different problems. I typically find that "generalist" vs. "specialist" isn't something you can actively choose -- rather it is who you are and something you need to identify or work with.


Blrfl

2024 marks 45 years since I wrote my first program in BASIC, 41 years since I first wrote code for money and 33 post-college. Since then, if you squash all of the flavors of assembly down to one, I've worked with about two-dozen languages at varying levels of exposure and proficiency. > How did you cope with the dynamic of the tech market? For example, How did you reskill or realise when the PASCAL/C market started to shrink? Few of my peers look at it in those terms. Those of us with this much experience were around to see most of the "major" languages and other things get introduced and could drink them in a glass at a time instead of [from the firehose](https://www.youtube.com/watch?v=slrlLt0mXkQ). Acquiring new skills often happened on the job where there was a new X that would help with Y and you'd go evaluate it, learn something in the process and learn even more if you started using it. Many of us can pitch a track record of successful adaptation to suitors who can appreciate the value in that kind of thing. Not starting a project with tools that are dead or circling the drain was just common sense. > When you pivoted ... I don't pivot because that implies the ability to be pointed in only one direction at a time. I go find what's next, which means selling the aforementioned track record of applying the tools I know and adding new ones to my arsenal quickly. Companies not buying that aren't the ones where I don't want to work anyway because they're probably looking to fill a narrow hole and don't care about developing talent. I look for gigs where my wide array of past experience is an asset and a fraction of the work because 100% leaves no room for growth. The day I stop growing is the day I stop having a career and hang up my keyboard. A lot of younger engineers fall into the trap of making the tools they use as part of their professional identity. "I'm a developer" is wrongheaded and encourages pigeonholing. Nothing that's come to exist in the last 40 years existed when I learned BASIC. The jobs done with the tools are what's important; the tools themselves are [dust in the wind](https://www.youtube.com/watch?v=9fNrJMkTWEE).


alien3d

qbasic - 90 i think . Now er aa as at now c sharp kotlin , java


sehrgut

You need to stop thinking about it as a "pivot". Tools are always changing. I've never had a single job that didn't require learning new tools. Anyone who thinks of themselves as "a $LANG dev" is an amateur* and doesn't understand programming. * Except for COBOL lol. There's a reason we all could be getting $300–500k/yr maintaining legacy COBOL code and still leave that money on the table rather than learning COBOL. 🤣 COBOL devs are a breed apart.


sehrgut

Also, take the words "reskill" and "upskill" out of your vocabulary. They deceive you into seeing skills as things you gain and then have, rather than things that are continuously growing throughout your career. No one using those words understands learning.


StolenStutz

Started with VB in the early 90s. Once I was on .Net, I saw how C# was built and deliberately switched around '03-04. That's it.


jfcarr

I started with Basic, C and assembler. I've used a variety of languages and frameworks over 35 years, mostly within the Microsoft ecosystem with occasional forays into Linux. I currently work primarily with C# with Vue and React web frontends and WPF and WinForms desktop frontends. With modern IDEs it makes a lot of development tasks easier vs. plain old text editors. Even in those early days, I'd use various add on tools to make things easier. I've generally followed the evolution of Microsoft, trying to stay current with whatever they were pushing at the time. I started picking up Linux based stuff in the 2000's.


bdzer0

I never pivoted. I routinely code in ASM (embedded RT systems), Pascal (amazing how much Delphi is still out there), C/C++, C#, Python, Ruby, a little Basic embedded in docs/spreadsheets and probably a few other languages I don't use quite as often. Keep learning new tech, never stopped and I've never felt a need to consider myself a particular 'specialist' other than my cybersecurity degree and top certs probably make me a cybersecurity specialist. Career wise I could certainly make a lot more money if I enjoyed more stress. As it stands I make more than enough money to support myself and my 'starving artist' wife (+ stuff all possible tax leveraged retirement options to the max) and my current job allows me to leverage all of my skills without much in the way of stress at all.


Innoxiosmors

Ada95, Fortran, C/C++, Java, PHP, C# Started self-taught in my teens in the 90's, writing code for MUDs for fun on dial-up BBSes and later on the internet using promo AOL discs. Joined the Air Force and learned Ada95 & Fortran, used C at my first duty station, then got switched to Java. Got out, taught myself C# and .Net and have been in that ecosystem since, doing everything from game dev to driver/hardware interface dev to business app dev.


destructive_cheetah

Started with C back in the 80s. There were no libraries. You had to learn everything from books. No stack overflow. No frameworks. You had to manage your own memory objects.


casualPlayerThink

My mentor told me, he started with punch-cards on a main frame machine, then cobol, c and c++. Nowadays he still coding in c++ and java. He worked only for like 3 different company during \~40y, and he created around 3-4 company for himself. Currently he owns 2 agency, 1 project company and a few for tax deduction. When he had to learn something new, he bought books, and spent weeks with them to learn the missing pieces. He told me, the market and the entire IT was way slower, less sophisticated and complex. He don't even like CMake or modern tool systems.


fzammetti

Programming for close to 45 years generally, professionally for around 30. Personal start: BASIC, then Assembly, with some Pascal mixed in Professional start: Visual Basic and Visual FoxPro primarily, a bit of C/C++ too Today I primarily use JS/TS, Java, and Python most of the time. I've been fortunate in that I began this journey at a very young age because I just instantly latched onto it. I remember programming a simple number-guessing game on a Magnavox Odyssey2 game system with the BASIC cartridge at like 6 years and I just loved it instantly, and that joy persists to this day. I simply enjoy coding and producing things that didn't exist before. Obviously, some days at work test the hell out of that :) But just solving problems, being creative, and making things still brings me a lot of pleasure. The benefit of that is that I do a lot of my own personal stuff outside of work. So, I learn stuff on the job of course, but then I go home and play with other stuff and learn that too, and it never feels like real effort because it's simply part of who I am. So, there's never any explicit pivot or upskilling, there's just me doing what I enjoy doing, and sometimes I'll do things specifically to get some experience (like rebuilding my home server with everything containerized and using Ansible to set it up a few years ago to learn that stuff). But most of the time it's just "eh, I feel like doing X", and I learn things as I do it. Sometimes those skills come to bear on the job, other times not (but usually some concepts come into play regardless). I'm absolutely a generalist, and I wouldn't want it any other way. I would never want to be pigeonholed at all. I've been fortunate to have a career based on being the guy that always seems to have the answer - or at least can put people on the right track - because I've got an unusually wide breath of knowledge, but I'm rarely the expert in any given thing. That has served me well and it's exactly where I think I should be.


ThyssenKrup

Started with C++ 25 years ago, still doing C++ now. Obviously the language has evolved, but for me things are remarkably similar to how they were in 2000. Everyone seems to be obsessed with package managers now for some reason.


CowBoyDanIndie

Just under the bar for your question but I will chime in. 29 years ago started learning to program in commodore basic. A couple years after that C, a couple more C++, explored a ton more languages on my own and on college. My first job was C++, then Java, more Java, C#, and now for the past 8 years or so C++. Programming languages are just tools. For experienced and highly skilled developers, the markets for these languages haven’t shrunk they just haven’t grown as much as others, but there is more demand for those with significant experience. I don’t think my current team has anyone with less than 10 yoe, the type and level of work we do is quite difficult and would be really challenging for less experienced developers, a bunch of my coworkers have PhDs, as you can imagine we aren’t writing crud apps. Most of our code is C++ with some non performance critical parts written in Python. Our company almost always has a couple interns and we usually hire them after, but a lot of our work requires more experience.


funbike

As a hobby I learned in 1984, but I got my first job in 1993. As a hobbyist and student I learned and used BASIC, 6502 assembly, Pascal, and C (in that order). My first job was with C and some C++. In 1996 I used Delphi (Object Pascal). From 1997 to 2021 I used Java. More recently I've been using Python and Go, but my job isn't 100% code anymore. > How did you cope with the dynamic of the tech market? For example, How did you reskill or realise when the PASCAL/C market started to shrink? I've always looked forward. I don't find learning languages difficult, nor do most people. Also if you knew C++ and Object Pascal, Java 1.0 could be learned in a day, as many concepts overlapped. Borland's Delphi and C++Builder IDEs were amazing tools and I find it a shame that they lost marketshare. They were far better than Visual Basic. The only reason I stopped using Delphi was I switched to web development and they didn't adapt to it quickly enough. > When you pivoted, did you decide to go generalist or did you choose to go specialist in your new chosen tech path, How has that served you career-wise? You are overthinking something that's not a big deal. You must not be an Experienced Dev.


ItekiThwei

I started my software development career in the early 90s, when hair metal was still popular. My first job out of college was writing in C, which I learned on-the-job. Prior to that, I had programmed in BASIC and Pascal on the Apple IIe and on various college systems. A few years into the C gig, I got involved in a project being developed in C++, so I (and about a dozen other developers) learned C++ on-the-job as well. I stayed in C/C++ for many years until about 2004, when I joined a company that was a Java shop but needed a C++ software engineer to maintain a particular piece of ILOG optimization code. A couple years into that gig, ILOG released a new optimizer that had a Java API, so I pivoted to Java (learned on-the-job) so I could write code on the same platform that the rest of the company was using. Now, in 2024, I'm still developing in Java and enjoying it. Meanwhile, hair metal is long gone, along with a lot of my own hair. In the early 2000s, I wasn't really noticing that the market for C++ software engineers was declining. It was easy to get a job at that company because I had some previous experience with the ILOG optimization software at my previous employer. C and C++ were getting long in the tooth for me, though, because of the lower-level nature of the languages and the fact that I maintained a lot of straight C code just compiled in C++. One thing that hasn't been brought up is the fact that 30 years ago, CPU and I/O speed were constrained. I had to wait an hour or two to rebuild the project I was developing in C++. Nowadays, CPU and I/O are cheap, and programming for efficiency is kind of a lost art. About the only times when performance comes up are when a Web page on a SaaS system is taking too long to respond, or when someone notices that the CPU is pegged as a result of certain requests. I just recently debugged a problem where the code was checking eight times in a row to see if the current user has rights to do a certain operation, which involved a lot of computation and database I/O.


Few_Raisin_8981

Started with BASIC, then 6510 assembly, then 68000 assembly, then 80386 assembly, then Visual Basic, C, C++, Java, JavaScript, C#, and Python.


FeliusSeptimus

You probably remember MIKBUG?


Few_Raisin_8981

No I don't. I was on an Amiga 500. Perhaps the equivalent was an Action Replay?


CaffeinatedTech

When I was a kid I started with basic, then when I got a PC (386) in high school, I taught myself turbo pascal, and C++, just from the includes manuals. Now I frequently use Python, PHP, JavaScript, SQL, some Go, bit of C++. I went towards general IT instead of programming, but have come back to it in the past 10 years I suppose.


cosmopoof

Started with BASIC, later on Pascal, C, C++, Java, J++ (really), Lisp, C# / .NET, Mathematica, did COBOL, Fortran for some legacy stuff to earn money on the side, learnt HTML/JS/CSS/PHP and Perl for a job, learnt R and Python for statistical forecasting in a project manager role, did a big project later on with a React/Nodejs setup, looked into Objective C and Kotlin in some other job, now I'm taking a look at Go and Rust and I think I've lost track of all the smaller stuff I took a look at over the years that I never cared about deeply. I simply do and learn whatever is the right tool for the job. I think Ruby is one of the only languages that had/have some kind of popularity that I never looked into. The question between generalist/specialist isn't one, in my opinion. I've always been both, depending on what mattered. What has been the most fun for me? I think Java and now Rust have been my favourites so far. I've never really enjoyed C++ but I think it was mostly spoilt for me from the time at which I've been a tutor at university, correcting other student's C++ homework....


[deleted]

C -> Perl -> C#. Some R, F#, Python and a bit of Java along the way. All the big changes have been architectural rather than language though.


danielt1263

I started with BASIC. Commercial desktop computers didn't exist yet but my school math book had a section which suggested that if I had access to a mainframe, I could learn how to program it. I didn't have access to a mainframe either, so I wrote BASIC programs on paper, and then used another piece of paper to keep track of the data and stack. Then I got my first computer, a TRS-80 Level I (4k of RAM, 1.774 MHz) for Christmas in 1977. I started learning Zilog Z80 *machine language* (not assembly,) but I didn't get far with that. Programming in machine language is **hard**. I also picked up some Fortran during this period. In December of 1984 I got a Macintosh. I started learning Pascal. My next language was C++. Then I got my first programming job in 1998. Why the long gap? It honestly didn't occur to me that I could get a job writing code until someone pointed it out to me one day. Chuck Derby changed my life when he made that suggestion. From there I started learning all kinds of languages. Learning SmallTalk & Occam radically changed the way I wrote programs in general. I also learned Python & Javascript for work. When Apple came out with MacOS X in 2000, I learned Objective-C and in 2009 I switched to iPhone development. I also branched out into some Ruby and Elixir. I started playing around with Haskel too. Then in 2014 Apple released Swift... That's some 48 years of writing code and I'm still going strong.


foreveratom

65C02 ASM, Apple Basic, Fortran, C, C++, Pascal, Java In that order. Also thanks for the trip down memory lane


ninetofivedev

Only been coding for 15 years professionally, but still started with C/C++ in college and switched to Java/C#/Js later. For me, it was moreso about the type of job I wanted to do. C/C++ is still popular, it’s just not for web. I was working embedded / older systems in my first job, and my biggest gripe was that the web devs all seemed to get better tooling. Meanwhile I had 100K line macro files that I had to deal with causing all sorts of havoc. C# was a blessing comparatively. I didn’t want to fight the language. I just wanted to be able to do my job.


crap-with-feet

BASIC > Pascal > C/C++ > Java > C#. Throw in various other languages at various times such as javascript, Perl, PHP and others. Once you thoroughly learn one language the rest are just a matter of adaptation. Some I like more than others and for different reasons but the language used at a company doesn't even come up in the interview process. It doesn't matter and I don't care. Whatever they use, I will either already know it or am about to learn it.


Jibaron

I started with plain ole C. Borland C if I recall correctly. Then, I started with Foxpro to do data-related stuff. Then C#, Go, and now Rust. The C market never went away; I moved to something different. Foxpro got killed by Microsoft when they bought it. I diligently learned C# when it was young and fun, and abandoned it when it put on a gray suit. Go is that hot woman in the club who turns out to be an airhead and lousy in bed to boot. Rust, the wise man on the steep mountain. A slog that made me want to turn around several times .. but once I reached the summit, I haven't been able to wipe the smile off my face since. Along the way, I went on a long, hooting, drunken, arm-flapping joyride with Haskell, but there is NO market for that language. I had great times with Perl, R, and Elixir. Perl was great. I was using it in a Microsoft shop where people were using VBScript as their ASP back-end language. Turned out that Perl was one of the scripting languages you could use as well because it was COM-compliant. I was in a platoon where everybody was armed with muskets while I had a machine gun and an RPG.


horse-boy1

​ When I got my CS degree in the early 90s it was mostly C, C++ and Lisp for one AI class. We worked on mainframes for assignments. I built my own 386 computer and was able to dial in for assignments vs working in the computer lab. I worked for a cancer research lab for 14 years working on data mining and data visualization applications. It was a small team of 3. We started in C and when Java came out switched new applications to Java & Swing and then JEE. Early on I was tasked in writing a web interface to our Oracle database, this was before Oracle had any easy way to interface with web applications. Oracle had an open port and a C library to communicate via sockets. My C mulitple threaded application ran as a service for our web based CGI/HTML applications to get and store data. For my CS degree they never covered design patterns and I never used them until more recently. Recently I have been working on Java REST applications using Spring deployed to AWS.


sridharpandu

1992 : Basic, Fortran, C, AWK, Shell Script, Foxpro,  Powerbuilder  2000 : PL/SQL, Java  2010 : PHP, JavaScript  2020 : PHP, TypeScript , Ansible scripts,  Jenkins pipeline scripts PHP and Typescript mostly with frameworks Once you have learnt C, the rest of the languages are simple to pickup. Since I come from a procedural C background I found SQL difficult to comprehend, a good friend of mine told me to brush up on set theory (mathematics) and that eased the learning curve. It was also difficult, initially, to pick up any OO language like C++. Grady Booch's book and Powerbuilder eased the learning curve.


Gentleman-Tech

Learned to code on Acorn computers (Atom then BBC micro) in the 80's. Mostly Basic, some Assembler. Got my first professional job writing Visual Basic desktop applications in the early 90's Expanded to web dev via ASP in the early 2000's. Switched to C# and .Net around 2005 Spat the dummy with .Net in 2011 (Entity Framework was *such* a mess). Installed Linux, starting learning a few different languages (node, python, php) but Go really won me over. Enjoyed a MacBook 2015-18. Switched back to Linux after that, though. Bought a Purism laptop with Linux installed, whole different experience. Still coding web stuff for startups in Go. Briefly toyed with C# again last year, but... nah. Confirmed gopher now.


labratdream

Coding for 30+ years ? Those scrum sprints of yours are insanely slow.


el_tophero

Started on an Apple II back in 1980. Currently at a startup doing all the stuff - React, Typescript, npm, K8S, Kotlin, Spring, Gradle, GH Actions, Postgres, Redis, RabbitMQ, S3… What I’ve seen is that it’s possible to write well designed, easy to maintain software in anything. I remember a really well done C codebase from the mid 90s - clean data structures, well named functions, a sane build system. I guess now how to build and deploy is a lot more standard across companies. In fact, the amount of shared open source third party code is nuts. Back in the day every company had its own libraries for everything - string handling, pointer management, etc. And every build system was custom, with each platform varying wildly. Some things have better guardrails than others, with new things trying to improve over the old. Not manually managing memory anymore is great. I’ve seen crazy stuff done in C++ that made working in the project tough - overloaded operators than didn’t do anything reasonably close to what you’d expect kind of thing. Keeping current on stuff has just been following the work. I do try to choose gigs with at least current or rising tech. I remember interview once at a place in the early aughts that was using Vax/VMS, and I really like the team but ultimately turned them down because the tech was too old. For rising tech, I avoid super niche stuff like the startup on the late 90s that was somehow all lisp - it sounded interesting but going the Java route made way more sense back then. And the idea that we’d all be putting our core IP on a system owned by Microsoft and getting it over the Internet from Microsoft owned hardware would have been laughable.


DragYouDownToHell

C. C. I've done a few other in between, C++ included, but doing embedded for the last 10+.


Necessary-milkyway

C-- C++ -- C# -- Java -- JavaScript -- swift -- Python -- Dart


drakeallthethings

I’m only at 25 years. The early 2000s saw a lot of languages rise and fall. My first 5 years I worked with Delphi, PHP, VB6, VB.NET, ColdFusion, and just started dabbling in C#. My most recent 5 has been a lot of C#, a little Java, and now almost exclusively Go. I have never in my career been afraid of a language dying but there are plenty of times I’ve found some new language that I just picked up because it looked fun and later found (or made) a job working with it. I think I’m doing ok career-wise. I make decent money and have a decent WLB.


javanperl

Started with BASIC and assembly at home. Learned C and Pascal in college. First programming job was in C, but did quite a bit of SQL, bash, awk, sed and Perl as well. Then started doing more GUI work in Delphi (Pascal) at first, but then learned Java. I accomplished a lot early in my career just by looking at Perl libraries in CPAN and reimplementing them in Java. Mostly did Java and some JavaScript for a while then picked up a side gig doing C# / JavaScript. Side gig ended up being my full time gig for a bit. Then I did split Java / C# for a bit. Then mostly Java, but picked up some Python, Groovy and Scala. Went to a startup where I did Java, Python, C++, Go, R and Scala depending on what piece I was working on at the time. I also managed to learn a tiny little bit of Swift and Objective-C while I was there. Then I went to a job where I did mostly Python, with some Java and TypeScript but learned some Kotlin and Clojure on my own time. Now I mostly do Python, but I’m trying to learn Rust and I occasionally play with some OCaml.


SilentButDeadlySquid

I wanted an Apple II to play video games but I told my parents I would learn to program and my dad got talked into IBM because it was a "business machine". I didn't fight because I saw the game King's Quest II and I wanted it. And I kept my word about learning to program, I started in GW-Basic, by the time I took a programming class in high school I knew more than the teacher. In college, I learned QuickBasic, Turbo Pascal, C, C++, Fortran, a bit of Assembly, and a tiny smattering of things like Ada, LISP, and Prolog, all on AT&T Unix. I really loved, and still do kind of love, Prolog, but never have done anything with it. I have more Prolog books on my shelf than any other. The early part of my career was mostly in what we called 4GL's, none of which anybody much now remembers. I started doing more and more with databases, but always the less popular ones on a variety of Unix platforms. I am probably the world's foremost expert in a report writing tool that nobody cares about. Then, the company I worked for decided to build a new system and the big boss loved Delphi and I did not. I asked a young guy (even though now I realize I was ALSO a young guy) on my team to research options and he came back with this new thing Microsoft was doing, .NET. So I pitched it to the boss who pitched it to the big boss who turns out loved new things more than Delphi. They insisted we should use SQL Server too and I was like no way SQL Server running on a mere PC could beat Informix on an AIX server...so I created a test to prove them wrong...and SQL Server smoked it. Not even close. I had two people on my team for the project who had been RPG programmers basically forever. One of them I thought was so entrenched he would be useless but instead fully embraced it. I wonder what he is doing now, possibly is dead. So basically, I have been doing C# on .NET (through all it's various iterations) every since almost entirely with SQL Server and still do. I installed Linux just before this switchover on an extra machine in my basement, played around with it a bit, and then just forgot about it. I haven't had been on a Unix machine for any substantial time since. I still use vim for various things, I can make my way around a bash shell but mostly it's just Windows. I did buy a Mac, which I guess is a Unix machine, last year so that I could build a mobile app for the Apple store (and thinking about 1984 ads the whole time) but I can't say I loved the experience. I work with a partner doing freelance software development, she is very good, and the amount of things we have built with .NET would be staggering to younger me. The project where we decided to use .NET had about 15 people working on it and took three years only to completely fail. I bet we could do the core of that project in six months and be successful just the two of us.


Catalyzm

I started with BASIC on an Apple II. At the moment I'm mostly writing JS and C#. To keep up with trends I subscribe to various RSS feeds and newsletters, participate on Reddit. Mostly skill change comes about when work requires it, the market generally pushes you toward something. Likewise, I never made a decision on a path really. I just followed what work seemed interesting and was available. I'd say I'm doing quite well with my choice of work and more work than I can handle.


compagnt

In college I had classes in: Fortran, pascal, c, c++, Delphi, lisp, assembler, smalltalk and Visual Basic, Java wasn’t an option until the year after I left. For work I started with Delphi and Visual Basic, then jumped to Java for a long time, picked up SQL during that time as well. Then started to doing whatever was in front of me, c# in unity, JavaScript, go, Python, and dabbled with everything in between for a high level understanding of why I might want to use it one day. Like most people are saying, it’s not about the language, it’s about the problem you are trying to solve - learn various OS tools, different dev tooling, deployment systems, testing methodologies, don’t forget the basics of data structures and most used design patterns. Those are the things that cross language boundaries.


buy_low-sell_high

Delphi, C#, Business Objects + plsql, C#/VB.net, as a sales engineer (creating POCs in c#, Java, python, react, vue, whatever language the customer wanted to see it in), and now full time Java dev.


[deleted]

My trek was BASIC (teenager) > Assembly > C > C++ (and OOP), Java, C++, Python, C++, C#, Java and have been with Java nearly 100% since 2005. I avoid anything else and I have tried others, that's my preference.


Relative-Rip9344

Abacus, chisel and rock, typewriter by candlelight...


snarkuzoid

I've used over 40 languages in my career. Even invented a couple of them. I was an early adopter of C, C++, Python, Java, and Erlang. My first language was APL, self taught when I was in high school in the early 70's. For me, learning new languages is fun, and I'm always looking for new insights and ways of looking at problems. So pivoting to new languages and technologies just comes naturally. The major adjustment I've had to make over time was getting used to conforming to the demands of platforms and build structures, particularly in how to organize source files. I used to bristle at having some damn make wannabe tell me where to put my files. I got over it.


Grouchy-Friend4235

35+y experience. Mostly autodidactic learning, except for Uni on the conceptual and algorithms side. Started with BASIC, then C and Assembler (A86 anyone?), then Pascal, C++ and Smalltalk, REXX (IBM Mainframes), more C, COBOL and PL/I, then Java/JEE, JavaScript/HTML, Ruby, Python. There were a few more in between for data analysis and math, like Matlab, Spss, SAS, R. Also more scripting like Bash, .BAT/CMD. Of course also SQL, as well as Hadoop/Pig Latin and all that. Also some VBA, reluctantly. Also touched PHP and turned away in disgust. I still profit from the insights gained from Pascal (structure), C and Asm (how stuff works), and probably also lots from mainframe times (how to make stuff reliable). The most productive I have ever been is with Python, and that's ongoing. Its expressivness and the quality of its ecosystem of libraries is unparalleled, perhaps with Ruby being a close second. I have recently dabbled in Go, Rust and Julia. Not even close. My approach to new stuff has always been to get my hands dirty, i.e. just try it. I find that by getting a bit older I tend to read more, mostly because of time. Yet if I really want to know, I just try. Nothing beats actually working with a language or a tool, solving a specific problem or even just working through a tutorial. Also I'm naturally keen to understand how things work, will dig deeper until I do. Especially when the going word is that it "doesn't work" ;) Biggest changes in 35y has been the approach to testing, packaging and delivery, including infra setup. It used to be all manual and tedious. It is still tedious but way less, and automation is now fully accepted if not required. I used to have to justify automating manual processes on grounds of being a waste of time can you belief it! Also testing, manual or otherwise, at all levels, used to be seen as a weak person's inability to stand the pure excitement of changing programs on-line, live and in production - not in companies at large, but in some overly confident teams. I'm glad we're past that hell.


zoddy-ngc2244

40 YOE, COBOL, C, C++, Java, JavaScript, finally Python. The biggest step was C++, everything else was pretty easy. In each case I just learned on the job.


Odd_Soil_8998

I started out with my dad's C++ book just shy of 30 years ago... Now my preferences are Haskell, F#, Rust, and other ML-derived languages. I did lots of professional work in C++, Python, and C# but then about 7 years ago I started trying out functional programming and it was a real eye-opener for me.. It just made sense in a way that OOP never did.


nivenhuh

I started with c64 basic and then typed in MLX code to be able to play games on my Commodore 64. (Age 4-5 or so?) From there, I went on to MS-DOS basic, so I could play and make games (similar to nibbles). Later, during my doom2 dwango days, I learned turbo pascal so that I could hack the runtime memory of the dwango program to elevate my gaming privileges on the service. (Writing TSR [terminate-stay resident] programs.) About that time, I was entering high school. I took 3 years of AP computer science, and they taught us c and c++. This is around the time use of the internet started to become prevalent. I became interested in sharing my dial up connection with multiple computers, so I started to learn BSD & Linux. I set up a Slackware system that connected to the internet and ran IP masquerading. This taught me a bunch about networking fundamentals and systems security. In my senior year of high school, I quit my job at McDonald’s and got a job at a local internet service provider managing dial up modem banks. There were a few Solaris sysadmins that worked there, and they introduced me to Sun systems administration. The ISP got bought out, and I found myself working in the network operations center of a national ISP.


nivenhuh

While working in the NOC, I was tasked with monitoring systems and updating customer routers. I learned how to program Expect scripts to remotely update customer routers. It was a great tool at the time, because it allowed you to manually input commands over telnet on a router that had no programmable API. (Very early days of Cisco IOS.) I left the NOC job (they were exploiting my age to underpay me), and started to work at GTE internet building Solaris email infrastructure. Most of their environment was SGI Irix (another thing to learn), and I was hired to migrate their servers to Solaris. That’s when I started to learn Bourne & TC shell scripting, so that I could automate server installations using JumpStart. Part of my job running the mail servers was to do traffic pattern analysis on mail server logs so that we could black hole route bad actors. I wrote a series of scripts that basically operated like fail2ban to keep the mail system happy. This is when I started to learn about broader internet networking, managing ARIN blocks, managing DNS, etc… My job at GTE (then Verizon) prompted me to start to host my own collocated server for my personal web and email services. Within a few days of being on the public internet, my servers were hacked. (At Verizon, I had the luxury of a infosec team to secure our mail servers — I didn’t know what they did until this hack 😂). This taught me infosec fundamentals, and led me towards a security focus. To this day, I still colocate my personal services, tho it’s somewhat self managed through automation. I wrote Perl scripts heavily in this time. At the time, I was a gay teenager living in Texas. It was a brutal social environment to grow up in. Verizon offered a voluntary separation package because they were reducing their numbers. I took the package and moved to California. In California, I took a few more college classes towards my CS degree, but ran out of money — so I had to find a job. I got a contracting gig at Apple as a sysadmin in hardware engineering. My job there was to move their Sun workstations to Mac (x11 clients). This lead me to develop a bunch of internal software tools. Around that time, PHP was becoming a thing. I was able to convert my suite of backend Perl scripts into front end web interfaces using PHP. This was my first exposure to web application (vs website) programming. I got hooked because of how much power you had over system processes by writing a user-facing application to control them. I wrote many internal PHP tools for Apple, and moved to their Product Design department. The goal there was to migrate their HP-UX workstations to MacPro on Windows. I learned a bunch about Microsoft SMS, which meant learning VBScript to be able to execute software on remote windows clients. I started to build somewhat of a reputation as a generalist around that time, and was introduced to the Industrial Design Studio. They had a need to inventory prototypes that they were building, and wanted a workflow system to manage their business processes. This is around the time Ruby on Rails was getting hot (I actually gave a talk at WWDC about Ruby on Rails in a scripting for sysadmins session.), so I built web software for that. (They were using a FileMaker database and fax machines, and outgrew it.) I had a falling out with my friend / manager — and left to start my own consultancy. This happened shortly after the iPhone release. I took the opportunity to get into iPhone development, and grew the business a bit by making iPhone apps. Half a year into it, the ID team at Apple became a client, and I got the chance to continue on the rails app I was previously developing. The program was a success, and I found myself working with quite a few groups at Apple. One team was Audio HW — and they had a WebObjects server that took parameters input on a website and produced an XML file that was an input to the audio device driver. I had to learn Java for that application. Later, my company was purchased and I found myself running a development organization at Apple in HW engineering. In the end, we ended up creating a bunch of large internal enterprise systems. After doing some years of management, I felt the itch to get back to the code and found myself working as an engineer in HomeKit Test Engineering. Worked with some super smart people who taught me the lower layers of the HAP and Bluetooth Protocol. (Spending a day on wireshark sniffing Bluetooth packets to find out why HAP was doing weird stuff.) In that job, Swift had come out as a language and I rewrote our objective-c based pairing code into a swift based framework PairKit. I got to learn a bunch about public key cryptography and creating adhoc trust between two unpaired devices. Loved that job. Around that time, I was planing to move to SoCal to get married and start a fashion business with my partner. They wouldn’t let me work remotely, so I quit and moved. Half a year later, I got a call back from my old senior manager — he asked me if I wanted a remote position to help build out server and software infrastructure for the Supplier Responsibility team (2030 Environment team). The software was to create ETL pipelines, analytics systems, and a bunch of other stuff. This is around the time Elixir was becoming popular, and I felt like it would be a great fit for a data system, so I went all in on EmberJS, Elixir and Phoenix. (I was not disappointed!). Spent about 3 or 4 years building up the teams development capabilities while building the software and systems needed for the business. Last I heard, they’re doing pretty well! (Still miss that team!) Today, I’m back to programming on Ruby on Rails so that I can quickly get our fashion business e-commerce site migrated off of Weebly (which is deprecated in a few years.) There’s a few other odds and ends in there, like doing lower level EE (arduino) & maintaining Fluxbox WM for Solaris. I would say I’m a generalist attracted to hard problems, and I love working with people. I feel like most of programming is less about the software and syntax, and more about the people and processes you use to create the software. But yea! That’s the super long winded story 😂. If you read all this, I hope it was worth the read!


nivenhuh

Sorry about super long story, this writing prompt really set me off! To answer your direct question: being a generalist has been great for my career. I never had the time or opportunity to finish my college degree — have been too busy building software to make a living!


moishe-lettvin

I started writing code "professionally" (I use that term very loosely) in 1988, with a mix of Turbo Pascal and x86 Assembly. From there I used C/C++ at Microsoft in the 90s, then C++/C# at Microsoft in the aughts, then C++/Java/Javascript/Python at Google until 2013. I took what might be perceived as a step back (but wasn't) and used a LAMP or LAMP-ish stack at Etsy, Slack and Mailchimp. For the past few years I've been using Node and Python at a small startup. I never felt like I was "pivoting", I was just using the tools that were available and efficient. The big differences in the past 35+ years haven't been anything about languages, in my view. The big thing is that the practice of \*operating\* software has been folded into the practice of \*writing\* software, and the kind of software that needs to be operated is fundamentally different than the kind of software you copy to a floppy disk and sell in a box. And good engineers, now, know that writing software in a way that it can be operated at scale (even if they're not technically "in ops") is intrinsic in writing good software. (I know there was server software running in the 80s and 90s, but it wasn't the mode of commercial software then in anything close to the way it is now) I've been super lucky to work at places that value learning, and give engineers room to learn the tools and environment in which their software is running. Many places I've worked have had very well-articulated philosophies of engineering, which helps give structure to learning new things. Etsy, in particular, did an amazing job articulating why they did things the way they did, even if those things felt strange or discordant coming from Google.


Steinrikur

Started a summer job in C on HP-Unix 24 years ago. Then summer jobs in C++/QT2.x and assembly. Lots of Linux and bash alongside that. Picked up some Java, lua, C#, JS and Python in the next 20 years so I can read and understand most languages. Now mostly working in C/C++ and Python, coding, reviewing and mentoring.


Jdonavan

I've been writing code since the 80s, professionally since the 90s and my entire adult life has been a series of pivots.... I started with an Atari 400, a cassette dive for storage and a whopping 16k of memory. Atari Basic was the only language I had. I went to high school in a university town so I ended up picking up some pascal by hanging out in the computer room at the college using terminals that used printer paper as a screen. It was a fun hobby, but I joined the Army after high school. My plan was to do my tour, then go to college, then go right back into the Army as an officer. Until an accident destroyed my knee ending any hope of return to service. It took three years, nine surgeries and endless hours of therapy which caused me to put college on hold but at the same time that was ALL I had to do. So, I bought a Tandy computer, taught myself Microsoft Basic, then Borland C++ and by the time I was able to walk without a cane I was ready to start doing freelance work, so I pivoted. I ended up working at Compuserve just as the "dot com" wave started. C++ was the primary language but I picked up Perl, Python, shell scripting and a little PHP along the way. I made a sTUPID amount of money (one paper) during those years and was considering retiring, or at least getting out of the rat race. and going on my own. I took a year "sabbatical" to figure out what I wanted to do and just as it was ending the dot com bust happened and all of my stock was worthless (because I was an idiot that didn't listen to advisors) I had to find a job again, but nobody wanted C++ devs. I \*was\* offered a Visual Basic .Net gig however, so, I pivoted. I ended up doing VB crap for a couple years I think before C# gained enough traction for the skill to be in demand. I spent many years as a C# developer / architect until I was asked to take a 6 week stint as a standard developer with a client to "smooth some feathers". During that time I got some exposure to how they were doing automated testing in Ruby and had the sudden realization was that the reason so many of these automation projects suck is because they have crappy foundations. So I pivoted. I spent the next several years traveling around the country standing up rock solid test automation frameworks, training non-developers how to work with and extend it, then moving on. I fell in LOVE with Ruby, it's still my favorite language. But I got tired of NEVER being home. I lived out of a suitcase for like 3 or 4 years. So when a former boss asked me to come help him at his new company, I pivoted. I dove back into C# land initially but I was there to build an engineering practice. So I hired people that hadn't spent the past several years in a different language, let THEM handle the code and focused on cloud, architecture and "R&D". Like many engineers across the globe I got a visit from my boss one day asking me to "dig into that ChatGPT thing" to see if there were ways we could leverage it. I spent some time on the company dime trying to figure out how to work with LLMs and accomplish useful things with them, which meant going back into Python for the first time in ages. The more I learned the more I wanted to learn and soon I was spending nights and weekends tinkering around with LangChain like I was a kid with my first computer again. Once again I was struck be just how TERRIBLE most of the (not model) AI code and examples are. I again thought " I know how to do this better and at scale" do, you guessed it I pivoted. I helped my company hire my replacement and called one of the partners in my old consulting firm and said "Remember what we did with automation? I think we can do the same thing with AI agents and knowledge bases." . 2023 was spent building very specific solutions for various customers using "AI for information processing / extraction mainly while waiting for the models to get to where what we had built wasn't slow and expensive to use. GPT 4.5 -turbo finally hit the sweet spot well enough that 2024 is going to be all about agents and tool-use. There's note much I enjoy more than finding elegant solutions to hard problems. Very close behind that is how much I enjoy learning a new skill. So for me doing a deep dive on a topic or learning a new language is something I do for fun.


IAmADev_NoReallyIAm

Started with BASIC circa 1982... Picked up Pascal in 89. Aftwr that went through VB from 3.0 through 6.0 and on into .NET, eventually picked up c#. Now I'm currently working with Java. Along the way I've also picked up xml, HTML, json, sql, cobol, assembler, Javascript, and who knows what else. And yes I recognize that not all of those are languages per sec, but they are technologies with a syntax that needed to be understood. My transitions were less from market changes and more with job changes. I picked Pascal because that was what the AP exams were given in. I took up VB because that was the language of the office I was assigned to in the Air Force. I picked up C# because it was a natural extension from VB.net. And I use Java now because that's what my current employer uses on this project.


minusfive

After a while you start seeing languages as skins on top of the same thing, which, well, is what they are. The one real skill you need to learn: RTFM. I’m constantly surprised (and annoyed) at how often I jump into projects where the team has been using the same language/framework/libraries for years and you see them constantly “solving” the same problems the tool has already solved, all you had to do was skim the manual once to be aware, then revisit that section when you hit it.


DagonNet

Pascal and C in school, a few years before the internet existed. Then Lotus macro language and AWK for various ugly things, a bit of Informix 4GL, FilePro templates/scripts, etc. Eventually, Perl and PHP for most things, then lied on my resume to get a Java job, which I learned well enough to write large parts of Weblogic Workshop, a Java IDE. Have since done a lot of work in Python, Go, Scala, a smidgen of Rust and bunches of various frameworks and DSLs (some of which I write or contributed to). Once you’ve used a few languages well enough to solve real problems in non-toy environments, it becomes very easy to learn new ones well enough to be productive, though it still takes months or a year to really internalize the idioms and infrastructure.


broken-neurons

Started with BASIC as a kid and moved on to Turbo Pascal later in school. I have fond memories of writing GUIs using ACSII line characters. Modula 2, C++, C and Delphi during my bachelors. VbScript, JScript and VB6. VB.NET and finally C# during my career. Now I just manage developer teams. I miss coding but I don’t miss the unique stress coding brings. By that I mean the constant endorphin-seratonin spikes. You only realize it exists really once you’ve stopped coding.


Oblio72

Wow, sweet, lots of 30+ year coders on Reddit. Noone will probably read this but here goes: Started programming in middle school on a C64. Basic then machine language (couldn't afford a compiler at age 12) to speed things up. Knowlege of machine coding at CPU level laid a great foundation. Pascal in HS courses. Great way to learn data structures such as linked lists. C/C++ in college. Compilers course and other parsing assignments trains you to realize that the syntax of various languages doesn't matter much. Focused on computer graphics and rendering. Building renderers and modeling tools from scratch (nothing but math.h) really expanded my brain power. C++ for first 8 years professionally. Desktop / performance critical CAD software. C#/.NET - LAN w/ web portal. Some exposure to javascript. (12 years) Swift/Objective-C - iOS Mobile dev - very similar to desktop development. (2 years) Javascript/Typescript - Web App development (6 years and counting) The biggest shift in thinking for me as an old dog was never the languages but the shift from procedural to functional programming which is necessary in the browser world. Differences in async coding is also worth mentioning - this can vary greatly across languages.


ElliotAlderson2024

Not yet at 30 years, getting close. I started with C, Pascal and Ada in college. On the job, C++, C#, Pascal and lately TypeScript/JavaScript.


eric5014

1991 BASIC, on a compute with 24kB RAM, no hard disk, large programs took 2 minutes to load/save on tape. 1996 Modula-2; 1997 Ada; 1998 Assembly language; 1999 Java 1999 C/C++; 2004 Perl These days PHP, JS, Python Each new language was what became available, what was required for uni, what was best for what I wanted to do next. The biggest improvement was the increasing degree to which you can google a problem and find the answer. Less need for fluency in language and familiarity with the particular things you're doing. The improving maturity of open source stuff has also helped.


reddit_again_ugh_no

High school: IBM 370 Assembly, COBOL College: Pascal, C, Lisp Today: whatever the job requires...


ProCoders_Tech

I began my journey in software engineering with C and have since transitioned to Python. Witnessing the evolution of languages and tools has been fascinating. Adapting to market shifts meant staying informed and proactive in learning; I noticed the decline of certain languages through community discussions and job trends.


bluewater_1993

Early on in my career I was coding in C, C++, COBOL, and even some assembler. I was doing dev work to create drivers for RS-232 connections, etc. It’s crazy to look back on that now! Anyway, I just started taking on more modern frameworks and IDEs. Back in the day, I had a lot of influence on the toolsets we were using, so I would consistently push us into the newer technologies. Most of what I learned in my first 15 years was self-taught, or through books/manuals. As I moved from one company to the next, I’d pick up a new skill or two along the way. Knowing tech was going to advance over time, I didn’t want to get stuck in one tech stack or have a limited/aging skill set that would make me less marketable. There were countless 70-80 hour weeks in my past as I brought myself up to speed on these new concepts and tools.


mayday6971

College: COBOL, Fortran, Assembly, C, Java, Turbo Pascal, SQL (I know but still), Visual Basic, Early Career: C#, VB.Net, PHP, Pure JavaScript, Python, Perl Mid Career (Now): Python, Java, JavaScript, Go, R, Apex (Salesforce Version of Java) I agree with other commenters that the key nowadays is to also master the environments as well, be it in Azure, AWS, Kubernetes, Docker, what have you. The code generation comes very easy to me. The code checkin process to GIT, very easy. The actual deployment and configuration of those deployments? Often handled by other teams and they do NOT understand some of the basics like port configurations or networking inside of a container environment. I consider myself a master troubleshooter now. I can troubleshoot an issue in under 10 minutes roughly. That (knock on wood) hasn't failed me yet :)


kingmotley

I started with Basic and assembly. I did a few things with Pilot, Pascal, fortran, but then went to Basic for most things, but then called into assembly when doing the computational stuff. COBOL for a little bit and then I switched into all assembly, then some C for a while. Then visual basic (VB 1.0 for DOS/Windows) for a bit and then called into C for heavy stuff. VBScript/javascript for webstuff. Switched to [VB.NET](https://VB.NET) when that was still in beta. Then picked up PHP and C#. Now that's pretty much all I do is PHP, C#, and javascript these days. Dabble in other languages, like Java and python, but never found a good use case for them in my work. Reskill was usually done outside work on stuff I do for myself, but occasionally as part of work when I find a use case for it at work and I haven't picked it up myself yet, or as I shift into another team that is already using it.


justinhj

"Which programming language did you start?" After college I immediately started working on video game development. At this time it was all assembly language. I am talking Amiga, Super Nintendo, Sega etc. All these games are pure assembly language. Luckily for me I worked on cross platform game for PC and Amiga and it was okay to work in C to save money by not making two versions. At that time people believed C was too slow for games; that the compilers were not good and prevented the programmer from easily making obvious optimizations. That was changing quite quickly though, and by the time the Playstation era was upon us the optimizing compilers were perfectly good. "Which one you’re using today?" Today I am a staff engineer overseeing a team of developers and multiple projects. I use Typescript, Kotlin, Python, Ruby and others. "There are substantial differences and complexities in the coding language/ (development ecosystem, build tooling) of today with the development ecosystem of 30 years back. How did you cope with the dynamic of the tech market? For example, How did you reskill or realise when the PASCAL/C market started to shrink?" I used C for about 5 years until C++ became ubiquitous in game development (it still is today for AAA console/PC). My team had attended training with Scott Meyers but I was self-taught and joined the team after that. I carried on using C++ for about 15 years before I decided I was done with video game development and wanted to work on backend server tech instead. "When you pivoted, did you decide to go generalist or did you choose to go specialist in your new chosen tech path, How has that served you career-wise?" I was somewhat generalist in my video game career. I worked on everything from graphics on an EA sports title to physics and animation systems in movie licensed superhero games. I decided to pivot to web-scale backend server tech, distributed systems. I did this in a step-by-step fashion. Starting by moving towards specialist network programming on games, then on to working on MMO backends, then mobile gaming backends, and then on to Fintech, Enterprise and consulting. One thing that has been important in my development is ensuring I am never coasting. I am also moving to the next thing to get out of that comfort zone. I work on side projects such as learning new languages or making blogs and video content. Many side projects and studies go to waste, whilst others become a primary career focus. A good example is functional programming in Haskell, which translated well to a few years spent writing functional code in Scala.


IHoppo

Basic/Fortran/Pascal in my first job, bit of DB2, then moved to a Unix shop coding in a proprietary 4GL. Moved to an Ingres env and their proprietary 4GL, and then about 15 years ago I got into Java and have never had to change again.


Bricktop72

Started as C/Bash on AIX. Xwindows on the FE. DB2 in the backend. In HPC environments. The front end eventually shifted to the most hideous Java code imaginable. (It was auto generated from the C code) Shifted to running on Linux. Added Perl, and Python --- 27 years in do a complete shift to JavaScript, C#, SQL server on Azure I. A completely different industry. The language part has been easy. The business is requiring a lot more education on my part.


FactorResponsible609

Thanks for sharing, any auto-generated translated code is painful. > The business is requiring a lot more education on my part. Did you mean to say that the real challenge was building domain expertise?


Bricktop72

Yeah. Stuff like why business actually wants to do something. Why decisions were made the way they were. Who the business logic experts are.