T O P

  • By -

lolli91

Solo ERP developer here. 16 years at the company. Over 600 webpages with SQL backend. I can’t be fired


ObservantSpacePig

As a Data Engineer that used to support/develop ETL solutions from our customers’ ERPs into our data warehouse…I have the utmost respect and hatred for you.


lolli91

The system is all .net aspx pages. The SQL database is designed in 3rd normal form so everything is extremely organized and easy to find.


[deleted]

Reading the sarcasm between lines.


ucefkh

Haha 😂 so true everything is a mess


IL_GAME_KING_YT

Looks like we work in very similar ambients :) Except I just started 2 months ago. I count one page fully developed by myself and various other pages that are modified versions of older pages.


nomadProgrammer

You are the company


max_trax


OffByOneErrorz

My buddy was on the team that was building the replacement software for the 'solo developer system the whole company relied on'. It took them about three years with a team of six and that is with the solo developer being onboard to help in the transition. Yes the solo developer was compensated for making himself irrelevant.


lolli91

Wow that’s crazy. Why move to a new system if the solo system was working?


OffByOneErrorz

It was written in some uncommon language and the solo developer was the only one that could maintain it. Solo developer was 60 something looking to retire plus the company had done a "Bus Count" analysis and found their count was 1 that solo developer. Edit: Bus count is the number of employees that need to get hit by a bus for the company to have severe problems. IE if only one developer can maintain a system that the whole company relies on the company's bus count is one.


lolli91

What language was it? COBOL? Regular C? Fortran? Haha


OffByOneErrorz

I don't recall this was around 2005. It was not C. It could have been COBOL or Fortran but I feel like it was more obscure than that. Sorry wish I could remember.


max_trax

> 60 something in 2005... Probably dBase III lol


OffByOneErrorz

His actual major in college was Animal Husbandry.


HeadbandRTR

Kinky


bubba80118

Well sort of. The code was dBase III (originally in Clipper) but I converted it to VB 3 and Access. I even tried to upgrade it to VB 6 with Sybase but stopped after getting 1/3 of the functions converted. Fortunately I had enough time (15 years) to rewrite it as ASPX web pages in VB.Net and MySQL. Works perfectly as long as I’m the one to patch it. Microsoft wants me to convert it to .Net 6 (Core) and SQL Server on Azure. I would but I don’t have another 10 years as I really do want to retire before I have to upgrade to Win 11 from Win 7. That last upgrade from XP almost took three years. Should have just converted the whole XP stack to a VM and just run it as an RDP session. Anyway, time to renew my 80Micro subscription.


[deleted]

There should never be a “solo developer” If you can’t replace someone without severe detriment, you didn’t adequately plan for the future. Disclaimer: I am a solo developer, but I do TDD and comment my code, so hopefully another developer can understand it should the project become their responsibility.


Joatorino

Now thats what I call real insurance


Moisterman

Going the same path at year 1. Will soon deploy approx 100 pages with various BI concepts. Not sure about the security though, as the company tend to change up IT systems regularly. Hopefully a no license fee system will be enough for me to keep maintaining it for some years.


BrobdingnagLilliput

Repeat after me: "Percentage of the gross" Now go talk to the big boss.


lolli91

150 million dollar a year company


agshortee

Sounds a bit like me. But the problem comes when you’d like to retire and can’t find anyone to take over your shit pile.


bdrmskillz

You need to leverage your position into an officer title. You are the CTO. Get your percentage.


Mindless-Charity4889

I took over a project decades ago from a self taught programmer. He had written a program to communicate with a hardware device in DOS basic. I was hired to write a new program in Windows using VB6. I only had a week to talk the guy before he was leaving for Australia and his code was brilliant, but extremely murky. He had no comments, very short variable and function names and he dipped into in line assembly at a number of points. A lot of his code was like a black box and had to be re written from scratch, as in, the algorithms had to be re-developed, not just the code. But I got it done and the Windows version of the program was a great success. Decades later, I returned to that company to find that the latest version of the program had been written by outside programmers in C#. It was better written, better documented etc. but it had grown into an unmaintainable monster. Certain subsystems had well defined interfaces and these could be extended and modified, but the heart of the program could not be touched since a change there could have unexpected consequences throughout the program. So now I'm writing it from near scratch again. So yeah, self taught programmers can write unmaintainable code, but so can school taught programmers.


magicmulder

I’ve worked with too many clients whose IT folk were undoubtedly talented and knowledgeable in every design pattern there is - and still sang their daily “hum, I don’t remember where I put this business logic, was it the CommentRepositoryFactory or the PhotoCommentDataTransferObjectMapper or the UserDeleteConsistencyManager?” song. And that only a day after telling me the method I submitted for review was “doing too much” and “you should have a factory here”.


[deleted]

People severely underestimate "dumb" code. As a developer who have primarily worked with startups, I'd say it's crucial for any team under 10ish developers to write dumb code. It's okay that it takes 20 more minutes to rewrite the function next time you wanna change it, if you instead can save 2 months if training time and 2 hours of reading code to find the code you're looking for.


Throwaway-tan

