Maybe you should stop practicing interviews, and start practicing being better at your job?
282 karma · joined November 25, 2018
Maybe you should stop practicing interviews, and start practicing being better at your job?
I'm not the US, but I find it hard to imagine it is much different in Chicago to where I am in Northern England - companies are dying to find good developers. Every company I've worked for, they always ask me "do you have any developer friends that would work here?". So why aren't they asking you to stay on as a perm employee once your contract is up? It sounds like you need to work on getting better at your job and delivering value to the companies that you work for.
If you don't make the football team - is it because you are bad at try-outs or are you just bad at football itself? (Sorry, brutally honest.)
Just go on any of the big job sites, search "Junior Ruby on Rails" in your area and take a look at whats available. If you find some good jobs, apply, go for an interview - if you get an offer put that to your current employer, maybe they will match it, if not you now have the option of leaving to a higher paid job if thats what you want. Its pretty simple really!
EDIT: Sorry I read that you are "outside london", but really you said you are "just outside london" - does that mean you can commute into london? If so then at 23k you are being paid far below market rates.
This is what I'm talking about. Not just "Hey can I see your codebase? Oh, you don't have 100% test coverage and I've seen some variable names that don't make sense, no thanks bye", which I feel is how some people have interpreted my post but I probably could have made that more clear.
If I see a codebase that is blatantly vulnerable to something like SQL injection (i.e. GET parameters being referenced directly in SQL query strings) then this would probably be a deal breaker for me. I get that nothings perfect but something like that would indicate an extremely poor competency of the development team.
EDIT: That said there is another side of the coin - the kind of place where developers spend hours discussing things like how to name a class or a variable. That would also be a frustrating place to work in - its about getting the balance right. Also seeing the way the developers talk about their code would be interesting - are they dead-set and have an "emotional" attachment to their way of doing things - or are they open to new ideas and willing to discuss pros/cons of differing solutions and make compromises as a team.
You're absolutely right about that - there is always a balance to be achieved between delivering a feature/product on time and writing maintainable / "good" code.
What would be a red flag for me as an interviewee would be to see a codebase with poor standards, and then see pull requests open with code that wasn't any better. If the quality of the code is only getting worse that makes my life as a developer pretty miserable.
Nothing is perfect but in my experience the difference between working with a well thought-out and architected codebase and something that has been hacked together as proof-of-concept is immense. Fewer bugs, fewer security vulnerabilities, the ability to deliver features faster etc. I don't think that code quality is just something for developers to pat themselves on the back for - it genuinely effects business outcomes.
Unless you want to be a saint and donate all your money to charity then there will always be people less fortunate than you. Though perhaps donating some money to charity will make you feel better about it? And of course be a good thing to do. But to ruin your mental and physical health by working yourself silly just because there are others who have to go through the daily grind in worse conditions would be a real shame.
Some people spend their money on fancy cars or big houses, you spend your money on 2-3 months off, think of it that way.
Also, perhaps you should look into freelancing sites like toptal? I don't have experience using them myself but from what I hear if you are good enough to pass the interviews then they have a wide range of work available and you can choose how many hours per week you want to work. Apparently the pay is not as good as you would get in New York but it might be enough to live on if you have a simple life. Perhaps consider working 20-30 hours a week after your break so you don't have to feel guilty about using up all your savings?
Haven't we been through that before?
However, FIRE as some kind of end-goal to be achieved by all means necessary is unlikely to make many people happy. Reading the financial independence subreddit, many people think of FIRE as some holy grail - like they will finally be happy once have saved up enough money that they can quit a job they hate. I dont think its healthy to obsess over some kind of medium-distant goal and put all your energy towards it thinking "I will be happy when I'm financially independent".
The old cliche "life is a journey, not a goal" really applies here. Some (though not many) even argue that you shouldn't have kids because they cost so much and will delay your FIRE.
What? Are you living in the same world as me?
Pretty much every industry apart from manual labour or craftsmanship related work uses software. If you work in an office chances you spend most of your time using software.
Then people go home and play on their smartphones which connect to back-end API servers developed by software engineers or stream films of netflix, also developed by software engineers.
People all have a basic idea of what makes you ill, what various diseases, treatments etc. are. But most people don't understand the intricacies of the endocrine system.
People all have a basic understanding of the law, what kind of sentences to expect for what crimes, how court works etc. But most people don't understand <INSERT_COMPLICATED_ASPECT_OF_LAW>.
You see where I am going with this..
People all have a basic idea of how the internet works (you connect to the network and data is returned to your computer), the difference between 4G and Wi-fi etc. But most people won't be able to explain the difference between RSA cryptogrpahy and eliptic curve cryptography.
Frontend:
- Should I use a frontend framework with backend API for a single-page application? or use a standard web site with no distinction between frontend/backend.
- How will I handle mobile responsiveness of the html/css?
- How will I server css & js assets? Use a CDN or host them locally?
- Will I minify css & js?
Backend:
- What business requirements will I take into account when choosing a language/framework?
- Is speed and concurrency a must (perhaps choose Golang)? Or rapid prototyping and complex business logic (perhaps Ruby on Rails or Django)?
- Will I write a monolithic application or go for microservices?
- How important is security? Will my framework prevent vulnerabilities like XSS and SQL injection automatically?
- What web server should I use? What kind of scaling requirements do we have?
- How will we handle version control? What processes need to be put in place around deployment?
- How do we handle deployment?
Database:
- Relation SQL database or NoSQL?
- Are there any cases where I will want to de-normalise my data right away or should I wait
- How can I design my schema to be flexible yet still scalable?
- What columns need to be indexed?
Hosting:
- Use a cloud host? (AWS, Google, Azure...)
- Do we need dockerized deployments?
- Should we use kubernetes or a more managed solution?
- How important is vendor lock-in?
- How do we handle config secrets (like API keys)
- How do we handle changes in configuration (i.e. use Chef/Ansible/Terraform etc.)
All of that requires a significant amount of engineering and coding to get working. Just using a frontend framework does not give you a working application, you still have to code that application.
Though I would say props for trying to do some market validation and getting real feedback rather than letting an idea fester in your head without telling anyone. You will find an idea worth working on eventually.
There is your problem. You naively fell for the BS coming out of some many startups these days..
> I didn’t accept it straight away. To be honest, I was still holding out, hoping that some trendier startup would come along and offer me a job
Seriously? Get real.. If you want to exclusively work for startups that have bean bags in their offices and tell everybody that they are changing the world with whatever silly laundry/food-delivery/ironing-on-demand app they have then thats fine but don't put out a sob story when you realise that these startups are no different than any other business and don't give a damn about changing the world or helping their employees they are just there to make money.
I'm sorry to be harsh on this person but this is quite a dumb post. What is the difference between hacking a celebrity vs an ordinary person? None.
Any penetration testing / security consultancy will be able to do what you're asking for, provided you can pay their rate.
> Does this service exist? If not, is this a million-dollar start-up idea?
No it is definitely not a million-dollar startup idea. It also wouldn't be a startup it would be a consultancy. Penetration testing firms can easily charge clients up to around $1000 / day. How many individuals are going to pay multiples of $1000 to see how secure their online data is?
On top of that it prevents really bad coders from rolling their own in a really bad way. Remember when everybody was coding their own MVC framework in PHP?
As for C# not parsing JSON correctly, that seems more like a problem with a language or library not anything to do with frameworks?
In that situation I would consider the "Master Plumber" akin to a lead developer or project manager. Which goes back to my main point - in software development you eventually need to either move to a management/leadership role or specialise in domain specific fields like security, computer graphics, systems architecture etc.
For a software developer working on standard CRUD database-backed applications, the difference in productivity and usefulness to the company at 5-10 years is really not that different at 20 years.
This effect is also compounded by the fact that the less experienced developer now looks a lot better if he is essentially doing the exact same job that a 20 year experience developer is doing.
Note that what I'm talking about has very little to do with "keeping up with the latest frontend frameworks" or stuff like that. Software engineering in this sense is like a trade - if your sink is broken and you need it fixed, would you hire pay $15 / hour for a plumber with 5 years experience or pay $30 / hour for a plumber with 10 years experience? You know that the sink can be easily fixed by most decent plumbers so the amount of experience they have really doesn't matter beyond a certain point.
Maybe you are applying to jobs which are above your pay grade? Perhaps you need to take a small pay cut to get a job at a company where you can grow your skills and learn the career wisdom that you say you lack?
You get used to the money very quickly, if you are smart you will be saving at least 30-40k a year depending on where you live (I assume you're in London based on your day rate). Even though it is a huge amount of money and certainly a first world problem, if not a 1% world problem, you might still get bored with your job. And If you do ever get bored then having a mountain of savings and knowing that you can always go back to contracting if you want to puts you in the perfect position to start your own business.
But it seems like you were thinking that you would do your own startup because "thats what you're supposed to do". If you are happy contracting and enjoying the money from it then stick with that. Doing your own startup can be a great experience but it is not some kind of nirvana that everybody has to aspire to.
EDIT: I would also recommend reading this article for a perspective on how to think about your work. These days in tech everybody tells you that you have to "do what you love", and generally that is assumed to be orthogonal to what earns the most money. Don't take that advice as gospel. If you are happy working as a javascript contractor and earning a sh*t-ton of money then you are in a very good place. The hacker news mindset has created a lot of startup mythology around "doing your own thing" and "breaking the mould" which might make you think that its something you need to do too.
https://www.theatlantic.com/ideas/archive/2019/02/religion-w...
So management will only see a developer with 3 years experience and one with 15 years doing pretty much exactly the same job - this has the effect of making the less experienced developer look much more talented i.e. "Wow hes only been doing this for 3 years but is pushing out features at the same rate as a far more experienced dev!".
The best way around this is to specialise - for example in IT security, cloud computing, computer graphics, computer vision, machine learning, data science etc. Otherwise if you have been a developer for say 20 years but you are still making the same basic CRUD apps that 22 years old are coding - it looks like you have no drive or motivation - which is fine if you just want a 9-5 job but be aware that you may not be very impressive when it comes to find a new job.
EDIT: Sorry this is not about the Indian IT industry in specific since I don't have any experience working there but I think the pattern is pretty common in all countries.
"Denormalization is not somthing you have to deal with in MongoDB."
What do you mean exactly? If you have a piece of data, lets say an address, that exists in more than one place as is the mongodb way, you will absolutely have to deal with the fact that you need to now update that data multiple times. So denormalization is very mcuh some you have to deal with in Mongodb.
Just like in a relational database, denormalization has serious consequences and should only be used when the need for performance outweighs the risks of having much more complex code and hence potentially many more hard-to-debug errors.