My experience has taught me how - in technology but also I suspect in other fields - companies tend to spend very little time defining important senior positions in terms of responsibilities, expectations and deliverables.
And yet, defining a simple but exhaustive list of the most common traits of successful leaders in technology isn’t actually that hard.
I need to admit I always enjoy interviewing candidates for software engineering positions: there is a unique power that comes with choosing the right people, bringing them into a team and observing how the best individuals can really make the difference.
While I have been relatively lucky in my hiring endeavour, it always somehow bothered me that I didn’t know why it worked the way it did.
System design interviews are becoming more and more common among top tier software companies inside and outside Silicon Valley.
Given that highly scalable systems are one of my areas of interest, in the last few months I had the opportunity to review what preparation material is available online - videos, tutorials and blog posts.
Not surprisingly, a lot of free and paid material is indeed available.
Throughout my career and especially In the last few years I had the opportunity to offer advice to tens of technology startups at different stages of maturity.
After having similar conversations with multiple people on the same topics I have decided to do a write up of the top 5 mistakes every non tech cofounder makes while trying to start a technology company.
My personal experience as an IT professional has always been that 1:1s often got deprioritized, continuously rescheduled for weeks or sometimes months, and when they did happen they were mostly used as opportunities to provide unidirectional top down updates.
As I have discovered relatively late in my career, 1:1s are instead by far the most important meetings as a manager.
Making software is hard and it’s been the case ever since the IT industry came about after WWII.
It comes with no surprise that people have continuously tried to come up with sets of rules and processes that would reduce the traditional risk associated with software development projects and increase speed of delivery and predictability.
The war for talent is here, in every field of business but especially within the software development space.
Over time I have experienced first hand how software engineering is a truly inventive profession with proven benefits associated with hiring top performers.
While the demand for software engineers is at all time highs and it’s quite hard to find great people - increasingly the problem is getting the right candidates - when you find them - to accept your offer.
How many times during our professional career we stumbled upon totally different points of views? And how many times this leads to conflict, pain and frustration at work!
Naxsi is an open source WAF module developed by NBS System and released under GPL v3.
In the past a nginx-naxsi standard Ubuntu package was available from the official repositories. Unfortunately this package is no longer maintained so we must now rebuild Nginx from source to use Naxsi.
If your web server is directly exposed to internet traffic it’s always a good idea to have some sort of Denial of Service protection enabled.
Nginx alone cannot protect from more complex and Distributed DOS attacks (that would require a CDN) but this is no reason for not having some basic protection in place, which is also very easy to setup.
More often than not we are required to make backups of mysql databases running in production.
If the db size is small there are relatively little problems. Once the database starts growing in size the risk is stealing resources away from your app and hence impact on customer experience.