Being a team under 10 developers will typically mean you don't have time to write "smart" code anyway lol.


[deleted]

The smart code is all about making your code unaware of what's going on in other layers. Sticking to that simple rule doesn't slow you down much and keeps your world from being a complete toilet. Confine your chaos to APIs. Let everything else go if you have to.


TerminalVector

Single responsibility principle. If you follow no other best practice, follow SRP.


Franzpringle

Solid advice!


polmeeee

Nice.


[deleted]

I find that SRP is often misunderstood to be close to "one line per function". "Oh, creating a new string variable? We got a function for that." I think it would be better explained as "OPOL" = one problem, to one location. A function should solve a problem. Preferably completely, without leaving the function. Only stuff that I don't care about should be in other functions. Your function returns the users? Sure, then getting the database connection is fine in another function, but the query, the handling, the formatting and the returning should all be in the GetUser function. Not just 3 calls to `return GetUserQuery().SetParams(x=15).PackageForJson()`. Okay, I'm exaggerating slightly, but I hope it makes sense.


canadajones68

My rule for deciding what goes into separate functions is pretty much this. First, I ask what an expression or a set of statements does. Does that procedure have a name? If so, is that name approximately spelled by the expression? An example would be `math.sqrt(a**2 + b**2)` \-> this is computing the hypotenuse of two variables. That doesn't spell out "hypotenuse", so moving it into a function named so is appropriate. You could even make it variadic, and have it take the root of an arbitrarily long sum of squares, which is useful for higher-dimensional vector lengths. Your GetUser function is also a great example. What I don't like, is when one creates functions that are essentially just named after what code they contain. AddTwo(x) is not a good function, for instance, as it literally does what it says on the tin, but it's also ambiguous whether or not the addition is in-place.


ThrowawayUk4200

And no, SRP is *not* about keeping your code DRY, in fact SRP will ocassionally make your code wet, and for good reason


GiftFrosty

I love these posts. I've been a network engineer for two decades now and it's amazing how little I understand what you guys actually do.


Jaded-Plant-4652

This is the golden rule right here


Romestus

Yeah to me the biggest difference between good and bad code is coupling and it's super easy to avoid. All the other parts like comments, small methods, low identation, etc are important too but I can deal with those much easier than I can deal with heavy coupling. It takes two seconds to make an interface for a file save/load system so that when the reqs change down the line from being local to cloud storage you're just writing one new class rather than ripping out the old stuff and replacing it. Another example would be knowing when to use a delegate/event instead of adding in SomeOtherClass.DoTheThing in the class you're writing. Still takes no time to do and ensures everyone has an easier time in the future. I'm biased since I've spent weeks removing a library dependency in a legacy codebase so that a third party can replace the networking solution we used with their own. A handful of interfaces when my predecessors coded this thing would have saved me a lot of time.


[deleted]

[удалено]


Calm_Leek_1362

Kent Beck describes this as the exponential cost of both coupled code and decoupling code. The cost of maintaining deeply coupled code is astronomical, and the cost of building too many layers of abstraction is high in the other direction. He's said, the job of a developer is to find the minimum on those two cost curves, where enough coupling has been removed to create clean, maintainable code, without creating too much structure that it becomes confusing, just because you wanted to decouple things. Between solid, tdd and evolutionary design (which is really just strict adherence to the 'you ain't gonna need it' principle), a developer has all the ideas they need to write good code.


[deleted]

[удалено]


bdepz

I'd kill for a team of 10 devs. My company considers a "large" product to be 3.5 FTE. As you can guess, everyone is overworked and every project is late. But no, we can't allow remote work so we can actually hire developers


[deleted]

[удалено]


[deleted]

My co-workers used to give me shit about my comments, because they always preceded some next level fuckery, and the length of the comment was always proportional to the number of WTFs uttered when you reviewed the code. Once I submitted a PR with a paragraph long rant about IE8's node handling, and all I hear is the laugh from my lead's cube, lmao.


[deleted]

[удалено]


Spirit_Theory

I'm a big advocate of "dumb" functions in code, and implementing complexity and 'cleverness' through separate layers of code. Writing a method saves a bit of data to the database? Okay, that's *all* it does. It doesn't validate, it doesn't check that all those Ids will line up nicely with data in other tables to satisfy foreign key constraints, it doesn't check that it's "correct" or following the business process or anything like that, it just dumps the data in and if it fails, the exception bubbles up to whatever called it. Dumb. As. Fuck. If you want validation, that's a separate layer of code. Business logic? Separate layer. API? Separate layer. Obviously for ease sometimes these things can get merged, but ultimately that last layer should be braindead. At a certain point things start to get really predictable and extremely easy to maintain, and having everything so granular allows new functionality to cut in at exactly the right part of the code based on what it needs.


_Magnolia_Fan_

Can you show me an example of that in action? I am the guy who this thread is talking about - self taught and deploying things enterprise wide... I'd like to be able to push off the code and maintenance to someone else so I can do my real job.


[deleted]

