4 ms·
The advantage (or disadvantage) of getting older: Seeing the younger generations come up with brilliant "new" ideas. New to them, whereas I think "yep, that was
by bradley13 3y ago
The advantage (or disadvantage) of getting older: Seeing the younger generations come up with brilliant "new" ideas. New to them, whereas I think "yep, that was done 40 years ago, and 20 years ago, and now it's new all over again."
Part of the problem is the sheer breadth of IT and software development today. 40 years ago, I felt like I understood nearly everything: I designed processors at the transistor level, programmed from machine code through assembly to Lisp, Prolog, Pascal and other languages. Worked on projects from tiny to huge.
That's just not possible today. There are too many areas of application, too many frameworks and languages. Too many tools and platforms. Any individual developer is going to be in a niche. Your web developer knows nothing of how to write ABAP, your SAP developer has no clue how to do embedded programming for a microcontroller, your real-time embedded programmer knows nothing of databases, your database admin thinks React is something to do with nuclear power plants.
Today, it's all you can do to stay abreast of developments in your own field. There is little time to look for lessons from the past, or across to ideas from other, parallel fields.
- cdelsolar 3y agoAs a former electrical engineer now web app/api/full stack developer I either know or can quickly learn all those things.
- voakbasda 3y agoNot at sufficient depth to go head-to-head with an expert. If you are a Jack of All Trades, you will be Master of None.
- andrewmcwatters 3y agoI disagree with the Jack of all trades, master of none cliché. You can effectively be a master of multiple fields because the true applicable depth of so many of them are completely shallow. There are entire niches in software development that you can dismiss wholesale. Virtually everything in the web that isn't the web standards themselves or from the most popular libraries isn't worth learning because it's just regurgitation. If you know CSS as an applicable professional level, any CSS framework you see is irrelevant. You can pick it up. Etc.
- alexwhb 3y agoI generally agree with this. And so much of modern dev… especially in the app/web dev space is just pattern recognition and hooking up different systems to each other. That’s not to discount its difficulty… but you can be good at several disciplines. I actually think being a generalist (to some degree) can actually be helpful, because it allows you to think in multiple modalities, where as someone who specializes in something is less likely to be able to break out of their thought patterns.
- Izkata 3y ago> I actually think being a generalist (to some degree) can actually be helpful, because it allows you to think in multiple modalities, where as someone who specializes in something is less likely to be able to break out of their thought patterns. GP mentioned the two-part "jack of all trades", but there's a relatively modern third part to it that expresses this sentiment: "A jack of all trades is a master of none, but oftentimes better than a master of one"
- alexwhb 3y ago> but oftentimes better than a master of one I like that. I think that's an accurate statement.
- cdelsolar 3y agoYep I also disagree. I would say I have a mastery of a lot of backend programming, architecture/infra deployment, microcontroller programming, assembly, React + Redux, and at least 3 or 4 other languages I’ve worked in through my career. I’ve had jobs doing data engineering - building and deploying machine learning models at scale, advanced computer vision stuff (before ML became the rage for it), building, designing, and deploying tiny sensors on wind tunnel models, etc etc. I have a couple of open source multiplayer projects with a few thousand MAU each. Now, the one thing I will never master or care to is CSS - the devil himself must have come up with this abomination.
- rjbwork 3y agoFalse dichotomy. I like "T-shaped" engineers. Someone with a breadth of experience that is an expert in a small subset.
- shortwu 3y ago[flagged]
- gregjor 3y agoMaybe true, but I run into very few experts to go head-to-head with. I started programming in 1974, professionally since 1979, and I'm still working, mostly web sites and lots of system admin. I don't know most things at expert level, but I can learn and adapt quickly and start producing right away, because I have decades of experience with analogous or ancestor technologies (like C and C++, SQL, Unix) at least at a very proficient level, and I have lots of business domain expertise. I have worked with true experts. No need to go head-to-head, there's no competition, just a great opportunity to learn. Mostly I have worked with people who have mediocre skills, and narrow skills, who can't adapt to change or come up to speed on new things. Most programmers live in the "expert beginner" zone Erik Dietrich described so well, not actual experts, and I wouldn't worry about going head-to-head with them if that was part of the job. But programming isn't competitive gymnastics, we don't have to perform better than the guy next to us, we only have to satisfy management or customers that usually have no idea what programmers do.
- Izkata 3y ago> because I have decades of experience with analogous or ancestor technologies (like C and C++, SQL, Unix) I think a lot of people underestimate just how much knowledge transfers between systems within the same domain. I have nowhere near your length of experience, but even in just my time I've been able to pick up plenty of languages and frameworks and get going right away because I already learned the underlying concepts when working with other similar systems. No one should be starting from scratch every single time they start something new, and the larger your variety of experience the faster it's going to get each time you start with a new language/framework/system in that domain.
- ThrowawayR2 3y agoThe opposite of the jack of all trades is the one trick pony and the one trick pony always falls onto hard times when their single trick is no longer in fashion.
- galaxyLogic 3y agoThe thing is to produce an app these days you need to have mastery of 3 languages + some frameworks. You need HTML, JavaScript, CSS, and then the frameworks. If you work on a team you can specialize in one of those but when you are learning you really need to use them all yourself. When everything was a command-line application you didn't need to know more than C or Perl or Basic etc. But then you couldn't really do cool user-interfaces, with mouse and events fifty shades of color-gradients.
- bradley13 3y agoI think you do not understand just how much stuff it out there. Just in the web world, can you do React and Angular and NodeJS and Spring? Have you really looked at the CSS specification? That's a career in itself. Moving slightly to mobile apps, what about Jetpack Compose for Android and the equivalent for iPhones? Electron? Or classic programming: How is your SQL, including stored procedures? Note that Oracle is different from Microsoft is different from MySQL. Want to learn ABAP? How about writing a back-end system in Java, with a front-end in JavaFX? I'm just getting started... No, you cannot learn all of this sufficiently to be even remotely productive. You may, like me, be aware of a lot of it. I'm sure you could pick any single new platform or technology, and become productive in it in a few weeks or months. But to be a real generalist, able to do it all? That is simply no longer possible.
- CodeMage 3y ago> Part of the problem is the sheer breadth of IT and software development today. 40 years ago, I felt like I understood nearly everything: I designed processors at the transistor level, programmed from machine code through assembly to Lisp, Prolog, Pascal and other languages. Worked on projects from tiny to huge. The saddest thing about the way this changed is that the barrier to learning is so much lower today, but what do you actually do once you've learned? When I was a kid, there were no programming classes in school and I had to go buy books and magazines to learn how to code in BASIC or assembler or Pascal. But once I've learned a new trick, I could immediately do something with it and feel good about it. It didn't matter it wasn't something spectacular, it didn't matter it wasn't very useful, because it was mine and there weren't 1000 of other things just like it, available to me at a touch of a button. Compare that to what my kid is going through. He wanted to try learning to code, so we signed him up for some classes where he learned some Python. Later, in high school, he took AP CS Principles and they taught him some rudimentary JavaScript. Now, in his junior year, he's taking AP CS A, where they're teaching him Java. Thing is, what can he do with all that? He's surrounded by devices running code. Writing a toy program that fills the screen with "HELLO, I AM COMPUTER" does not feel like you just learned a magical incantation that makes this machine do your bidding. Writing some actually useful code is harder, and it feels pointless, because there's almost always an existing app you can have at a click of a button and it does what you thought of and probably better. Writing useful code that doesn't already exist -- like e.g. your own mod for such-and-such game -- is even harder than that. > Any individual developer is going to be in a niche. Your web developer knows nothing of how to write ABAP, your SAP developer has no clue how to do embedded programming for a microcontroller, your real-time embedded programmer knows nothing of databases, your database admin thinks React is something to do with nuclear power plants. To top off the irony, generalists are not being appreciated or sought much.
- liotier 3y ago> Writing a toy program that fills the screen with "HELLO, I AM COMPUTER" does not feel like you just learned a magical incantation that makes this machine do your bidding Find out what his favourite hobby or favourite game is, then demonstrate a little script... Suddenly the conditional branches and loops don't seem so abstract anymore !
- assimpleaspossi 3y ago>That's just not possible today. There are too many areas of application, too many frameworks and languages. Too many tools and platforms. I find a lot of these tools and frameworks and languages and platforms are attempts to correct perceived problems in the original tools and methods. But these new things have their own issues which someone else will attempt to correct. Then you get your cliques and reddit subs that make fun of you for using X because it's old. My point is that there is no back to basics--no grounding in the fundamentals we grew up with--or should have at least.
- jjice 3y agoThis is a common thing I've read in books and heard from my more experience co workers. My favorite current example is OpenAPI specs for building a client or generating docs. SOAP was another big thing. So was CORBA. We're really good at rebuilding RPCs. Not to say that they don't have their differences and benefits. NextJS always gives me a laugh too. I remember when it was newer in 2019/2020 and people raving about its file based routing and server-side rendering. These new waves sometimes have new benefits to them, and sometimes they don't. I have to imagine that we won't ever seen an end to it, but at least it keeps some exciting new stuff on the table.
- gregjor 3y agoWe call this reinventing the flat tire. In the old days, you would chastise people for reinventing the wheel. Now we beg, “Oh, please, please reinvent the wheel.” -- Alan Kay
- Y_Y 3y ago9 What has been will be again, what has been done will be done again; there is nothing new under the sun. 10 Is there anything of which one can say, “Look! This is something new”? It was here already, long ago; it was here before our time. 11 No one remembers the former generations, and even those yet to come will not be remembered by those who follow them. --- That's from Ecclesiastes 1 (NIV), and it was written at some point between 450BC and 180BC.
- namaria 3y agoWritten before they even knew an entire new continent where eventually people would invent airplanes and personal computers.
- inejge 3y agoYour web developer knows nothing of how to write ABAP, your SAP developer has no clue how to do embedded programming for a microcontroller, your real-time embedded programmer knows nothing of databases, your database admin thinks React is something to do with nuclear power plants. 40 years ago: your physicist knows nothing of how to write RPG, your mainframe developer has no clue how to do embedded programming for a microcontroller, your real-time embedded programmer knows nothing of databases, your database admin wouldn't touch FORTRAN with a ten-foot pole. ... Which is to say, I don't really buy it. Or rather, I don't think that specialization is a recent phenomenon. It is true that the personal computing market consisted of comparatively simpler machines, which allowed for greater breadth of understanding.
- Ferret7446 3y ago> Part of the problem is the sheer breadth of IT and software development today No, the problem is wholly human limitation. All humans start as an ignorant babe and have to both mentally develop and learn everything from scratch. This includes the rebellious teenage years and not listening to the wisdom of their elders (and for the adults around them, how to properly raise and mentor kids). We have been doing this exact dance every dozen years for thousands of years for every single field and every single little task, from how to cook the best bread, the best way to saddle an ox, how to fix a toilet, etc. Learning and discovering, and relearning and rediscovering, ad infinitum.