Details
-
AboutNerd. Geek. Agnostic. Bibliophile. I love computers, books and nerdy humor.
-
SkillsAngularJS, Java, JavaScript, NodeJS, Jasmine, HTML
-
LocationBangalore
Joined devRant on 9/18/2016
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
-
*Now that's what I call a Hacker*
MOTHER OF ALL AUTOMATIONS
This seems a long post. but you will definitely +1 the post after reading this.
xxx: OK, so, our build engineer has left for another company. The dude was literally living inside the terminal. You know, that type of a guy who loves Vim, creates diagrams in Dot and writes wiki-posts in Markdown... If something - anything - requires more than 90 seconds of his time, he writes a script to automate that.
xxx: So we're sitting here, looking through his, uhm, "legacy"
xxx: You're gonna love this
xxx: smack-my-bitch-up.sh - sends a text message "late at work" to his wife (apparently). Automatically picks reasons from an array of strings, randomly. Runs inside a cron-job. The job fires if there are active SSH-sessions on the server after 9pm with his login.
xxx: kumar-asshole.sh - scans the inbox for emails from "Kumar" (a DBA at our clients). Looks for keywords like "help", "trouble", "sorry" etc. If keywords are found - the script SSHes into the clients server and rolls back the staging database to the latest backup. Then sends a reply "no worries mate, be careful next time".
xxx: hangover.sh - another cron-job that is set to specific dates. Sends automated emails like "not feeling well/gonna work from home" etc. Adds a random "reason" from another predefined array of strings. Fires if there are no interactive sessions on the server at 8:45am.
xxx: (and the oscar goes to) fuckingcoffee.sh - this one waits exactly 17 seconds (!), then opens an SSH session to our coffee-machine (we had no frikin idea the coffee machine is on the network, runs linux and has SSHD up and running) and sends some weird gibberish to it. Looks binary. Turns out this thing starts brewing a mid-sized half-caf latte and waits another 24 (!) seconds before pouring it into a cup. The timing is exactly how long it takes to walk to the machine from the dudes desk.
xxx: holy sh*t I'm keeping those
Credit: http://bit.ly/1jcTuTT
The bash scripts weren't bogus, you can find his scripts on the this github URL:
https://github.com/narkoz/...53 -
Chatting on Slack with a junior dev:
[Junior Dev] How do I get that file from the server ?
[Me] ssh into it and then use scp
I see Junior across the room, literally saying "shshh..." at the computer.
Packed my stuff and quit that day.12 -
!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 -
Guys I've been working on this site for months now. Can you help me and test it? (Write me your feedback on comments pls)
Link: https://localhost:808013 -
I saw this as a ./ comment a while back on a discussion about dev tools (sorry... don't have a link to the actual post...) It was so good that I printed it off and pinned it to my cube. Thought I'd share it here--
"The pain in programming doesn't come from the tools. Yeah, it's a pain to learn the tools, but that's short lived. The real pain comes from the nature of programming. It's caused by having to tell the computer in excruciating detail exactly what you want it to do without glossing over any of the 'you know what I mean' steps, because the computer certainly doesn't know what you mean. And not only do you have to tell it how to do the job when everything is working as it should, you have to anticipate all the ways in which things could fail and tell the computer what to do in those cases, too. THAT'S the painful part of programming--the programming. No tool is going to fix that."4 -
Put it on a poster:
"It's ok to:
say "I don't know"
ask for more clarity
stay at home when you feel ill
say you don't understand
ask what acronyms stand for
ask why, and why not
forget things
introduce yourself
depend on the team
ask for help
not know everything
have quiet days
have loud days,
to talk,
joke and laugh
put your headphones on
say "No" when you're too busy
make mistakes
sing
sigh
not check your email out of hours
not check your email constantly during hours
just Slack it
walk over and ask someone face-to-face
go somewhere else to concentrate
offer feedback on other people's work
challenge things you're not comfortable with
say yes when anyone does a coffee run
prefer tea
snack
have a messy desk
have a tidy desk
work how you like to work
ask the management to fix it
have off-days
have days off
(From UK Government Digital Service: https://gds.blog.gov.uk/2016/05/...)7 -
Once a day, take some time to read your colleagues' commits.
You will see how they work, you will learn how they solve problems, you will understand their flow and you will know more and more parts of the code base.1 -
Don't be afraid to question senior devs as you go through your career. You'll learn a lot yourself, and any senior worth their salt will be open to the dialog. You'll learn a lot about the topic and potentially about the people you work with. Never stop learning and stay relevant with technology.1
-
"Senior Engineer/Dev/etc." is just the title for the guy who's learned from making the most mistakes.2