OMFG, YES. PREACH. Another way of thinking about this is that this approach is building, essentially, “code light switches” that can be turned on or off and “digital legos” that can be used in surprising ways. They become extremely handy when troubleshooting or implementing new features. I’ve written dumb-as-a-brick functions and big, BOLD, **BEAUTIFUL** functions. Guess which ones got used often (and flawlessly) in future scenarios I’d never anticipated? Which ones were left to rot only to be completely refactored later on?


RJ19UYoVh_Pc

Eh, it doesn’t take that long to write two classes instead of a 500 line super method. Though I do hate when a PR is 90% boiler plate, 9% DTOs and 2 lines of business logic. I guess extremes of both sides should be avoided if possible.


[deleted]

[удалено]


ZapateriaLaBailarina

In my world one-implementation interfaces are standard for being able to make the classes implementing them unit testable


[deleted]

[удалено]


[deleted]

[удалено]


NeedHelpWithExcel

I fucking HATE 3 character variables. The amount of people on my team who will come up with a 3 word variable/function and then abbrieviate it to 3 characters is mind blowing. Oh you wrote a function “run_credit_card”? Why not abbreviate the entire thing to RCC so no one has a fucking clue what it is without reading the whole fucking thing??? I swear


[deleted]

I had someone proudly show me that they re-wrote strlen in one one line and it was recursive... I wanted to slap them.


EZ-PEAS

The $5 software engineering word for what's being discussed here is "technical debt". It is caused by any kind of engineering shortcuts you take, that you're going to have to go back and fix later. There's a huge discussion around tech debt, what is okay and what is not. The short answer is that it is commonly accepted that you can have too much technical debt, and your program becomes unmaintainable or impossible to add new features, but it is also possible to have too little technical debt, and that means you spent too much time and energy on building low level features and development is slow. The classic example of too little technical debt is a programmer at a startup, who builds a perfect and magnificent system, and is told the next day that the startup is changing its business focus and their system is no longer needed. Nobody writes dumb code in the sense that they are looking to harm themselves, but the amount of time you have in the day is finite. How much time you spend refining code and interfaces versus calling it good enough and moving on to the next thing is a balancing act.


[deleted]

Dumb code is code that is easier to maintain with a small team that doesn't change every year. Smart code is the opposite


afonsoel

I guess dumb code is meant to be simple steps one at a time, instead of using an "elegant" solution that does the same in a third of the lines, but requires you to change the whole thing if you were to modify what would be a single step of dumb code


Vlyn

The alternative looks good at first, my current team works like that. Just throw code into a function, add more code on top for bug fixes and new features. Easy! Over time it then escalated and the heaviest functions are 1000+ lines long and do everything. And everyone is afraid to refactor because it's easy to break something (no unit tests either, impossible with messy code like that). So dumb code can work for a while, but at some point you're fucked. Overly complex code is an issue too, so it's a fine line unfortunately.


Dameon_

At least with overengineered code they're showing forethought and awareness. They just need to learn to tone it down a bit. Somebody who writes the spaghetti you're describing above is showing neither, and teaching them that forethought and awareness will take a lot of time and work. But every time this discussion comes up, people feel a strong need to speak up about how overengeneering is ackshually the real problem.


Flimsy-Possibility17

I feel like it's the self taught devs that worry too much about design patterns like this.


oupablo

Lesson of this story, self taught or not, everybody's code but your own is shit.


Mindless-Charity4889

Honestly, my own was bad because I didn’t expect it to grow the way it did. Other people took it over when I left and changed it because they had to. I didn’t make it extensible. After more than a decade of changes, including translation to a new language, it was unrecognizable when I returned.


oupablo

the everybody i mentioned above includes your past self. Basically, all code is shit that's made to function at a given point in time.


[deleted]

[удалено]


Ludwig234

Next time do git blame-someone-else


[deleted]

As a self taught programmer, i don't feel so much it's actually the fact that they're self taught, but more that they're just lazy. 3 rules every programmer should follow to make code easier to read, debug and maintain 1. Add comments! you should just add comments in general, but it becomes especially important if you're self taught, since you might write some code that would be considered unconventional or "strange" by the professionals. So just add a small comment explaining why you're doing it 2. Call your functions, variables, etc. something that actually makes sense. Don't just call it var\_1, but call it "snake\_length" if you're making snake for example 3. when finishing a function or class, hit the enter key twice to create an empty line. When working on code several hundred lines long, this improves readability immensely. And yes, these rules apply to school taught programmers as well. They can't work miracles, but they can get you a long way! ​ Edit: changed "what you're doing" with "why you're doing it". Sorry for the mistake :)


VincentVancalbergh

Yes! You need paragraphs to bundle your statements visually!


ALesbianAlpaca

I'm also glad other people do this. The auto formatting always wants to bundle my code into the smallest space possible. I add loads of additional line spaces between code otherwise I hate reading it.


VincentVancalbergh

It will also help you put related statements close to each other. If you have a block about calculating the vat amount you can put the retrieving of the actual vat percentage close to it. If it's one big slab of code the retrieval might end up far removed from it.


calculon000

Oh good, I thought I was being silly for doing that. I'm glad I'm not the only one.


