Join devRant
Do all the things like
++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatar
Sign Up
Pipeless API
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple API
Learn More
Search - "code habits"
-
Every day.
I am a PHP developer.
Yeah, "another PHP is awful" rant... no, not really.
It's just unsuitable for some ambitious projects, just like Ruby and Python are.
First of all, DO NOT EVER use Laravel for large enterprise applications. The same goes for RoR, Django, and other ActiveRecord MVCs.
They are all neat frameworks for writing a todo app, as a better-than-wordpress flexible blogging solution, even as a custom webshop.
Beyond 50k daily users, Active Record becomes hell due to it's lazy fat querying habits. At more than a million users... *depressed sigh*.
PHP is also completely unsuitable for projects beyond 5M lines of code in my opinion. At more than 25M lines... *another depressed sigh*.
You can let your devs read Clean Code and books about architecture patterns, you can teach them about SOLID & DRY, you can write thousands of tests... it doesn't matter.
PHP is scaffolding, it's made of bamboo and rope. It's not brick or concrete. You can build quickly, but it only scales up to a certain point before it breaks in multiple places.
Eventually you run into patterns where even 100% test coverage still doesn't guarantee shit, because the real-life edge cases are just too complex and numerous.
When you're working on a multi-party invoicing system with adapters for various tax codes, or an availability/planning system working across timezones, or systems which implement geographical routefinding coupled to traffic, event & weather prediction...
PHP, Python, Ruby, etc are just missing types.
Every day I run into bugs which could have been prevented if you could use ADTs in a generic way in PHP. PHP7 has pretty good typehints, and they prevent a lot of messy behavior, but they aren't composable. There is no way to tell PHP "this method accepts a Collection of Users", or "this methods returns maybe either an Apple or a Pear, and I want to force the caller to handle both Apple/Pear and null".
Well, you could do that, but it requires a lot of custom classes and trickery, and you have to rewrite the same logic if you want to typehint a "Collection of Departments" instead of "Collection of Users" -- i.e., it's not composable.
Probably the biggest issue is that languages with a (mostly) structural type system (Haskell, Rust, even C#/JVM languages to some degree, etc) are much slower to develop in for the "startup" era of a project, so you grab a weak, quick prototyping language to get started.
Then, when you reach a more grown up phase, you wish you had a better type system at your disposal...28 -
TLDR: I wrote one of my firsts codes to help my father. Was really excited after it worked, nobody cared. F*ck them (not really).
So my father comes and says he needs me to help making a simple presentation. Just a title and slides with images. It seemed to be an easy task so I'm like "sure, why not?". So I told him to email the images and I would have the presentation made in no time. The next day I recieve like 30 mails containing from 4 to 10 photos of boats (yes, boats). I stay chill and have the brilliant idea of automating the process with python, just to learn a bit more.
I took some to read the documentation of the modules I was going to use, then write a simple code and bam! In 3 hours I have a presentation with images in it. I open it, every image was 4 times the actual slide and all of the images were randomly rotated, it still was the most rewarding moment I've had in months :') I wanted to show it off to my brothers, so they came to my desktop, saw it and all I recieve was a "cool". Not a good "cool", a "meh" kind of "cool". So I thought it was because of the size bug.
Fastfoward some hours, now every image gets scaled into the slides prefectly, in the correct angle, etc. I tell my dad what I made and he says "yeah sure, the problem is that I need you to give them to have subtitles". He wasn't even impressed. My heart hurt a bit.
I could totally automate the subtitles too (and did it), but what hurt the most is that nobody cared for what I was so pationate about. I'm so fascinated with coding that it replaced all my gaming habits, and now all I do is learn. I want to dedicate a good portion of my life to this but at that moment it seemed nobody in my family cared about it. So this rant is for all those f*ckers that I love but don't know how much my code means to me.21 -
Once one of my coworkers tried to prank me while i was afk and changed a line in my code.
Good old habits of mine instantly realized the file's unsaved status and i could ctrl+z without even knowing someone edited my code.
Don't mess with a developer. We know our shit.2 -
I had this one teacher that sucked some serioud dick. She refused to teach us what she was supposed to... Java.
Her teaching habits include: talking about her life problems for the whole class until the last 5 minutes to actually teach us knowledge that usually ended up being useless, refusing to answer questions and demanding that we use Google instead, and worst of all... the way she checked our programs to see if they would work. The absolute FIRST thing that she would do when she sat down at our computer, was open up our code, to see if it looked EXACTLY like her fucking code. She wouldn't even check if it worked first...
Honestly, teacher's like this completely piss me off and the students of this class learned more from the students with pre-knowledge than they did from studying the notes that the teacher gave in the last five minutes of class.7 -
My Lazy Habits:
1. Not testing my own code thoroughly... cuz fuck that. That's the tester's/QA's job.
2. I create slack commands to get certain things done, so I dont have to get up and open my laptop each time I receive a ticket.
3. Ask more time for development that I actually need so I can fit in couple naps here and there.
4. Falsely claiming that I am busy when someone invites me over meet or a phone call. Like just text me.
5. Factoring my laziness in when I design features LOL.1 -
Sometimes I feel like I'm wasting my time, I've been programming for the last 6 years, day and night, I know more than all the teachers I've had for the last years (including university), during programming classes at university I'm just there to help my friends and try to avoid they get bad habits (our professor didn't have this luxury apparently), but I don't feel the emotions I used to feel when I started, for the last month or so the only code I've written was two days ago to help the girl I like, when I'm home I try to force myself to code but I can't find the inspiration, I stare at the screen for 30 minutes, I reboot my pc, start windows and play videogames 'till night...
Then I go to youtube, and see artists and musicians, I feel like I can't do anything that cool...
Have anyone of you ever felt the same? What did you do to recover? I still love programming, but I can't find any reason to do it, I still don't have an original and interesting concept for a game, I have many side projects in the "maybe I'll continue it" stash, is there something wrong with me or is it normal?10 -
(first post/rant on here)
So I recently started at a new company. I was kinda aware that the project I'm working on would be rather old school (to put it in a nice way :-)).
Part of my job is to 'industrialize' and update/clean up the existing code so there is less time spent on fixing bugs due to bad design.
One of the first things I had to do was to write a new interface to integrate with external software.
I already noticed some rather nasty habits, like prefixing every variable with m (don't know why), private fields for every property (all simple properties) and a whole lot of other stuff that either is obsolete or just bad practice.
Started writing clean code (simple classes with properties only, no m prefixing, making sure everything is single responsibility, unit tests, ...).
So I check in the code, don't hear much from it again besides the original dev/architect that started the project using my code to further work on that integration.
Now recently I started converting everything from TFVC to Git (which is the company standard but wasn't used by our team yet). And I quickly skimmed through my code to check if everything was there before pushing it to the remote repo.
To my surprise, all the code I had written was replaced by m prefixed private variables used in simple properties. BL classes were thrown in together, creating giant monstrosities that did everything. And last but not least, all unit tests were commented out.
Not sure what I got myself into ... but the facepalming has commenced.14 -
I dislike the damage web development tools have done to my programming habits.
The rapid feedback provided from the development environment (e.g. hot-reloads) encourages me to constantly bang out code with very little consideration for its side-effects.
This tendency has become a handicap when I write instructions for hardware with much less resources, such as a microcontroller.3 -
After being an active developer in the industry for about 5 years, I still have some bad dev habits on which I'm working on:
- Starting off with the code first without a proper design in mind/paper. (Trust me, I'll always regret of not having a proper design later)
- Writing long method bodies and not refactoring them later. (Because sometimes I turn out to be a lazy ass)
- Duplicating code in some places without reusing some.1 -
A software had been developed over a decade ago. With critical design problems, it grew slower and buggier over time.
As a simple change in any area could create new bugs in other parts, gradually the developers team decided not to change the software any more, instead for fixing bugs or adding features, every time a new software should be developed which monitors the main software, and tries to change its output from outside! For example, look into the outputs and inputs, and whenever there's this number in the output considering this sequence of inputs, change the output to this instead.
As all the patchwork is done from outside, auxiliary software are very huge. They have to have parts to save and monitor inputs and outputs and algorithms to communicate with the main software and its clients.
As this architecture becomes more and more complex, company negotiates with users to convince them to change their habits a bit. Like instead of receiving an email with latest notifications, download a csv every day from a url which gives them their notifications! Because it is then easier for developers to build.
As the project grows, company hires more and more developers to work on this gigantic project. Suddenly, some day, there comes a young talented developer who realizes if the company develops the software from scratch, it could become 100 times smaller as there will be no patchwork, no monitoring of the outputs and inputs and no reverse engineering to figure out why the system behaves like this to change its behavior and finally, no arrangement with users to download weird csv files as there will be a fresh new code base using latest design patterns and a modern UI.
Managers but, are unaware of technical jargon and have no time to listen to a curious kid! They look into the list of payrolls and say, replacing something we spent millions of man hours to build, is IMPOSSIBLE! Get back to your work or find another job!
Most people decide to remain silence and therefore the madness continues with no resistance. That's why when you buy a ticket from a public transport system you see long delays and various unexpected behavior. That's why when you are waiting to receive an SMS from your bank you might end up requesting a letter by post instead!
Yet there are some rebel developers who stand and fight! They finally get expelled from the famous powerful system down to the streets. They are free to open their startups and develop their dream system. They do. But government (as the only client most of the time), would look into the budget spending and says: How can we replace an annually billion dollar project without a toy built by a bunch of kids? And the madness continues.... Boeings crash, space programs stagnate and banks take forever to process risks and react. This is our world.3 -
Usual python code problems coming from someone who has been coding in Javascript and PHP (<--no pitchforks please). It's been months already but old habits still keep on coming back
- adding a semi-colon
- mixing spaces with tabs
- using a lowercase boolean
- adding an open brace when declaring a function
- forgetting the colon ( ;'s brother) -
my instructor forgot to do Cengage shit right again... why me...
Assignment wants me to "go do a thing to sort 3 numbers with if/else statements"
I'm going to use a list and list.sort() as i'm not stupid and these are bad habits to teach...
...or not.
(I know I can put the values into the right vars and then print those but that feels so wrong to me for something that's gonna be printed ONCE. That also doesn't help as it's searching for if/else statements... although it's not searching for a whole one... nor in actual code...)4 -
Stop commenting out code blocks!
Either fix your shit or delete it.
I am open to argue what fixing may mean, as it is perfectly fine to make your broken code not reachable, e.g. via feature flags or skipping certain tests. Yet never ever should you comment those blocks!
So you say you want to keep it for historic reasons? You know, that is why we use version control! If you ever need certain functionality back, you can restore that state.
Each decent IDE also offers a local history where you can even restore code blocks that weren't even pushed or committed. So use that!
Commenting out test cases is a really bad habit, as you have no reminder that you shall restore it.
And no, a TODO and a FIXME won't count as a reminder as you have to actively look for them. And we all know how well that goes, don't we? (One time, I found a typo of a `TDO`. So even with a regular lookup for TODO, stuff will slip.)
Each test suite offers you ways to skip tests if there are valid reasons why they should not fail the build temporary and they offer colorful feedback. Yes, that means that your tests won't be green, but guess what: That's a feature! They shouldn't be.
That yellow is a fine reminder, aka warning!, that you should really fix your shit.
Commented code screams: "I DON'T KNOW WHAT I WAS DOING!" and it confuses the hell out of other developers ("Was this commented because of debugging purposes and should be active again or can I safely delete this!?") and adds verbose crap to the code base.
If you find yourself to be in a place that you comment code a lot, I also argue that your workflow is broken.
When you are using a decent debugger, there shouldn't that much of a need to comment in and out a lot of code in order to reason about your code-base.3 -
One of my bad dev habits is that I tend to take up too much work because a lot of devs I had to work with seemed not competent enough. It's a bad habit because I get way overworked which influences code quality and deadlines.
I have to learn to trust more in others and give up some responsibility... it's hard though.
I think a big influence on my mindset has been that I never worked in a team bigger than 4 developers and I had way more experience in web dev than the others.
I sometimes may appear as an arrogant prick, but it's not intentional.9 -
I once found a bug that I couldn't figure out from the code, so I started putting log statements that would print out the variables on screen (yes I have xDebug, but old habits die hard). Then the entire website didn't load anymore and eventually the entire container crashed.
It took me an hour to realize I was trying to var_dump an object from the ORM, resulting in a memory overload since there were like 20 related objects that recursively tried to load all the data in the database.
In my defense, it was friday afternoon... -
Things I learned in this 2 month training in an IT company ;
- the way @marcerisson wanted me and my group project team to use Git (and kept yelling at us about ) is actually the proper, professional way of using Git
- there is a difference between an MVC model and a fucking pack of overcomplicated spaghetti code
- commenting your code and naming your variables properly IS IMPORTANT especially when another dev might read it 15 years later (i see you Mr I Name All my Variables With the Name Of the Function and A Number)
- « if it worls it ain’t stupid » also apply in a professional area
- where ´s my fucking rubber duck2 -
Laziest habit? Anything done between 1pm-4:30pm and 4:59pm-8pm. During that time, habits include unnecessary refactoring, poking the CI/CD containers, editing already made prototypes in gimp inkscape, pasting stackoverflow topics to youtube, bouncing from macOS, windows and kde distros in search of zen/rice, adding a calendar emoji on my slack :), making useless automation scripts, building on every variable's value change, tinkering pixels, shades, gradients (and their angles), dimens, anim values, anim curves, opacity, blurs and just nuking the ui just to copy paste an old one, 60% just chatting in code alongs, changing key bindings (from ide to OS), and ultimately zoning out on a podcast about cyber security. And of course: waiting for ++ and comments
-
What should I do to practice being a "good coder" vs a "code Googler" who slaps other people's code into the site just because "it's enough to get the damn thing working"?
I feel really overwhelmed with all that Ive learned thus far. At this point I feel width with know depth when it comes to my knowledge of websites.
I've been messing around with html/css/js for a while and played with plenty of other languages,pre-processors, frameworks, etc. I never went to school for programming and have done work for small businesses independently for some time. Most of what I know comes from codecademy treehouse and similar sites. I can refer to Google on a lot of things but I feel like there are habits that I should be implementing so I don't have to re-do things later. I love the book apart series but I still feel like it's missing the foundational knowledge that I'm looking for.
After all of the time I've spent going through courses I feel like my experiences have given me solutions to build a few things and now I'm just jamming those solutions onto whatever I can until something I like comes on to the browser.
It's really easy to sit down and bang my head against the keyboard until something comes out that looks the way I want it to. However, I know there is way more going on that could help me make better decisions. I just feel like I'm missing something. Maybe it's experience, or maybe it's just the lack of commroddery from working alone and not being able to approach problems with a team.
I hate pulling up my css file and feeling like it's rubbish, and feeling like I don't completely understand things like flex, or display, or position. I've been pushing at this for a while but I don't think I've found a resource that has really made me feel like I'm anywhere close to being a competent coder.
There are tons of watch and learn and do type classes that show you how to make stuff, but I guess what I want to know now is why we make it that way.
At some point do you just sit down and read the MSN start to finish?
I wonder sometimes if my brain has been reprogrammed because I grew up in Google world and don't actually have to solve anything for myself. I read about a guy who locked himself away for hours with books on code and he just sat there and wrote his code on paper until he was confident that he was getting it right.2 -
!rant
Do you guys live a healthy life? Or are some of us here like the stereotypical dev who sits behind a desk eating bad gaining the pounds while stressing the fuck over code lmao
Personally I use to be quite active but now I'm getting back into bad habits and have started to notice that I'm stress eating <.< and choosing dev work over exercise...7 -
I have two bad habits that I try to get rid of:
- Googling instead of directely searching in the product documentation.
- Copy/pasting code instead of typing it. -
¡Rant
I am a simple man, i see code in comment
I ++ it.
Me= simple;
While (On.Devrant) {
Cin>>code;// Cin as seen (through eyes)
I++; // that i increment it { got the joke?}
}2 -
Is there a good place to post code and have people comment on the style or the logic? I'd love to start getting feedback on my code and break bad habits before they become too ingrained. Plus, our first project is a blackjack game, I'm working through it pretty well but I'm a little stuck and I think it's completely because I'm paranoid I'm not doing it well/right (even though I probably am).2
-
unlimited time is not the only problem. During that time I'd get hungry, cold and tired -- I need to afford to buy food, have a home with roof and warmth. So with unlimited time, I'll also need unlimited funds.
And if I had unlimited funds I'd spend most of my time AFK: buying a house, making it pretty, setting up my own lab and a solar+wind powerplant, recruiting some folks to finish my project for me. Then travel all around the world, while my code monkeys are busy making me famous for introducing new tech to the world - so new, that it'll change the way we live, that it'll change our communication, interaction and other habits. And then I'll be ready for the EternalLife underground project, where another set of teams of bio-monkeys will be busy making my consciousness alive after my body wears out.
If only I had all those funds...
Care to chip in? -
A beginner in learning java. I was beating around the bushes on internet from past a decade . As per my understanding upto now. Let us suppose a bottle of water. Here the bottle may be considered as CLASS and water in it be objects(atoms), obejcts may be of same kind and other may differ in some properties. Other way of understanding would be human being is CLASS and MALE Female be objects of Class Human Being. Here again in this Scenario objects may differ in properties such as gender, age, body parts. Zoo might be a class and animals(object), elephants(objects), tigers(objects) and others too, Above human contents too can be added for properties such as in in Zoo class male, female, body parts, age, eating habits, crawlers, four legged, two legged, flying, water animals, mammals, herbivores, Carnivores.. Whatever.. This is upto my understanding. If any corrections always welcome. Will be happy if my answer modified, comment below.
And for basic level.
Learn from input, output devices
Then memory wise cache(quick access), RAM(runtime access temporary memory), Hard disk (permanent memory) all will be in CPU machine. Suppose to express above memory clearly as per my knowledge now am writing this answer with mobile net on. If a suddenly switch off my phone during this time and switch on.Cache runs for instant access of navigation,network etc.RAM-temporary My quora answer will be lost as it was storing in RAM before switch off . But my quora app, my gallery and others will be on permanent internal storage(in PC hard disks generally) won't be affected. This all happens in CPU right. Okay now one question, who manages all these commands, input, outputs. That's Software may be Windows, Mac ios, Android for mobiles. These are all the managers for computer componential setup for different OS's.
Java is high level language, where as computers understand only binary or low level language or binary code such as 0’s and 1’s. It understand only 00101,1110000101,0010,1100(let these be ABCD in binary). For numbers code in 0 and 1’s, small case will be in 0 and 1s and other symbols too. These will be coverted in byte code by JVM java virtual machine. The program we write will be given to JVM it acts as interpreter. But not in C'.
Let us C…
Do comment. Thank you6 -
Anyone here believes that good habits are the key to be a better programmer (write friendly code, learn something new, plan before code etc)
Any thoughts-suggestions?4 -
Productivity hack - For me, it’s mostly a single word - planning. I wasn’t always good at it, definitely not yet a “master” of it, but breaking that proverbial elephant up into smaller pieces, and organizing a plan of action for dealing with them is the #1 productivity “hack” for me. Sorry that it’s not an actual shortcut, or anything…I personally don’t believe in those anymore. Complementary habits to this are thoroughly commenting code, having descriptive commit messages, file names, and variable names, maintaining documentation. Use that Readme.md. This is true of any project, even if I’m the only developer - never underestimate your own ability to totally forget shit.1
-
When you have a coding issue you can't fix after numerous searching and debugging you give up and talk to somebody about it to see if they'd know what the cause is.
*40 mins later* the conversation is about security habits, cryptography coding and the ballmer peak.
Sit back down after the detailed conversation and realise I forgot to get assistance on the code issue.
Whelp! Maybe I'll look at refactoring now and perhaps start from scratch if I cant fix it. FML1 -
I improved a lot as a dev when I looked at code I'd written and compiled. You can learn a lot from looking hiw your habits and style affect the overall program.