Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple APILearn More
Search - "wk233"
To be a good developer, you must thrive in chaos, and have an insatiable desire to turn it into order.
All user input, both work tasks and actual application input, is pure fucking chaos.
The only way to turn that input into anything usable, is to interpret, structure and categorize it, to describe the rules for transformation as adequately as you can.
Sometimes companies create semi-helpful roles to assist you with this process. Often, these people are so unaware of the delicacy of the existing chaos, that any decision they make just ripples out in waves leaving nearly irreparable confusion and destruction in its path.
So applications themselves also slowly wear down into chaos under pressure of chaotic steak-holders which never seem to be able to choose between peppercorn or bernaise sauce for their steaks.
Features are added, data is migrated between formats, rules become unclear. Is ketchup even fucking valid, as a steak sauce?
The only way to preserve an application long term, is refactoring chaos into order.
But... the ocean of chaos will never end.
You must learn to swim in it.
All you can hope to do is create little pools of clarity where new creative ideas can freely spawn.
Ideas which will no doubt end up polluting their own environment, but that's a problem for tomorrow.
So you must learn to deal with the infinite stream of perplexed reactions from those who can't attach screenshots to issue reports.
You must deflect dragging conversations from those who never quite manage to translate gut feeling into rational sentences.
You must learn to deal with the fact that in reality there are no true microservice backends. There are no clean React frontends. There are no normalized databases. Full test coverage, well-executed retrospectives, finished sprints -- they are all as real as spherical cows in a vacuum.
There is no such thing as clean code.
There is only "relatively cleaner code", and even then there are arguments as to why it would be "subjectively relatively cleaner code".
Every repository, every product, every team and every company is an amalgamation of half-implemented ideals, well-intended tug of war games, and brilliantly shattered dreams.
You will encounter fragmented shards of perfect APIs, miles of tangled barbed documentation, beheaded validator classes, bloody mangled corpses of analytical dashboards, crumbled concrete databases.
You must be able to breathe in those thick toxic clouds of rotting technical and procedural debt, look at your reflection in the locker room mirror while you struggle yourself into a hazmat suit, and think:
"Fuck yes, I was born for this job".24
- you don't like math
- you don't like study
- you don't read documentation
- you throw out the manual
- you like to punch a clock
- you dislike books and reading
- you don't ever work more than 8 hours
- you can't tolerate the occasional weekend work day
- you fold under pressure
- you aren't good at crunch time
- you can't do on-call without committing seppuku
- you don't have attention to detail
- you aren't interested in technology
- you're not good at explaining things
- you can't deal with change
- you're not excited by the prospect of extreme variety
- you don't have the ability to focus
- you can't deal with ego without resorting to violence
- you can't deal with someone calling your baby ugly
- you can't discriminate between fact and opinion
And many, many more23
One of the biggest reality checks you will run into when starting your first dev related job - and which they don't teach you about in school - is that a lot of the time will be spent working with other people's code, and rewriting it into "your own" is rarely an option.
You might be super into making things, but not everyone manages to maintain that same spark while taking over a 15 year old project with fundamental issues that have to be triaged "for now" because you need a hotfix on this other specific thing out in prod before lunch.
There are no gods now. They left the company years ago and nobody knows why they used the windows registry as a user repo.3
All fun and games until you inherit a legacy c project with 30k+ lines of code and a habit of leaking memory and segfaulting intermittently.
That's my worst nightmare at least.3
Top reason not to be a dev:
If you can't stand it when the computer does EXACTLY what you told it to, and don't have the patience, curiosity, and interest learning how to make it do the thing you wanted in the first place. 🙂1
My top reasons for you to not become a dev are:
- You don't like stress
- You like to overengineer but you want to "take your time"
- You hate bug-detective work
- You are impatient
- You want to overcome your virginity
- You are an overly social person6
As for programming: (will do a cyber one later)
Don't *ALWAYS* only study/learn programming solely for learning it as this can be demotivating at times, find a cool project to do and learn while developing that!
This is how I learned programming in a fun way :)5
Top reason to not be a dev?
Because you could't get through 9th grade Algebra you dumb piece of shit.5
Dont become a dev if you:
- Cant sit in the office for 8-10 hours a day
- Dont know how to google information/ errors, instead you interrupt your teammates with stupid questions every 5 minutes
- Are a perfectionist and don't like constant change.
- Are neurotic and give up easily. If you get triggered about broken or messy things to the point where it ruins your day to you and everyone else around you. You need to separate your work from your life.
- Don't have good communication skills. Worst I saw was a guy who speaks with a stutter(nobody understands him) and also writes very poorly (nobody understands his emails). Also he gets very angry when you ask additional questions to clarify what he said. How can you work with someone like that?
- Are very sensitive to critique. I prefer someone telling me that my code is shit and telling me why, instead of feeding me delusions and false validation.
- Dont know how to balance working in team and working solo. Nobody likes lone wolfs who are arrogant and not in sync with the team. But also nobody likes to drag teammates who cant think for themselves and even after years of spent in the field are required constant spoonfeeding because they are unable to google and teach themselves with trial and error.14
As someone deeply questioning their life and career choices as of now, I wouldn't want to become a dev anymore because:
- you spend most of your time burning your eyes on a monitor and getting terrible back pain
- you might sell your soul to company benefits whose only purpose is to make you distracted from the fact that you're basically spending 1/3 of the day wishing you were doing something you actually want to do
- might have to do some exhausting communication ooga boogas to understand what supervisors and your other colleagues want to say (in a small company setting)
- again, as in my previous rant, if you're not on some less disposable dev position, you could as well become something else given that junior salaries are not that high
- get into an unhealthy work world where little hours of sleep, overworking, and other such unhealthy lifestyles are praised or used to determine your worth
Of course, these differ on a case by case basis. I'd become a train driver or something if I still didn't have to eat and not throw more money at a career change
on the long term you are just a minion getting paid enough to live comfortably but no where near enough to live as lavishly as your employer. In most cases, It wont pay enough to allow you to think of retiring early
Often you will feel you have no time to pursue hobbies because keeping up with technology is more important to stay employable.
the fact you can work anytime and anywhere will make many people expect you to work all the time everywhere.2
I'll give you a few reasons to walk away from a dev's chair:
1. if you want your life to be simple and not challenging, if you just want to go with the flow - choose something else. Dev's life will definitely bring some challenges to your day (and sometimes night, and sometimes - your weekends). Especially if you feel you are a perfectionist, dev life could turn your life into a living hell if not handled with care.
2. If you like to see people smiling, if you love that feeling when you help someone and that someone has a better day thanks to you - choose something else. 1st line SD would probably do, but the further from technology you go - the more smiles (and human faces overall) you'll see.
3. If you prefer person-to-person interaction over to talking to machines - definitely don't be a dev. Go to management, administration or smth else, but development. >90% of the human interaction in this field is arguments and conflicts; ~8% are requests for assistance, and the remaining 2% are shared by saying "hi" to the office administrator and your (semi|)annual reviews with your manager. Not kidding.
4. If you have a personality where you find it difficult to stand your ground and not budge to the pressure/blame game/your managers asking you to stay in late. Like it or not, it happens quite often. Many devs have spoiled the management by budging to their requests/demands to stay for OT/unpaid OT to "fix the mess they have made". That's a blame game right there. And these people stay in and do what the slaves do - work for free because they are yelled at. And then management sees this technique work and (ab|)uses it on other devs. If you can say NO and stick to it, prolly wave with some printed paragraphs of labour law in front that manager's nose - it won't be a problem. But if your consciousness is too troubling - stay away from this field of engineering.
5. If you want to easily "disconnect" from work and go do something else - dev's career might be a problem. Yes, your computer might be shut down/hibernated/suspended after 5pm until 9m the next morning, but your brain will most likely keep trying to solve the problems you were facing. You'll prolly use your own computer to do some research, check some forums, docs, etc. - this is all your free time, this is all your family time donated to your manager (and to your personal knowledge base). Not to mention, all these things you learn will soon enough become obsolete, as new technologies will replace them. So if you'd like to easily "disconnect" after 5pm, doing that as a dev might be too challenging.1
The people. I find devs to be (obvious generalization) prone to: not take criticism, not understand the difference between fact and opinion, not understanding that it is perfectly acceptable to change your point of view when presented with new information that will conflict with what you currently believe in. It is a sausage fest brought to you by eons of very fragile male ego in the making, and many other qualities that were very much diluted in a lot of the other fields I have worked on: from retail (shitfest) to import/export all the way to military (another shitfest, for different and rather dangerous reasons).
I have met some amazing people in the field, don't get me wrong, but the quirkiest of mfkers i have met make me believe that maybe I AM the one that does not belong in the field (top kek).
On a more technical side, basic stuff like reading comprehension, attention to detail, the ability to translate complex problemd to pieces and that interconnect among the themselves, the ability to understand the grand mathematical scheme of things, the ability to be patient and despite what the above generalization would have you believe...the ability to communicate with other humans with tact and understanding as well as a spirit of collaboration, etc etc, are definitive traits to consider if you want a career in software development that leads above just being a code monkey.
Shit like that.8
I am right and you're wrong.
Aka: Living in a yin / yang (black n white) bubble.
If you're unable to adapt because the only perspective that matters is your own small little universe, then you shouldn't be a dev.
As a dev, you'll have to accept that you cannot know it all. There will be smarter people and there will be things that you won't understand.
It's okay to be wrong. It's okay to not know it all.5
I already wrote a rant about this yesterday, but since I'm a sysadmin trying to convert to dev.. I dunno, maybe it's not a bad idea to muddy the waters a bit and talk about why not to be a sysadmin.
Personally I think it's that the perceived barrier to entry is just too high, while it isn't. You don't need a huge Ceph cluster and massive servers when you're just starting out. Why overbuild an appliance like that if it's gonna start out at maybe 5 requests a minute?
Let's take an example - DNS servers! So there's been this guy on the bind-users mailing list asking how to set up a DNS server on 2 public servers, along with a website. Nothing special I guess - you can read the thread here: https://0x0.st/ZY-d. Aside from the question being quite confusing, there was advice to read RFC's, get a book, read the BIND ARM, etc etc. And the person to deny this? No one less than Stephane Bortzmeyer, one of the people who works for nic.fr (so he maintains the .fr TLD) and wrote some of those RFC's as part of the DNSOP working group in the IETF. As for valid reasons to set up a DNS server? Could just be to learn how the DNS works, or hell even for fun. As far as professional DNS servers go.. this (https://0x0.st/ZYo9) is the nugget that powers the K root server, one of the 13 root servers that power the root zone of the internet, aka the zone apex. 2 RJ45 connections, and a console connection. The reason why this is possible is the massive recursor networks that ISP's, Google DNS, Cloudflare DNS, Quad9, etc etc provide. Point is, you don't need huge infrastructure to run a server!
Or maybe your business needs email. How many thousands of emails per second are you gonna need to build your mail server against? How many millions will you need to store? If your business has 10 employees and all of those manage about 10k emails total.. well that's easy, 100k emails total. Per second? Hundreds of emails per second per employee? Haha, of course not. Maybe you'll see an email a minute at most. That is not to say that all email services are like this - it is true that ISP's who offer email to their customers, and especially providers like Microsoft and Google do need massive mail servers that can handle thousands of emails per second. But you are not Microsoft or Google. So yeah, focus on the parts of email that are actually hard.. and there is plenty.
Among sysadmins you have this distinction between "professional" sysadmins and homelabbers. I don't mind the distinction itself but I think both augment each other. If you've started out by jumping into a heap of legacy at an established company, you will have plenty of resources, immediately high complexity, and probably a clusterfuck right away. But you will have massive amounts of resources. If you start out with a homelab, you will have not many resources, small workloads, and something completely new for you to build and learn with. And when running a server like that, you'll probably find that the resources required are quite small, to provide you with your new services. My DHCP servers take 12MB memory each. My DNS servers hover around the 40MB mark. The mail server.. to be fair that one consumes around 150. But if you'd hear the people saying that you need huge servers.. omg you need at least a TB of RAM on your server and 72 cores, massive disks and Ceph!1!
No you don't. All that does is scaring people away and creating a toxic environment for everyone. Stop it.1
I absolutely hate software to the point where I started converting from sysadmin to becoming more like a dev. That way I could just write my own implementations at will. Easier said than done, that's for sure. And it goes both ways.
I think that in order to be a good dev, you need these skills the most:
- Problem solving skills
- Creativity, you're making stuff
- Logical reasoning
- Connecting the dots
- Reading complex documentation
- Breaking down said documentation
- A strong desire to create order and patterns
If you don't have the above, you may still be able to become a dev.. but it would be harder for sure, and in some cases acceptance will be lower (seriously, learn to Google!)
One thing I don't think you need in development is mathematics. Sure there's a correlation between it and logic reasoning, but you're not solving big mathematical monsters here. At most you'd probably be dealing with arrays and loops (well.. program logic).
Also, written and spoken English! The language of the internet must be known. If it's not your first language, learn it. All the good (and crucial) documentation out there is in English after all.
One final thing would be security in my opinion, since you're releasing your application to the internet and may even run certain services, and deal with a lot of user data. Making those things secure takes some effort and knowledge on security, but it's so worth it. At the most basic level, it requires a certain mindset: "how would I break this thing I just made?"4
Reasons to NOT be a dev sounds rather negative so I'd like to propose 3 things that you need to BE a dev as to frame it in a positive light:
- When a problem peaks your interest you want to solve it, you may even be obsessed by it.
- You enjoy learning, not necessarily enjoy school, just enjoy learning new things (even better if it's by your own means)
- Failure may get you down, but you learn and don't give up until you have exhausted all paths to success.
You may need other skills like math, logic and reasoning abilities, being able to handle deadlines, attention to detail, and cope with stress. I've seen people being crap at all of those and if they have the former 3 they, in time, will hone the others enough to make them a productive dev.
No need to be a 9-9-6 code monkey willing to be squeezed by Big Corp for massive profits and a low salary or a 1337 purist coder that only focuses on the crafting side of developing software. That may make you a great coder but not a well rounded developer or individual. Remember, you program machines but you are NOT one.10
A very high chance of becoming asocial which will fuck up everything afterwards. Basically the same reason as with any other nerd work/hobby.
Chances are you won't code something you care about.
That said I guess that applies to almost every occupation.
Don't be a dev if it's just not for you.
It's not for everyone, and you should figure this out at the very early stages of your education. The ones it's not for that still persist will hate their life. And leave their job. And leave unfinished, crappy code behind for the rest of us to clean up.3
You seek persistence, stability or want to know what you'll be doing 20 years from now.
You like variety
You want to socialize
If you don’t like to deal with lots of idiots and assholes before you find some decent project and coworkers.
If you don’t mind that half of people you work with have ‘God complex’ and other half want to tell you that it’s easy.
If you got yourself prepared that lots of managers will try to fuck you and treat you like shit in front of your coworkers.
Lots of things that you write would end up in trash cause of wrongly defined requirements.
There is high chance that at the end you will write some excel glue code.
If you are not naive materialistic bitch or you have not strong will to change jobs and don’t give a fuck about past until you find a dream company everyone is writing about in HR job descriptions.
You won't have a boss that doesn't understand what you do, yet requests tasks under a deadline that is way too short.
Main reason is not being maleable, rejecting new stuff as the field changes constantly. The rest can more or less be tolerated (what can be tolerated for any other job, that is).3
Just patching shit from other unknown Junior dev is depressing ... Its like i can do operations but i kill 80% of my patients do you want a try ? If you dont know what you doing please just take time to get a small formation at least thx2
Top reason to not be a dev? There are so many ways to shoot yourself in a foot. Some of them are creative, some of them are fun. Unless it happens to you.1
If you're not truly interested in it.
I don't like math, sitting or a lot of reading but my interest in programming gradually increased overtime.
Alright, let me pitch in. You have no real reason not to be a dev, cause there are lots of other jobs that are just plain shit.
You can create a long list of well thought out reasons for not to, especially the seniors. I like to see things in perspective however.1
Dont be a dev if it affects your own well being in any way, most of the reasons given by other people here are in some way about a person's character affecting others. If it makes you happy, gets you money and gives your life a purpose then others opinions shouldn't even matter.