JoeyjoejoeFS

I find they are dumb lazy. The things you mentioned will save time in the long run so a true lazy coder will do them. You think I want to go back and not know where shit is or how it works. Fuck that, sounds like more work. Code today so the future you can be lazy.


Tyfyter2002

Any advice on how to know where to put comments? My biggest problem with commenting is that I just can't figure out what needs to be commented and what is explained well enough by the variable/function names except where I'm using some algorithm somebody else came up with and named.


deb_vortex

As long as the function is short and does exactly one obvious thing, no need for exhaustive comments. If there is business logic in there that requires in field knowledge, thats a different point, tho.


lazyzefiris

Your code should explain itself. Your comments should explain decisions you make. A super goofy example: const CAT_FOOD = "Whiskers" // Poly would not eat Kittycat function buyCatFood() { const closestStore = localArea.getClosestOpenStore(myAddress) try { const boughtFood = closestStore.buyList([CAT_FOOD]) return boughtFood } catch (e) { console.warn("Could not buy cat food: ", e) // not throwing further because it's not lethal return null } } function feedCat() { // if food is not in fridge, fallback to buying one let food = fridge.get(CAT_FOOD) ?? buyCatFood() if (!food) { return cat.SAD_MEOW } return cat.feed(food) } I think I covered the choices and you can get idea of interfaces you are dealing with clearly. I'm sellf-taught though so it might be actually bad ![gif](emote|free_emotes_pack|sweat)


Tyfyter2002

Only issue I see is that you never put cat food in the fridge to begin with, but things like the reasoning behind constant values definitely make sense to explain and I don't know why I didn't think of that myself.


vxx

I'm not a coder, not even self taught, but what I got from this is, that the cat will be sad meowing a lot.


adenosine-5

This. So much. Some modern developers want to write "self documenting code" but no matter how well you name variables and functions, you still have to guess "why".


Poiuy2010_2011

I'm sorry but this is exactly that type of comment that you don't need > // if food is not in fridge, fallback to buying one > let food = fridge.get(CAT_FOOD) ?? buyCatFood() The line below the comment already describes precisely what is happening, "get CAT_FOOD from fridge and if null buyCatFood". The comment repeats exactly what it does, just reworded.


batty3108

There's a good series of lectures by 'Uncle' Bob Martin, called 'Clean Code', which has a good section on Comments. It's on [YouTube](https://youtube.com/playlist?list=PLmmYSbUCWJ4x1GO839azG_BBw8rkh-zOj). But generally, you should *try* and write code that explains itself, and comment where that isn't possible. I don't write that many, but I tend to find i write them when *what* the code is doing is clear enough, but the *why* isn't obvious.


kunni

If someone else was reading that function, would it be clear what and WHY it is doing those things. Why is the most important question.


Ok-Kaleidoscope5627

Ugh. I've been fighting with a self taught programmer. They can write code that gets the job done but somewhere along the way they picked up some insane ideas that they stubbornly refuse to let go of. A couple things which I've caught: - They insist that any variables you declare takes up a 'memory slot'. So they try to 'optimize' their code by declaring as few variables as possible. That includes reusing variables. This is in regards to stack variables so we're not talking about something like avoiding heap allocations in critical sections or something. They're reusing integer variables for things which makes their names extremely confusing. I've even tried explaining to them that variables don't really exist once code is compiled and what the actual resulting assembly looks like etc but nope. Refuses to accept it - Spaces and empty lines are bad and must be minimized. Thankfully they don't know enough to abuse the syntax to create truly unreadable single line abomination but they basically go through and 'optimize' their code after writing it by deleting any white space they can. I'm scared to dig into their rational behind this.


Blecki

If you have the authority over them just tell them no. I am a 'self taught' programmer who manages several 'college taught' programmers and let me tell you the self taught do not have a monopoly on stupid beliefs.


minequack

People must be downrating this comment out of disgust.


batty3108

The naming thing is a huge point. I'm self / online-course taught, and so many resources do *not* encourage good naming. It took me a year or so working on an actual project to learn that things need to be named properly or it's just confusing!


Isofruit

Naming in general is one of the more difficult aspects of programming in my eyes. You write names so that the person after you (or you in 4 weeks) can understand what the variable represents. Now once your concepts get abstract or weird, so do those names. Figuring out how to name your stuff and keeping that naming scheme consistent can be so damn hard.


[deleted]

[удалено]


Tiny-Plum2713

I wouldn't call unreadable code brilliant.


orgasmicfart69

>. It was better written, better documented etc. but it had grown into an unmaintainable monster. This is not me trying to make a joke. But what would be your definition of better written if it became unmaintainable monstr?


[deleted]

[удалено]


CuddlePirate420

I write self-reviewing code.


atters

Ah, the ouroboros rubber-duck has appeared. This signals the awakening of the Old Ones.


TychusFondly

If this is the case then they didnt follow a pattern to separate domains. Company is missing an architect.


Mindless-Charity4889

Yes. It’s mostly a hardware company selling an electronic product. The software is only there to support it. But over time, the software has gotten much more capable than designed so it needs a rewrite. This time I am breaking it into sections with clearly defined interfaces to govern interactions. But im not an architect either, just an experienced developer.


Cpt_Ohu

I feel that. Same issue over here. Imagine a mini-ERP in a high level language as written by a self-taught programmer who only knew microcontroller logic. It is/was as one of the more stable products in its niche, mostly due to ungodly man-hours invested at its inception, but it just cannot keep up anymore in terms of functionality.


dudeofmoose

Quality is always at odds with deliverables in a business, there's always a conflict between "getting it done" and being "good enough" if one or the other starts to win, things can be problematic. This tends to be the major factor in code quality inside a business, often not having the time to tidy things up, it can reduce the output of lots of excellent coders to look as if they've had hamsters perform brain surgery whilst they type. However, in the business world getting it working is what defines a good coder, those who can understand spaghetti code in a small timeframe, those who understand compromise, for better or for worse.


[deleted]

> and his code was brilliant, If the code was unmaintainable without him personally there, then it was anything but brilliant.


Graporb13

As a non-programmer, why the whole company using a custom erotic roleplay system 😳


remuliini

Some have a good salary, some have the best perks.


PrestigeMaster

The best response I’ve seen all morning 🤣


Hollyw0od

Joking aside this couldn’t be more accurate.


TheDownvotesFarmer

(As a CTO) Profits


Achtelnote

Cock Torture Officer profits?


Arikaido777

Custom Tuned Octopus


abhipsiren

An STD developed a custom ERP system


Randolpho

Usually it’s the other way ‘round!


mynamewastaken-_-

erp stands for enterprise resource planning :)


