82 karma · joined December 8, 2016
And no, that doesn't make Python and Java old hat or redundant.
(https://medium.com/@jeff_52578/how-a-failed-kickstarter-camp...)
Source: I've lived and worked (and continue to do so) as a software developer, technical lead and CTO in London and have been in several different sectors.
You speak of cargo cult, but your entire comment reeks of it. Ok, we understand, you like being able to isolate yourself. That's nice, and I'm glad you found a niche, but it's not the same for the vast majority of jobs and people. You call other people lazy, but I think perhaps that's just you. Social interaction and moving above an intermediate level where you can isolate yourself is hard work. Don't be so dismissive of others that strive for more.
Working remotely is great for the unambitious and the antisocial. Please stop trying to put those who do more down though.
Pretty much, if you don't own the service, you don't get to decide where in the queue you are for a fix.
Yes, it does indeed work both ways. Just because you don't understand this doesn't make you in any way correct.
I'm not really sure what your second paragraph means. Are you saying you job hunt while at work? That's not a professional thing to be doing. In any case, writing a cover letter is very easy, so being unable to do that probably means you need to work on your communication skills. Heck, with the amount of posts you've stuck onto HN today alone, you could have knocked up a short cover letter that would suit 90% of technical job applications, so this can't be a time problem for you.
From my own experience, it's really hard to know what's bad, what's good and what's an acceptable workaround if you've never seen anything different. Myself, I got lucky and ended up working on a project after the start of my career with someone who could explain the whats and (more importantly) the whys of bad/good/ugly code bases.
Generally, try and get some skill in being able to view a codebase from a high level. Draw it out on a whiteboard in boxes. Perhaps do this on other, pet projects first as it's nearly impossible to do this with a spaghetti-code project. If you can't pick out modular parts, then you have a big ball of mud. If you can, try and work on making and keeping them uncoupled. If you can, try and work on finding the natural boundaries of the other code you couldn't break up, and make those less coupled (you don't need to solve the coupling problems all at once!).
Are there a mix of architectural patterns in the code? This is pretty common when you're working on a legacy project. It's what happens when you get someone who doesn't really know how to architect, or there were a bunch of folks throughout the history of the project who (probably) had the right intentions, but didn't get it finished. Or, and this is the worst, you had two or more team members trying to bend the project to their own preferences without communicating with each other. If this is the case, talk to your team, agree on one and then you can work towards getting the style consistant. You don't even need to pick the best one. Getting a project into a consistant state is better than having an ugly mix and match.
Are there a bunch of mixed up design patterns floating around? Try and refactor those out as much as possible. Design patterns are great, and you should use them where appropriate. But if you find a lot of them nested within each other, it's not a good sign and probably indicates someone at some point swallowed a design pattern book and thought it would be a good idea to implement them. All of them. Nested patterns can more the likely be refactored out to simplify the code. Though again, make sure you understand what they are there for first. Otherwise you may be unpicking something intentionally complex that needs to exist to remove complexity elsewhere.
What does the DB look like? Is it designed around the projects business logic? Is this sensible for your project? Personally, I dislike putting any business logic into the data storage layer but it might be sensible for your particular project, so YMMV. If business logic in the DB is causing nasty workarounds, then you may have something else to refactor there, though this may not be possible.
Never refactor just for the sake of it! If you don't have buy-in for your ideas on how to improve a code-base from the rest of your team, you're going to be creating problems. You may also be missing critical information that your tech-lead knows about and made design decisions based on it. There have been several times I've tried to make things better as a Junior dev, only to find out I'd made some bad assumptions and created a mess.
Don't refactor without tests either. The system may be reliant on strange code, so make passing tests before changing things. That way you at least know the behaviour hasn't changed.
The entire thing was brought in to remove the silos between SysOps and Dev. If you have people in the "DevOps" role, then you've just created a new silo, which means you just have traditional SysOps with a new and fashionable, but less meaningful name.
That allows others who may be doing something more directly for society to continue doing so.
https://www.terraform.io/docs/providers/aws/r/lambda_functio...
Ok, that's just plain wrong and absolutely wreckless advice. Everything from software development 101 classes to OWASP data validation can call you on that. If you don't understand why you're wrong, please, please, please stop developing software now until you can understand it.
If you don't know enough about your own systems requirements, lists like this are going to have you doing work that you don't understand, doesn't need doing (or worse, is detrimental) and if you do, you probably don't need to be using checklists like this to do your job.
Source: I live and work in London and have done so for the last 5 1/2 years
It doesn't look on demand, or anything really like a taxi service, so it's quite unlike Uber or other taxi services.
I work in London, so Uber is not really much use to me. I live on the outskirts of London (technically London but a few miles out and TfL cease to exist. It's bordering on rural) and the local cab companies/public transport work just fine for everything I need. I grew up in a not small, but not giant town and Uber is no more useful or cost efficient than the local taxis (public transport os horrible though).
So sure. If Uber vanish tomorrow it'll make zero impact on my life beyond not having that particular train crash to watch in the media. In fact, I'd prefer Uber die unless they start being lawful/stop being asshats and stop this crappy "but the rules are in our waaaaay!" attitude.
Of course, if it's that important, then you'd be foolish to not have invested in a better solution, or to not have a proper SLA with a third party.
Bumping a well behaving passenger in preference of a "more important" one doesn't really fall into either category.
Considering the passenger in this story has already consulted legal counsil, I'm thinking the lawyer agrees that he did nothing wrong.
That's not to say they can't ask you about data structures, but they shouldn't be asking you to code them up from first principles if it's something the language can do for you.
I find it much more fruitful to have a technical chat with candidates instead of being dogmatic about asking toy questions. It's pretty obvious when someone doesn't know what a linked list is with a 30 second chat. Heck, even drawing a few boxes and arrows on a napkin will suffice.