For the non-tech savy, having one messaging app (Signal/SMS) was excellent because a user can send a message to a contact and it would automatically use signal if the recipient was also using it and use SMS when the recipient wasn't.
Now I get SMSs and have to gently remind the contact (or just reply in signal).
Or a frantic call from family "hey I can't message my boss, I have their contact but signal isn't finding the contact" then having to explain that SMS and signal are different.
worth mentioning that SMS messages are plaintext as they traverse the carrier network. They are also logged by seemingly any equipment that they traverse. Also when they aren't delivered immediately, they wait in a queue on the network waiting for the receiving device to "phone home" (pun intended 😎).
The caveat here is often times the plaintext message is in an encrypted tunnel (physical wireless layer, and data tunnels in carrier EPC) but at tunnel endpoints, SMSs are nakey
FYI, you can financially support Rebble and get perks like being able to reply with voice to messages. I don't personally do so but I know people who have had success with it.
For comparison, my Pebble with everything turned off (like health tracking, apps, steps, alarms etc) and only BT on for notifications, I get about a week still
Valid point. Again for the sake of discussion, technology evolves quickly. New tools are made out of the shortcoming of others. If docker evolves and a new tool - Kocker - is born, AI will need training data from best practices which should be generated by people.
This could unfold in many ways. For one there could a small group of people pushing technology forward. But people will need to be around to create requirements, which takes experience.
More likely, majority of engineers will likely just move up to a higher level of abstraction, letting new tools do the lower layer stuff. And any innovations in the lower levels of abstraction will be done by a small group of people with niche skills (take CPUs for example). This is the trend we saw historically. Assembly -> compilers -> lower languages -> interpreted languages -> scaling bare metal systems -> distributed systems -> virtual machines -> automation -> micro services etc etc
For discussion sake I will add that, using AI I have became so fast at creating "units of code" or restructuring. I ask it to solve a narrow narrow scope and introduce constraints (like conditional variable and which parameters, initial conditions). And it does. I have the experience validate by reading and to piece together the units of code but now my productivity near tripled.
I don't write comments anymore. I write what I neeed, ask it to comment the function, maybe I'll add something that is project specific.
And getting started with new technologies is easier as long as, like you said, keep the scope small.
AI will not replace programmers. Programmers that use AI will replace programmers who don't.
7 years ago when I started my career, My first project we sat down and designed the program and interfaces.
Today, we implement features using best practices, never sitting down to design and end up accumulating technical debt that we don't have funds or time to go back and fix.
Time to market is proportional to time to obsoletence. We don't design for longevity anymore :(
my experience with hackerrank is a company will use hackerrank platform to facilitate the online assessment - NOT look at someone "hacker rank" like you mentioned.
Candidates follows a link a company sent them and gives them an in-browser IDE to solve a problem. The platform records keystrokes, mouse events (like if you left the tab) etc etc. Then when you submit your code it is complied, executed in a sandbox, and tested with test cases. Based on which test cases pass, the execution time and memory usage, hacker rank will generate a report and fwd to the hiring team.
What I was saying in the above comment is if you had the right idea but your code didn't compile or failed the test case, it's as if you failed entirely. No hiring teams sits there and reads the code. Not even garuanteed that an engineer is reviewing your submission.
Hackerrank (to my knowledge) does not parse the code to determine your knowledge of algorithms, data structures, etc etc, it inferes it from which test cases passed and their execution time amd memory usage.
I agree with you. practically speaking, candidates don't have a way to tell if the problem they are solving applies to the role, especially when bringing tour skillset to a new-ish domain.
That being said, hackerrank generates a report based on if you pass or fail. Hiring managers tend to only look at the metrics in the report instead judging the candidate based on their approach to the problem. And for code that doesn't run, the metrics are nearly all 0. Not to mention there is no fucking debugger to step through the code and catch the 1 off index error that is common to make when you're under pressure.
Anyway I'm beginning to rant. There are a lot of things that should be addressed but as long as someone else can solve it and the candidate pool is large, there is no point to optimize the selection process (from a company point of view). They feel as if they are getting the best candidate because they assume better experienced == better chance of passing
when you say whiteboarding do you include programming tests or take home problems?
I stay away from FAANG like companies but my experience is everyone asks them. I'm curious what kind of roles don't - how can I keep an eye out for them?
But if people want to complain about the irrelevance of reversing a list or describing two different approaches to balanced trees... they'd probably complain more about being tested on generators and RC frequency response in low pass filters even if you only have to take it once.
LOL! absolutely.
I think the skills tested on tech interviews are important, though; At least fundamentals. I don't encounter many people that consider time and space complexity of a unit of code (big O notation) and that's unfortunate.
Data structs and their method for language built-ins are already optimized so I get that most people just use them but man, I see so many developers not even choose the correct structures. That includes me until I started leetcoding for a new job after 4 years of professionally work.
But of course, this needs to stay in reason. Asking Brainteasers and optimizations like dynamic programming are dick moves. I don't want my team to prematurely optimize and make our code base complex just cause.
another problem with tech tests is how broad of scope they cover - like everything you've learned when pursuing your degree.
Most other professional engineering disciplines have licensing obtained using FE and PE exams. Those exams are effectively "tech tests" equivalents but after passing them you get a license that you have to maintain. I can appreciate this approach since you can take CEU (continuing education) to maintain your license instead of taking the entire test all over again.
I never though software engineers would need a license but I would MUCH rather prefer grind to obtain a license ONCE which then I can use to fulfill tech test requirements and maintain the license with much less effort throughout the year.
I'd add to this "GMaps WV" (Google maps web view wrapper). It's available on FDroid and wraps the web version of google maps. I use it to find locations and GPS coordinates and then navigate to them in OSM bc OSM based applications are poor and doing so.
very good point! I find myself using ChatGPT more for references and I am also afraid what will happen if there isn't enough "human generated content" to train on. I can picture an edge case a chunk of the internet is AI generated content (with even users at the wheel). The the next wave of AI will train on previous gen AI output
A lot of my answers I get answered with ChatGPT. And I can always ask ChatGPT to tell me where I can look to verify the answer. I find myself on stack overflow for very specific or very technical topics.
I echo this.
For the non-tech savy, having one messaging app (Signal/SMS) was excellent because a user can send a message to a contact and it would automatically use signal if the recipient was also using it and use SMS when the recipient wasn't.
Now I get SMSs and have to gently remind the contact (or just reply in signal).
Or a frantic call from family "hey I can't message my boss, I have their contact but signal isn't finding the contact" then having to explain that SMS and signal are different.