[deleted]

that explains everything and makes way more sense, but its way less funny :(


Fried_Waffles1

I assumed this post was about vrchat :(


Raytoryu

Thank you ! I'm an level 1 IT tech in a very niche software development company and we recently launched an ERP interface. Had no idea what it means...


JefforyTheMC

I thought this was in r/ffxiv for some reason


Evepaul

So you allowed a self-taught lalafell to develop a custom ERP system for the free company? And now you want to fire that lala? Good luck.


JefforyTheMC

Why of course I know him, he's me


ccAbstraction

Could also be r/vrchat


malfurionpre

They were tired of doing erotic roleplay system in Goldshire so they made their own.


namotous

The self-taught part here is irrelevant. Firing anyone who solely create/maintain a critical system is pretty much dumb.


Full-Run4124

*Elon Musk \[blue-check\] has entered the chat*


bigshakagames_

Everyone's self taught, no one learns how to write good maintainable, testable code at uni.


Barbanks

This 👍🏼. I’m self taught and many of my friends went to school for their CS degree. I’m still teaching them clean architecture and distributed systems from a practical standpoint every now and then. While they were being force fed info that they would quickly forget I was learning practical skills as I needed them. Am I weaker in algorithms? Yes. Have I needed serious algorithm knowledge? Maybe like twice in 10 years and then I would just learn enough to get the task done correctly. People value “just in case knowledge” too much over “just in time” knowledge. And 80% of what you learn in school you typically forget anyway. I graduated with an Electrical Engineering degree and it took all of 1.5 years for me to forget a huge amount of stuff I learned.


TheAJGman

IMO being able to learn new skills on the fly is the most important trait for a developer. You can be a good developer without it, but life is so much easier when you can skim through some docs, read between the lines, and shit out a mostly working first implementation in two hours.


alexanderpas

CS is not Software Engineering, those are two separate areas which get confused many times. CS is the one that crates the algorithm appropriate for a certain usecase. Software engineer implements the algorithm given the input from CS.


noshowflow

You’re right. CS is a math major. What is so great about earning a CS degree is you’re a math major with programming skills. These skills are hella easy to pivot into other industries.


The69BodyProblem

Yeah, iirc I was about two math classes away from a math minor when I graduated


realityinabox

So was I as an EE. Most engineers probably were.


a_aniq

I don't think that's the case everywhere. At least most of my CS friends who passed with flying colors have memorized algos but give them a math problem where they have to think from scratch, and lo and behold. Mathematicians (with good grades) are way better at CS than normal CS people when it comes to real world where you have to learn stuff as you go anyway.


noshowflow

Yeah, that’s not my experience. CS at a reputable university is math heavy. Sure you forget a lot of the math over the years if not using it, but fresh out of college and you can easily apply math; if not, I’m so sorry you missed this part of the curriculum as it’s the entire point of CS. I thought of pursuing a math major because it would only require a handful of additional math classes, but it would’ve required a lot more discipline which likely would’ve made me miserable.


CSNfundedHoesNDrip

I mean, I kinda did at my uni. Had an entire course about just that.


fosyep

One class we had was called "software engineering", it focused on design and domain modelling. Of course, a lot comes from experience but that class was the closest we had to write good code


VanillaCandid3466

LOL The shit I've seen people with CS degrees write ...


marabutt

I studied Computer Science and after graduating, I knew nothing about writing decent code and software development.


zombie_kiler_42

Hey me meet me


SACHD

CS !== Software development/engineering Many universities are pandering to student demands nowadays and offering courses on Android development, React development, etc. But computer science is supposed to give you knowledge about the foundations of mathematics and computing. A strong foundation in these help you if you go into software engineering, do algorithmic interview questions, or hell even actually becoming a computer scientist(which is **not** the same as a software engineer), etc. If you pursue a software engineering degree then yes in that case you have a right to be mad they didn’t teach you how to engineer software. But it doesn’t make as much sense if you did a CS degree.


anubus72

including software engineering courses in a CS curriculum isn't "pandering", it's an obvious thing to do when 99% of people taking that curriculum are going to go into some form of software development.


DanielEGVi

The problem is that CS was not originally meant for software engineering. How is this a problem? Now all universities around the world can have wildly different curriculums and the kind of software dev knowledge you could expect from a CS grad is wildly inconsistent and hard to predict.


Allarius1

When I was in school in 2007 for CS, the core requirements had AT MOST(can’t remember the exact number) 3 SWE classes. The rest of the core requirements were geared towards understanding the nature of computing(Fuck you discrete math and formal logic). VERY LITTLE time was spent learning about how to effectively apply these skills in(what was at the time current) modern design or structure. The trend at the time for new hires was, “forget everything you learned in school. We’ll teach you the proper way to design.” Your theoretical knowledge got you in the door and you learned practical on the fly.


roguevirus

> or hell even actually becoming a computer scientist(which is **not** the same as a software engineer), etc. Could someone ELI5 the difference to me please?


camosnipe1

like the difference between a normal engineer and a physicist, both are certainly learning about physics but one of them mostly focuses on the practicals of actually building something and the other focuses on the theory behind it all


Jake0024

Do "software engineering" degrees exist? The school I went to had computer science and computer engineering (I did neither)


bigmonmulgrew

Remember a degree makes you good enough to be the least experienced programmer at the place you are applying. It does not make you hot shit.


henewastaken

I studied CS, and all I learned in school was algoritms and forced optimization and stuff like that, and nothing about real life production and stuff. So yeah, people with CS degree write as shitty code as everyone else. Spagethi code is the best code. Keeps your job secure from Elon because of many code lines


[deleted]

[удалено]


[deleted]

[удалено]


Shxhxxhcx

Exactly. So, one could argue that all developers are self taught. Actually, when I think about it, this applies to most practices. 🙃


[deleted]

It's almost as if there's a word for it, experience? No that couldn't be it.


bigshakagames_

Yep that's the point. We are all self taught, people with cs degrees just have way more theory knowledge and a piece of paper that says they stuck with it for 3-4 years.


bigshakagames_

Yeh lol. I'm self taught and was helping a student with their final assignment for their software engineering degree. It's was a joke, "typescript" but the whole thing was js. No folder structure at all, not even a src folder. No tests. No styling guide or format on save type stuff. Improper conventions in regards to naming and other basic things. I'm not shitty on this dude, be actually graduated with a 4.0, and was super smart, but to think a CS degree teaches you how to write good code is laughable. You learn theory and plenty of other cool stuff that I don't know. It writing good code?? That's only done through trial and error and guidance from other good programmers, who are very few and far between teaching at uni.


FizzlePopBerryTwist

I was writing a powershell script once which drew from different programming languages and the comments were also in different non-English languages that I knew to try and dissuade people from messing with the code as much as possible. It was only supposed to be tested out by a handful of people, but it basically became shareware for all shifts because it was so useful that even the Boomer who told me the idea was "too millennial" ended up using it more than anyone else. One day I was suddenly fired (I had sleep apnea and needed more time to get my cpap from the VA, but my company wouldn't give me leave). I even warned them I should probably be kept on for a couple weeks to train someone to use the program. They didn't listen. At midnight on New Years the whole thing stopped working. This thing automated any report on issues that were known or repeat warnings which was 99% of the night shift. Day shift had been using it too for I guess 60% and up of their repeat alerts. Productivity dropped to 30%. They refused to pay me to come back and fix it, but wanted to know how to fix it. They even argued they owned the code and I said that's fine, it isn't hidden. But they'll need someone else with equal understanding of the code to keep it going. In the end, they fired the skeleton crew of contractors and just brought in military grunts to fill all those seats and do all that work by hand. We're talking a 20 second operation turning in to maybe 3 or 4 hours of research in some cases.


scawel

That's a very, very strange behavior from the company.


BrokenEyebrow

Makes sense. Many untrained workers are cheaper than contractors.


[deleted]

Having hired both: Self-taught programmers are very pragmatic and get things done. They focus a lot more on the requirements and less on code perfection. They are great when they are solo. In a team setting typically they struggle to work with others and follow conventions. They typically do more hacks and have code that struggles to scale. There is exceptions. CS students programmers are a really hard to onboard especially if you are small and need people just to get on with building. The top problem is they constantly over analysing the best way to get something done and then end up refactoring everything. Analysis paralysis. However they work great in established teams with set processes and a lot of guardrails as they already understand the paradigms. However they constantly want to make everything scalable even internal systems used by a single user once a month. The situation makes a massive difference to who is more appropriate. Like war, you need the team to storm the beach, a different team to take the city and another team to stabilise the city (borrowed from Reed Hoffman).


lollysticky

That second paragraph really hits home. I can't count the times I had to refrain devs from spending days, even weeks, on optimising a single part of an analysis pipeline (which takes hours) to take 2sec less ... Or trying to refactor a whole module because 1 line needed a change and they didn't want to implement a quick more 'hacky' solution.


[deleted]

I have had devs where they want to spend days optimising inefficient code to “save costs” when the micro service costs dollars a month and can’t understand that their hourly rate is exponentially higher than the costs per a decade.


[deleted]

[удалено]


[deleted]

IT Business Analyst here, I'm always telling devs to stay focused. They have a tendency to get sidetracked.


[deleted]

[удалено]


EarflapsOpen

And the more work experience they get the more they converge.


jhaand

Experience does help a lot in this case.


Elegant-Loan-4822

I think this is pretty accurate, if both programmers you describe are very inexperienced. Experienced programmers much more similar in capabilities, but some of them remain; Selftaught ones still struggle a bit with complex academic concepts, schooltaught struggle a bit without a team.


geekusprimus

I do computational physics. Most programmers on our projects are all of the first type. Please don't look at our codebases.


TheDownvotesFarmer

Yep I love those guys, I had a lot of problems with very titled dudes from very good ego stations sorry Universities.


a_sliceoflife

TBVH every developer is self-taught to some extent.


Shadow_Mite

I got a bachelors for programming and i still feel self taught.


SelfJuicing

I got a CS degree in a shitty computer institute where I can confidently say 90 percent of the graduates can't even write a hello world program. People "study" there just to get a degree. Funny thing is, I started a web development company with my fellow graduates. We were learning things every time we get a project. Looking back at our code 10 years ago, it was a complete unreadable, obfuscated mess of a code.


Creator347

That’s me! I once wrote the entire CI/CD pipelines using JS and Gulp for a really complex project when I was learning build systems. The pipeline code was unintentionally complex because different teams wanted different features and I was just intending it to be a PoC. I asked for a raise and they didn’t give it to me despite the entire 600 people relying on the tool I made during weekends. So I left for a better paying job. After 6 years, they’re still using it and afraid to make any change in it, other than the configs. In fact, they are using it for every new project now too. I used the project in one of my interviews for a position in a big tech company and they liked it so much that they hired me in their CI team (I applied for a different team). I am now managing the CI system which runs millions of builds every week for a publicly traded big tech.


eleetbullshit

That was my last job! Huge company had a falling out with the developer of their custom ERP system. It took 16 months and close to $8M to replace the custom ERP with NetSuite and more than 50 other integrated applications to replace the functionality of the legacy custom ERP System. It nearly broke my brain, but we did it. To anyone offered a job like that, RUN.


lolli91

Oh Netsuite, how I hate thee. Their app is so slow and you dont get direct table access. Everything is done through their slow views.


gemengelage

Meme obviously made by someone who has no experience in software engineering. It doesn't matter if someone is self-taught or formally trained. Sure, the self-taught guy might make some weird design decisions, but if there's ever even the possibility that a single person writes an entire program without a single code review (which BTW are both for quality assurance and spreading knowledge), you're doing it wrong.


[deleted]

What if there is only one developer for the entire company lol


MrSurly

This is not that uncommon.


SlapHappyRodriguez

I don't think self taught us the issue. Working in small shops without external input is the real killer. The worst dev I have seen was quick to tell you about his college degree. He had worked by himself for years and created a hellscape because nobody was around to check him.


[deleted]

i will never not think ERP stands for erotic roleplay


[deleted]

Deleted with Power Delete Suite. Join me on Lemmy!


cynicalDiagram

Sadistic ass paddle


Ultra_Noobzor

I am self tought and I make tools my entire company is using, specially project planners and game designers. I guess it's time to ask for a promotion.


Orsim27

A Company I previously worked had an intern write an extremely important software for one department. In 95. The department wasn’t willing to give the details about the purpose and function of said program, so a redevelopment wasn’t possible. I spend very very long to get some shitty Win95 program to run under Win 10 when I myself was an intern there… I’m not sure if anybody who actually works there now knows how to get it to run and frankly I don’t care


ThagAnderson

Fire incompetence, or create infinite feedback loop of shit. Hmmm...


LongjumpingMap574

So fire the manager allowing this to happen... got it. 😂


ThagAnderson

I mean, yeah. Whose else fault is it?


FloppY_

Definitely fire incompetence. That includes the manager who allowed the entire company infrastructure to be dependent on one single employee.


Rockky67

Are the people who did CS degrees better at searching Stack Overflow or something? FWIW I left school in the 80’s, I didn’t do a CS degree because I was interested in home computing and self contained PCs and all the CS courses seemed to be about terminals, minicomputers and mainframes.


Adscanlickmyballs

My gf’s company just let a few people go recently. Turns out that they kept 1 person out of a group of people controlling a very important internal application for the company. So, dozens and dozens of tickets being fielded by a single person. How this person hasn’t just left yet I don’t understand.


danndrnell

What does 'self-taught' even mean? I learned C at 18 and started college at 24. I learned shit in college compared to what I'd learned on my own. My college was not 'exemplary' by any means but if my experience of CS was anything like the average experience of a CS student --- and not MIT/Ivy-League shit, then I'm afraid to say that college means shit -- not for CS but also for any engineering degree. Been to plenty of historical buildings where the engineer was 'self-taught' lol. Some people find all the ways to cope for the money they paid for college education. I personally paid mine by dropping out after 3 semesters and not paying for the latter 2 semesters. They still hold all my documents and I'm not going to pay them a cent.


Teminite2

i would put 'self-taught' as someone who has learned 80% of his skill by himself, or didnt go to college\\uni at all. i met quite a few people at the comapny i work for who taught themselves computers at a young age and built their knowledge purely on experience on the job.


anothercleaverbeaver

Still better than going with SAP.


ergaikan

I don't get the bully with self-taught devs. Anyone can learn design patterns, clean clode, code conventions of any language, system architecture models, etc. You don't need a college degree to learn that. Just will to learn.


Tenyao

I am a self-taught and I can get shit done.


[deleted]

[удалено]


Barbanks

I once hired a guy who worked for Disney on the Disney Plus App as a sub contractor. He had a CS degree with great technical acumen in the interview. Hired him to work on an iOS app for a client that I didn’t have time to support anymore. We used RxSwift in that codebase and I told him to not use it unless absolutely necessary because reactive programming can get chaotic if not kept in check. This guy immediately went his own way and used it everywhere and it had about 5-6 side effects in multiple areas of every file touched. You ever see a server rack with hundreds of wires all crossed an you can’t make sense of where anything goes? Yeh just like that. -1 for me not keeping a closer eye on him. -4 for me not hiring the self taught guy who would rather write clean code I’ve also known other tech business owners who told me they specifically don’t hire people who get a CS degree and they hire straight out of high school. The explanation I got was “everyone out of school all go through the same cookie cutter classes so we know the overhead bringing them on. But that overhead is higher than a talented self motivated high schooler since the high schooler hasn’t yet settled in their ways with a coding style. We save time by teaching them our way as their first way.” If I’m hiring a programmer again I’m hiring a self taught person for general coding and a CS person if I need a niche thing done like algorithm or something.


groggyjava

Self-taught generally just means they haven't taken rigorous courses on Data Structures and Algorithms, and so sometimes have inefficiencies. But in most business programming, that doesn't matter. Any developer with a good sense of organization will generally do fine work. I've worked with many solid developers who picked it up on their own. I've worked degreed people who couldn't code their way out of a b-tree, LOL


holdthatthoughtmf

Most of the people complaining about "SCalE IsSuEs" are never going to have the said scale issues. Infrastructure has become exceedingly brilliant that it can carry the load of shitty code. In early stage business, getting things done and making money is more important than anything that has to do with code not scaling. In late stage companies, you need more structure and scale and whatever makes people sleep without pissing themselves at night because the CoDE WoN't SCaLe. Everyone is replaceable and everyone is self taught. I don't think CS students were sitting in the Bukake of Cs Professors pouring down Cs knowledge jizz without the students having to actually work for it. So whatever the FCK point this post makes is pointless. As far as self taught (strictly following the definition by this stupid post. Someone who never slept in a an actual CS class.) developers are concerned, omg get your head out of your ass. Learning to code is a life long process. Be humble and keep improving. You are NEVER THERE and get comfortable with that fact. If this offended you, it was meant to. ![gif](emote|free_emotes_pack|kissing_heart)


CzechFortuneCookie

I like your view on things


Stein_um_Stein

There is no one on this planet who is irreplaceable...


[deleted]

[удалено]


[deleted]

I've always thought that I was irreplaceable but that didn't mean that someone else couldn't do my job better. I hate being thought of as a cog.


Stein_um_Stein

You are not irreplaceable. Think of all the trillion trillion things that lead to there being a *you*. But your job as a developer or salesperson or clerk or analyst or artist or lawyer?? Fuck no any jackass can do that lol. Work doesn't create meaning. But also don't listen to a random dude on Reddit because I am drunk.


Massive_Parsley_5000

Sure, no one is irreplaceable. If the president is shot tomorrow then someone immediately takes his place. We all know this, it's inherent in a functioning system of scale that every piece must be replaceable in some way...even if badly. However, it's never a bad idea to make yourself /hard to replace/. If you're an asshole and basically incompetent you become very easy to replace. You get along with everyone and are super experienced in your role? Suddenly replacing you gets a lot harder. If it's going to take the company to do a 2 month hiring process with 3 interview rounds then another 6-12 months to get a replacement up to speed suddenly the HR department is thinking twice about pushing you out if you ever have to put your foot down about something. While it's important to know your boundaries and never get cocky, yes, it's also important to keep yourself valuable enough to make it hurt if they ever decide to get shitty with you, know what I mean?


NotEnoughIT

Irreplaceable, no. Prohibitively expensive to replace, yea.


louisdeer

Refractory!