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 - "hope you are well bs"
-
!rant
After over 20 years as a Software Engineer, Architect, and Manager, I want to pass along some unsolicited advice to junior developers either because I grew through it, or I've had to deal with developers who behaved poorly:
1) Your ego will hurt you FAR more than your junior coding skills. Nobody expects you to be the best early in your career, so don't act like you are.
2) Working independently is a must. It's okay to ask questions, but ask sparingly. Remember, mid and senior level guys need to focus just as much as you do, so before interrupting them, exhaust your resources (Google, Stack Overflow, books, etc..)
3) Working code != good code. You are an author. Write your code so that it can be read. Accept criticism that may seem trivial such as renaming a variable or method. If someone is suggesting it, it's because they didn't know what it did without further investigation.
4) Ask for peer reviews and LISTEN to the critique. Even after 20+ years, I send my code to more junior developers and often get good corrections sent back. (remember the ego thing from tip #1?) Even if they have no critiques for me, sometimes they will see a technique I used and learn from that. Peer reviews are win-win-win.
5) When in doubt, do NOT BS your way out. Refer to someone who knows, or offer to get back to them. Often times, persons other than engineers will take what you said as gospel. If that later turns out to be wrong, a bunch of people will have to get involved to clean up the expectations.
6) Slow down in order to speed up. Always start a task by thinking about the very high level use cases, then slowly work through your logic to achieve that. Rushing to complete, even for senior engineers, usually means less-than-ideal code that somebody will have to maintain.
7) Write documentation, always! Even if your company doesn't take documentation seriously, other engineers will remember how well documented your code is, and they will appreciate you for it/think of you next time that sweet job opens up.
8) Good code is important, but good impressions are better. I have code that is the most embarrassing crap ever still in production to this day. People don't think of me as "that shitty developer who wrote that ugly ass code that one time a decade ago," They think of me as "that developer who was fun to work with and busted his ass." Because of that, I've never been unemployed for more than a day. It's critical to have a good network and good references.
9) Don't shy away from the unknown. It's easy to hope somebody else picks up that task that you don't understand, but you wont learn it if they do. The daunting, unknown tasks are the most rewarding to complete (and trust me, other devs will notice.)
10) Learning is up to you. I can't tell you the number of engineers I passed on hiring because their answer to what they know about PHP7 was: "Nothing. I haven't learned it yet because my current company is still using PHP5." This is YOUR craft. It's not up to your employer to keep you relevant in the job market, it's up to YOU. You don't always need to be a pro at the latest and greatest, but at least read the changelog. Stay abreast of current technology, security threats, etc...
These are just a few quick tips from my experience. Others may chime in with theirs, and some may dispute mine. I wish you all fruitful careers!221 -
College can be one of the worst investments for an IT career ever.
I've been in university for the past 3 years and my views on higher education have radically changed from positive to mostly cynical.
This is an extremely polarizing topic, some say "your college is shite", "#notall", "you complain too much", and to all of you I am glad you are happy with your expensive toilet paper and feel like your dick just grew an inch longer, what I'll be talking about is my personal experience and you may make of it what you wish. I'm not addressing the best ivy-league Unis those are a whole other topic, I'll talk about average Unis for average Joes like me.
Higher education has been the golden ticket for countless generations, you know it, your parents believe in it and your grandparents lived it. But things are not like they used to be, higher education is a failing business model that will soon burst, it used to be simple, good grades + good college + nice title = happy life.
Sounds good? Well fuck you because the career paths that still work like that are limited, like less than 4.
The above is specially true in IT where shit moves so fast and furious if you get distracted for just a second you get Paul Walkered out of the Valley; companies don't want you to serve your best anymore, they want grunt work for the most part and grunts with inferiority complex to manage those grunts and ship the rest to India (or Mexico) at best startups hire the best problem solvers they can get because they need quality rather than quantity.
Does Uni prepare you for that? Well...no, the industry changes so much they can't even follow up on what it requires and ends up creating lousy study programs then tells you to invest $200k+ in "your future" for you to sweat your ass off on unproductive tasks to then get out and be struck by jobs that ask for knowledge you hadn't even heard off.
Remember those nights you wasted drawing ER diagrams while that other shmuck followed tutorials on react? Well he's your boss now, but don't worry you will wear your tired eyes, caffeine saturated breath and overweight with pride while holding your empty title, don't get me wrong I've indulged in some rough play too but I have noticed that 3 months giving a project my heart and soul teaches me more than 6 months of painstakingly pleasing professors with big egos.
And the soon to be graduates, my God...you have the ones that are there for the lulz, the nerds that beat their ass off to sustain a scholarship they'll have to pay back with interests and the ones that just hope for the best. The last two of the list are the ones I really feel bad for, the nerds will beat themselves over and over to comply with teacher demands not noticing they are about to graduate still versioning on .zip and drive, the latter feel something's wrong but they have no chances if there isn't a teacher to mentor them.
And what pisses me off even more is the typical answers to these issues "you NEED the title" and "you need to be self taught". First of all bitch how many times have we heard, seen and experienced the rejection for being overqualified? The market is saturated with titles, so much so they have become meaningless, IT companies now hire on an experience, economical and likeability basis. Worse, you tell me I need to be self taught, fucker I've been self taught for years why would I travel 10km a day for you to give me 0 new insights, slacking in my face or do what my dog does when I program (stare at me) and that's just on the days you decide to attend!
But not everything is bad, college does give you three things: networking, some good teachers and expensive dead tree remnants, is it worth the price tag, not really, not if you don't need it.
My broken family is not one of resources and even tho I had an 80% scholarship at the second best uni of my country I decided I didn't need the 10+ year debt for not sleeping 4 years, I decided to go to the 3rd in the list which is state funded; as for that decision it worked out as I'm paying most of everything now and through my BS I've noticed all of the above, I've visited 4 universities in my country and 4 abroad and even tho they have better everything abroad it still doesn't justify some of the prices.
If you don't feel like I do and you are happy, I'm happy for you. My rant is about my personal experience which is kind of in the context of IT higher education in the last ~8 years.
Just letting some steam off and not regretting most of my decisions.15 -
! rant
Sorry but I'm really, really angry about this.
I'm an undergrad student in the United States at a small state college. My CS department is kinda small but most of the professors are very passionate about not only CS but education and being caring mentors. All except for one.
Dr. John (fake name, of course) did not study in the US. Most professors in my department didn't. But this man is a complete and utter a****le. His first semester teaching was my first semester at the school. I knew more about basic programming than he did. There were more than one occasion where I went "prof, I was taught that x was actually x because x. Is that wrong?" knowing that what I was posing was actually the right answer. Googled to verify first. He said that my old teachings were all wrong and that everything he said was the correct information. I called BS on that, waited until after class to be polite, and showed him that I was actually correct. Denied it.
His accent was also really problematic. I'm not one of those people who feel that a good teacher needs a native accent by any standard (literally only 1 prof in the whole department doesn't), but his English was *awful*. He couldn't lecture for his life and me, a straight A student in high school, was almost bored to sleep on more than one occasion. Several others actually did fall asleep. This... wasn't a good first impression.
It got worse. Much, much worse.
I got away with not having John for another semester before the bees were buzzing again. Operating systems was the second most poorly taught class I've ever been in. Dr John hadn't gotten any better. He'd gotten worse. In my first semester he was still receptive when you asked for help, was polite about explaining things, and was generally a decent guy. This didn't last. In operating systems, his replies to people asking for help became slightly more hostile. He wouldn't answer questions with much useful information and started saying "it's in chapter x of the textbook, go take a look". I mean, sure, I can read the textbook again and many of us did, but the textbook became a default answer to everything. Sometimes it wasn't worth asking. His homework assignments because more and more confusing, irrelavent to the course material, or just downright strange. We weren't allowed to use muxes. Only semaphores? It just didn't make much sense since we didn't need multiple threads in a critical zone at any time. Lastly for that class, the lectures were absolutely useless. I understood the material more if I didn't pay attention at all and taught myself what I needed to know. Usually the class was nothing more than doing other coursework, and I wasn't alone on this. It was the general consensus. I was so happy to be done with prof John.
Until AI was listed as taught by "staff", I rolled the dice, and it came up snake eyes.
AI was the worst course I've ever been in. Our first project was converting old python 2 code to 3 and replicating the solution the professor wanted. I, no matter how much debugging I did, could never get his answer. Thankfully, he had been lazy and just grabbed some code off stack overflow from an old commit, the output and test data from the repo, and said it was an assignment. Me, being the sneaky piece of garbage I am, knew that py2to3 was a thing, and used that for most of the conversion. Then the edits we needed to make came into play for the assignment, but it wasn't all that bad. Just some CSP and backtracking. Until I couldn't replicate the answer at all. I tried over and over and *over*, trying to figure out what I was doing wrong and could find Nothing. Eventually I smartened up, found the source on github, and copy pasted the solution. And... it matched mine? Now I was seriously confused, so I ran the test data on the official solution code from github. Well what do you know? My solution is right.
So now what? Well I went on a scavenger hunt to determine why. Turns out it was a shift in the way streaming happens for some data structures in py2 vs py3, and he never tested the code. He refused to accept my answer, so I made a lovely document proving I was right using the repo. Got a 100. lol.
Lectures were just plain useless. He asked us to solve multivar calculus problems that no one had seen and of course no one did it. He wasted 2 months on MDP. I'd continue but I'm running out of characters.
And now for the kicker. He becomes an a**hole, telling my friends doing research that they are terrible programmers, will never get anywhere doing this, etc. People were *crying* and the guy kept hammering the nail deeper for code that was honestly very good because "his was better". He treats women like delicate objects and its disgusting. YOU MADE MY FRIEND CRY, GAVE HER A BOX OF TISSUES, AND THEN JUST CONTINUED.
Want to know why we have issues with women in CS? People like this a****le. Don't be prof John. Encourage, inspire, and don't suck. I hope he's fired for discrimination.11 -
Ok, I am actually losing my mind at this bad excuse of a work place.
This guy, that I had only briefly talked to in email twice before, never met or even had a video chat, opened a ticket like this:
"Hi Alt-Tab,
I hope you enjoyed the end of last week, the weekend, and the beginning of this one! All well here. I ventured to [random place in London] for the first time on Saturday – liked it."
Now. I already can't fucking stand when colleagues that are not at all close start emails with "how was your weekend?" shit because then I have to waste another minute addressing that. But this guy took it to such another level that I literally had to read his email 3 times to believe what I just witnessed.
And of course he then went on and described the issue as folows:
"Just a quick note about the issue I have - could you let me know why the calendars are not syncing?"
Maybe if you fucking spent half of the energy of you writing a polite bullshit "hello" and instead used that to actually describe the issue I could help.
Fuck off.22 -
So first of all merry delayed Xmas and of course wishing you all a happy new year.
Now...
I always loved designing and coding, yes I actually like it, I must be absolutely mental or something.. I finally after pushing myself through hours upon hours of courses, finishing most within 15% of the allotted time, and doing more then was requested, I finally found a job, related to front-end development. You might think "Gee; good for you buddy, you filthy commoner.." Well; it didn't last all too long, I basically after nailing the interview process got my first day there within a few days, now I am absolutely stoked and my nerves are shot, plus the 4 cups of coffee aren't helping. I literally was so nervous to do well on my first day, that I slept for only one hour, literally one bloody hour.
I get into the office where I am greeted by an amazing laptop, I mean high-end gaming 360 no-scope all over the place gaming. I sit down and start on getting all my tools ready to go (they let us use whatever IDE we wanted, which I thought was amazing) after getting my IDE and the plugins and all the emails/Slack etc setup, I then get told to get a Dropbox account. I assumed the Dropbox account was just there to share things quickly with the designers, we would obviously be using Git right?! Well; no not exactly, actually not at all - we all used the Dropbox account of one of the bosses, I swear everybody pushed and pulled stuff all the time, a copy of the boss's passport was in there as well, and they had projects from and up to 3 years ago, still in there... It took my Dropbox 3 bloody hours to grab as much as it could to actually allow me to get started...
I then to my absolute dismay notice that I would be working on a prefab of a prefab, basically the only thing I would be responsible for, is to adjust the animations and aligning elements.... Aligning and animations.... Fine, I guess it could be worse right? Started going along with it, using a framework that I never heard of before, till like a good 3 days before starting there called "Greensock" which is amazing I must admit, could've helped me allot on my solo-projects. Problem was; we had designers who wanted things, that just looked plain horrible, it was never 'on-point' so to say, maybe it's just me being a perfectionist but it just looked wrong.
Finally got it done after struggling with the prefabs and what not, then the day was almost over and I finally got to go home, fortunately dodging the drinking that was occurring around 4 in the afternoon in the middle of the office, it wasn't beers or anything of the sort - but hard liquor along the lines of Wodka and straight up Gin. I fortunately had a personal issue I had to attend too, so I got out of there before things got too crazy and they went out for dinner stumbling all over the place.
Well this wen't for a few more days (minus the drinking), with 8 being the exact number of days and my grievance list only kept growing. I was for one a junior-developer and thus with them knowing was supposed to get training from our lead, however; that never occurred instead said 'lead' would leave early or be completely absent on most days, leaving me to mess around with prefabs that did my head in, with no comments nor any indication what it did or should've done, I spent hours just adjusting one line of code at a time to see what would happen.
Eventually they told us to work from home only, so I did - did a project here and there and then got told they wouldn't keep me on board any longer, stating I was too inexperienced and they didn't have enough work (which was a load of bs) and that I lacked "office experience" whatever the heck that means, I was always sociable and hell I ever cracked people up, kept a neat and orderly list of things that needed doing, I even contrary to most commented on my code, so the next poor sod wouldn't be going through 'try by error' hell that I wen't through.
Either way; I currently have been feeling absolutely wrecked in terms of motivation, that job would've solved my financial situation and allowed me to finally do what I wanted to do. Instead of doing some random dead-end job each week or month, I would've had a steady income and something I could've built on.
But to add some positivism to this endless and too long of a rant... I'm currently going through a boot-camp and doing a small Linux based course on the side, this little thing isn't going to hold me back; yeah it will be tough, but then again most things don't come easy..
Thank you for reading and I hope you have allot and I mean allot more luck on your first job.5 -
So this might be a very long post , but i am sure most of you can relate to it .
So , the year end . Time of joy and appraisals right?You have slogged your ass off the entire year and are expecting amazing ratings.Then boom , your piece of shit sadist manager starts of his review by saying 'there are worrysome things to discuss' after not saying shit for the entire year . I am pretty new to corporate , in fact 1 year old , still managed to handle devops for a team of 130+ , majority of whom have no work apart from playing a blame game and indulging in cheap politics. I mean , bro , I am literally your son's age , i dont see the point in playing this cheap shit with me.On top of that this sadist and borderline piece of shit manager has the audacity to say that I did not raise any blockers , while I have CCed him in every fucking mail possible.How big of an a****** can you be bro?
I counter his points for 40 45 mins straight ,leaving him stuck without words for solid 10 to 15 seconds many times during the 'review meet'. This guy is in the same place working on the same shit code , which 90% of this community can't even think of. Every thing is bloody manual and apparently ' I should have tried to streamline the entire f**** process' . Cool bro , why not open a startup while I am at it ?
Then this piece of poop gives me a rating which is just above the inconsistent performer bracket :) .
I just dont get the points what do these people get by giving shit ratings and not even having valid points to back up their fuck all arguments.This guy , throughout the duration of the call did not say 1 (bloody 1 ) good thing about my efforts. Past context is majority of the smart people who were literally running their pods single handedly , were under him and were fed up with not getting hikes and appraisals.Apart from me ,everyone resigned and left with hikes as high as 50% (LOL right).
But I have a year of experience and its really difficult to perform well in 4 rounds of bs compititive coding rounds, after which I get the generic ' oh you did well bro but we are moving on with other candidates' (FFS) .
I pray that even my worst enemies don't get such managers and I hope he rots in hell.
Amen and sorry for the cussing :) -
If you've ever tried using Go plugins raise your hand.
If you've ever tried doing plugins in Go, raise your hand.
If you think that the following rant will be interesting, raise your hand.
If you raised your hand, press [Read More]:
This is a tale of pain and sorrow, the sorrow of discovering that what could be a wonderful feature is woefully incomplete, and won't be for a very long time...
Go plugins are a cool feature: dynamically load pre-compiled code, and interact with it in a useful and relatively performant way (e.g. for dynamically extending the capabilities of your program). So far it sounds great, I know right?
Now let me list off some issues (in order of me remembering them):
1. You can't unload them (due to some bs about dlopen), so you need to restart the application...
2. They bundle the stdlib like a regular Go binary, despite the fact that they're meant to be dynamic!
3. #2 wouldn't be so bad if they didn't also require identical versions of all dependencies in both binaries (meaning you'd need to vendor the dependencies, and also hope you are using the right Go version).
4. You need to use -trimpath or everything dies...
All in all, they are broken and no one is rushing to fix it (literally, the Go team said they aren't really supporting it currently...).
So what other options are there for making plugins in Go?
There's the Hashicorp method of using RPC, where you have two separate applications one the plugin, one the plugin server, and they communicate over RPC. I don't like it. Why? Because it feels like a hack, it's not really efficient and it carries a fear of a limitation that I don't like...
Then we come to a somewhat more clever approach: using Lua (or any other scripting language), it's well known, it's what everyone uses (at least in games...). But, it simply is too hard to use, all the Go Lua VMs I could find were simply too hard to set up...
Now we come to the most creative option I've seen yet: WASM. Now you ask "WASM!? But that's a web thing, how are you gonna make that work?" Indeed, my son, it is a web thing, but that doesn't mean I can't use it! Someone made a WASM VM for Go, and the pros are that you can use any WASM supporting language (i.e. any/all of them). Problem inefficient, PITA to use, and also suffers from the same issues that were preventing me from using Lua.
Enter Yaegi, a Go interpreter created by the same guys who made (and named) Traefik. Yes, you heard me right, an INTERPRETER (i.e. like python) so while it's not super performant (and possibly suffering from large inefficiency issues), it's very easy to set up, and it means that my plugins can still be written in Go (yay)! However, don't think this method doesn't have its own issues, there's still the problem of effectively abstracting different types of plugins without requiring too much boilerplate (a hard problem that I'm actively working on, commits coming soon). However, this still feels to be the best option.
As you can see, doing plugins in Go is a very hard problem. In the coming weeks (hopefully), I'm going to (attempt to at least) benchmark all the different options, as well as publish a library that should help make using Yaegi based plugins easier. All of this stuff will go (see what I did there 😉) in a nice blog post that better explains the issues and solutions. But until then I have some coding to do...
Have a good night(/day)!13