Ebook Preview
Ebook Preview
Survive The
Tech
Industry: A
Handbook
99 Essential Tips for Surviving in
the Digital World
Stuart Todd
How To Survive The Tech Industry Page 1 of 62
How To
Survive The
Tech
Industry: A
Handbook
Stuart Todd
How To Survive The Tech Industry Page 2 of 62
TO CHERYL,
Tip 11: Don’t settle. It’s okay to turn down job offers.......................................39
I wasn’t happy but that was normal, I hadn’t been happy for years, everyone
knew it - people avoided me, I was miserable, the old me had somehow slowly
faded away, as hard as I tried to be that guy, he was gone, this shell remained.
Coding wasn’t fun anymore, gone where the days where I’d code for fun, where
i’d wake up and just start coding for the hell of it. It used to be exciting and fun.
I loved it. I’d always wanted to be a coder since I was a kid.
But now, I was churning out sub-standard work, cutting corners, working 12
hours a day despite only being paid for 8. Working for a toxic company who
only cared about their bottom line.
I sat down at my desk, opened up my computer and felt sick to the bottom of
my stomach, I couldn’t do this anymore, I dreamt about quitting, about
standing up and walking out.
I typed out my resignation email, deleted it, typed it out again, deleted it, typed
it one last time... thinking ‘Just hit send’. I stared it for another few minutes,
then thought, screw it.... why not?
Hands down the BEST decision I ever made. Years later I can look back and
analyse it, I was completely burnt out, I was stagnant, my skills were massively
out of date. I was lost.
I gured I’ll take a few weeks to clear my head, weeks turned into months,
months turned into years. I stopped coding for 3 years, I couldn’t face opening
my laptop.
These days, I love coding again! The pre-burnout me is long gone, I’ve accepted
I’m not that guy anymore, a new maturer version emerged and he wanted to
help others.
Within the industry, the trick is knowing how to separate the good from the bad
and the ugly. Knowing what skills you need to survive and thrive so you don’t
repeat the same mistakes I’ve made during my career.
It’s important to strive for excellence in software engineering and not settle for
less. As software engineers we have to continually learn to stay relevant in an
ever evolving industry.
Companies need to be better, stop being so greedy and champion quality over
the need to make as much money as possible.
Lets stop screwing people over and be better. I hold myself and others to a high
standard.
Over the years for worked for some good companies and some (really) bad
companies! My focus is delivering quality work and helping others do so.
I love coding (yes, even outside of work), drawing, cooking, working out and
writing.
I’m happily married (most of the time) with two children and two dogs. My
favourite Spider-Man is Andrew Gar eld and my all best time ever video game
is Final Fantasy Tactics.
We’re family.
Unless your boss is Vin Diesel or you’re actually working for a family run
business then work isn’t your family. I’m not saying you can’t be friendly but
you’re there to do a job, you’re not going to ask your boss to bring you a
McDonalds breakfast when you’re hungover or watch your dogs while you go
on holiday.
The lines between the professional and personal can blur. An exaggerated
sense of loyalty can be harmful and creates an environment where employees
can be taken advantage of. Avoid.
But why? Well, they’re most likely cutting corners and rushing projects. Which
in itself is ne, as long as the technical debt is paid back, be sure to nd out
during the interview. If their response is unsatisfactory, my advice? Don’t
bother.
If a company can't handle its hiring process e ciently, it's probably having
trouble with other parts of its operations as well. So, unless you love endless
rounds of 'tell me about a time when...', it might be better to pass on these
interview marathons.
Watch out for overly generic questions, such as "What is your biggest
weakness?" or "Where do you see yourself in ve years?". These questions
o er little insight into a candidate's true t for the position.
Additionally, questions that are irrelevant to the job at hand, like "If you were
suddenly transformed into a sh, what would you do?" are just annoying and
ridiculous.
Lack of transparency.
When a company is vague about job responsibilities, growth opportunities, or
the speci cs of compensation and bene ts, it can indicate potential
disorganisation or a lack of commitment to employee satisfaction.
Imagine joining a ym and the weights max out at 10kg. Growth isn’t impossible
but gainz are going to be harder to come by.
Imagine being at a party where people pretend you’re not even there, or worse,
make you question your own reality and experiences. Anyway, enough about
my social life (cries), but you get the picture, right?
Just remember... that’s the kind of environment you might be walking into if
you encounter these toxic behaviours during the hiring process.
Resistance to change.
If an organisation is rigid and unwilling to adapt, it could indicate a lack of
innovation and a reluctance to evolve with industry trends. This resistance can
sti e progress, leading to outdated practices and missed opportunities for
growth.
Imagine working in a place where every new idea is met with the same
response: “We’ve always done it this way.” If you’re passionate about bringing
fresh perspectives and driving improvements, you’re in for an uphill battle.
Lack of communication.
Delays and poor communication can suggest that the company is disorganised
or that they don't prioritise the candidate experience. If they can’t manage
timely updates during the interview stage, it might indicate that they struggle
with e ective communication and respect for employees once they're on
board.
No formal o er.
A formal o er letter is not just a formality; it's a crucial document that outlines
the terms of your employment, including salary, bene ts, and job
responsibilities. Without it, you're left in a state of limbo, with no concrete
agreement or protection.
A formal o er letter ensures that both parties are on the same page and
provides a clear, binding understanding of the employment terms. If a
company can't manage this basic step.... actually, why am I still going on about
this? If there’s no contract, run a mile (or don’t take the job). End of.
Under pressure, I hastily accepted the o er on the spot. What followed was
possibly the worst job I’ve ever had. I won’t go into details, but imagine
stubbing your toe but the pain never ends—also it’s ten times worse and
someone is stabbing forks into your eyeballs (if they’re reading this, hiya!)
Hey! It’s not all bad, there’s GOOD companies out there, but how do you
separate the good from the bad and the ugly?
Well…
This respect for your time isn’t just about e ciency; it’s a re ection of the
company's broader culture. When they manage the hiring process e ectively
and promptly, it suggests that they value their employees' time and
productivity once you’re on board.
An e ective job description provides a clear and honest overview of the role,
highlighting key responsibilities, essential quali cations, and core skills needed.
This approach not only makes for a more engaging and insightful interview but
also suggests a work environment that values open dialogue and adaptability.
There's a natural ow to the conversation, with both sides sharing insights and
asking questions that delve deeper into each other’s experiences and ideas.
The back-and-forth exchange allows you to discuss your skills and experiences
in a more relaxed and authentic manner.
Need to source out your cosplay out t, for the upcoming weekend of LARP?
Hey, no bother, take the afternoon, make up the hours another time.
It suggests that the company invests in its employees, fosters a positive culture,
and provides opportunities for growth, making it a place where people want to
stay long-term. This stability also indicates that the company is likely well-
managed and successful, creating a reliable and supportive atmosphere for
everyone.
P.S - if the job description states ‘competitive’ salary - it probably isn’t (shocker!).
You need to actually see the salary amount.
These perks often include comprehensive health bene ts, generous retirement
plans, wellness programmes, exible work arrangements, free hugs (maybe...)
and professional development opportunities.
By the way, pizza every other month ISN’T a perk, although never turn down free
pizza, unless it’s got pineapple on it....
For every success I’ve had many more failures. Sometimes you don’t
even know you’ve failed at all. Sometimes you’re ghosted and left in the
dark as to why, left alone to your own thoughts.
Other times, they may not follow up as a matter of practice, leaving candidates
in the dark about their application status.
While it's never a pleasant experience, it's important to remember that being
ghosted or rejected isn't necessarily a re ection of your quali cations or
potential. It could be due to a variety of factors beyond your control.
And yeah, those companies / recruiters who intentionally ghost candidates are
100% dicks, a big bunch of love sausages who don’t deserve a second thought,
move on, forget them.
Find out all their dirty little secrets beforehand, remind them that if they don’t
o er the role you’ll destroy them... or maybe it’ll give you some talking points
to help the conversation ow more naturally, either way... do it.
Learn about the history of the company, how long they have operated? Did
they have any ties to illegal sweat shops? What do they specialise in? The more
information you have, the better you can tailor your responses to their
questions.
List out each of the skills and write notes beside each one. What’s your skill
level? Are you keeping up to date with industry standards? When did you last
use those skills and why? Is this a weakness? What are you going to do about it
if it is?
At some point in the interview you’re going to be asked, ‘Do you have any
questions for us?’. Be armed with a list of questions, when they’re answering
those questions, actively take notes and hit them with a follow-up question. It
shows you’re actually listening and are interested in the role itself.
STAR method.
‘’Tell me about a time where you’ve experienced a challenge, did you overcome
it? If so, how?’
When talking about yourself, keep it concise, they don’t want to know the ins
and outs of the junction system in FF8 or how much you enjoy gardening.
This can help set you apart in a competitive job market. I would recommend
waiting one business day before sending this note out.
Thank them for their time, don’t be too pushy but highlight how your skills
match the role they’re trying to ll.
Oh and don’t forget to subtly hint that you’ve kidnapped their spouse and if
they ever want to see them again you expect a job o er by the end of the day.
Question Answer
Please tell me Well, where do I start? I'm Nic Cage, but in this reality,
about yourself? I'm a software engineer. So picture this—it's like 'Face/
O ,' but instead of swapping faces, I swap between
programming languages. One minute, I'm writing
pristine PHP, the next, I'm deep into React, building
interfaces faster than a Ferrari.
Great.. Err.. Why Why do I want to work here? Well, let me tell you, it's
do you want to like when I read a script and I just feel it—you know
work here? what I mean? It’s not just about the paycheck or the
prestige, it’s about being part of something bigger.
Love it! What are For strengths—let's talk versatility. Just like my lm
your strengths career, I can adapt to any environment. Now,
and weaknesses? weaknesses? Well, I’d say my biggest weakness is that I
sometimes dive too deep. I get so invested in solving a
problem or improving a system that I’ll spend hours
chasing the ‘perfect solution’ but I’ve learned to lean on
my team more, trust them to share the load, and remind
myself that sometimes, ‘good enough’ is, well, good
enough.
I see. Can you Oh, let me take you back to a time when the codebase
describe a was in absolute chaos, like the Wild West of spaghetti
challenging code—untamed, unpredictable, and just waiting to
situation and implode. It was an e-commerce platform, handling
how you thousands of transactions a day, but the architecture
handled it? was ancient, like something you'd nd in the basement
of a museum.
Moving on. How First, I get a clear picture of the chaos. What’s the
do you prioritise deadline? What’s the impact? I start by tackling the
your work? urgent and the important. These are the high-octane
moments that need immediate action.
Why are you I'm leaving my current job because I’m at a juncture
leaving your where I’m eager to explore new horizons and challenges
current job? that align more closely with my long-term career goals.
Over the years, I’ve had the chance to work on some
incredible projects and learn from a talented team,
which has been immensely rewarding. However, I’ve
reached a point where I feel I’ve hit the limits of what I
can achieve in my current role.
Can you explain During that period, I took time o to focus on personal
this gap in your growth and re ection, which is as vital to a career as
CV? character development is to a lm. I used this time to
explore new interests, engage in self-improvement, and
recharge my creative energies. Think of it as a character
arc where I had to step away from the spotlight to
rejuvenate and return with a fresh perspective.
Can you provide I’m in the middle of a high-stakes project, John Travolta
an example of a somehow managed to steal my face. I’ve got meetings to
time you worked attend, deadlines to meet, and a whole lot of confusion
well under to sort out.
pressure?
Now, I’m faced with a dilemma: how do I navigate
through this bizarre, face-swapping situation while still
maintaining my sanity and getting things done? I dive
into problem-solving mode, making quick decisions and
managing tasks.
Questions Answers
Follow-up Questions:
• How does this role t into the company's long-
term goals?
• What are the key milestones or projects that the
company aims to achieve in the next few years?
How does the This question uncovers how the company manages its
company handle technical challenges and ensures the sustainability of its
technical debt technolo y stack. It shows whether they proactively
and prioritise address tech debt or only react to issues as they arise.
tech
improvements? Follow-up Questions:
• Can you provide an example of a recent tech
debt issue and how it was resolved?
• How often do you review and address technical
debt?
Follow-up Questions:
• What are the main tasks or projects I would be
working on daily?
• How much of the day is spent on meetings
versus individual work?
What qualities or This question helps you assess if your skills and
skills does the attributes align with what the company values most for
ideal candidate the role.
for this role
possess? Follow-up Questions:
• Can you give an example of how these qualities
contribute to success in this role?
• How do you measure success in this position?
What is the team Understanding the team dynamics and who you will
structure, and interact with regularly helps you assess how well you
who would I be might t into the existing team structure.
working closely
with? Follow-up Questions:
• How are team roles and responsibilities de ned?
• Can you describe the team’s working style and
communication practices?
How does the This question sheds light on the company’s approach to
company stay staying relevant and leading in its sector. It shows how
competitive and proactive they are about innovation and industry
innovative trends.
within the
industry? Follow-up Questions:
• What recent innovations or initiatives has the
company implemented?
• How does the company gather and incorporate
feedback from customers or industry
developments?
What are the This question helps you understand the immediate
current focus of the team and how your role would contribute
priorities or key to current objectives. It provides clarity on what to
projects for the expect if you join the team.
team I would be
joining? Follow-up Questions:
• How do these projects align with the company’s
overall goals?
• What role would I play in these projects, and
who will I be collaborating with?
If the interviewer isn’t sure of the answer or gives you some generic lip service,
something like... ‘Erm... yes this is something we’re aware of and it’s
something we need to do better’, they basically don’t know how to answer the
given question. Imagine if you did that??!
Good question.
Well, nothing unless you get a job o er, then you need to consider if it’s the
right move for you (sometimes you’ve got no choice and the reality is that
money pays the bills at the end of the day).
Later in the book, we cover best practices and design patterns that’ll give you
the edge over the competition and help you nail the test, but for now here’s
some basic tips:
6) Embrace feedback.
Once you’ve walked them through your tech test, ask for their feedback.
Feedback is a valuable tool for growth and improvement. Approach feedback
with an open mind and use it to re ne your skills and enhance your work.
• Skip the sel es, especially the holiday snaps—no one needs to see your abs
when they're trying to assess your skills!
• If your CV includes lines like, “With the fervour of Hemin way and the
precision of a Swiss watch, I orchestrate projects with an unparalleled zest,”
it might be a sign you’ve gone a bit overboard and / or you’ve used ChatGPT.
Don’t.
• Include a personal statement summarising your skillset and abilities. Don’t
forget to mention that your passionate and self-motivated, is it even a
personal statement if you don’t?
• List your skills. Don’t go overboard here, if you’ve listed every skill then most
likely you’re exaggerating and it’s not a good look. Include the skills,
frameworks, languages etc you’re competent in.
• Skip the ‘References Available Upon Request’ Line. It’s like telling everyone
you’re a human being. Everyone already knows!
• Add your contact details. Include your name, phone number, email address
and national insurance number ( joke.. actually don’t).
• The education section is important. List all your education with associated
dates. Learning how to change a car tyre doesn’t count (unless you’re a
mechanic).
• Avoid Using Buzzwords Like ‘Guru’ or ‘Ninja’. Just don’t.
• Don’t forget your work experience. Stick to the facts, include dates, job title
and a few bullet points summarising your responsibilities.
• Build a portfolio: Showcase your skills. Make sure it’s professional and easy
to navigate!
• Build a network: Building an online presence is powerful. You open
yourself up to possibilities which might otherwise have passed you by.
• Open source projects: Contribute to or start open source projects. It not
only boosts your pro le but also connects you with other developers.
• Be social: Post regularly about your tech journey, share your experiences
with like-minded people.
• Local networking events: Attend tech meet-ups and conferences. Get in
with the local tech scene - you never know!
• Develop a personal brand: Create a memorable online persona, complete
with a catchy handle and consistent branding across social media platforms.
• Build in public: Include wins, struggles, and what you’re learning.
Authenticity can be very engaging.
• Start a YouTube channel: Produce a series of tutorials or “how-to” videos
on niche topics you’re passionate about.
• Interactive CV: Create a web-based resume that includes interactive
elements like clickable projects or live demos of your work.
I used to get seriously annoyed when people said something like this to
me. My internal response was always something like, “Yeah, try saying
that after yet another rejection.” or “Yeah, you haven’t had to waste yet
another afternoon taking tech tests.”
The truth is, after a while, rejection feels like a second job. If you’re not pushing
yourself or striving to improve, rejections won’t come knocking at your door.
But if you’re genuinely aiming for growth, you'll need to take those rejections
like a champ (that said, I get it, it still stings!).
So, here’s the deal: every failure is basically an opportunity to growth and
learn.
Actually listen to the feedback—yes, even if think they’re not seeing your true
potential and there’s chance in hell you’re going to share your last Rolo with
them.
Embrace it, set aside some quality time to address your weaknesses, and maybe
—just maybe—next time you’ll get that little bit of luck you need to land the job
of your dreams. You got this!
Absolutely, it's okay to turn down job o ers. Of course, the necessity to work
and earn money is a reality for most of us. However, if you're in a position to be
more selective, it’s perfectly ne to decline job o ers. Trust me, it beats the
alternative.
Imagine accepting a job o er, showing up on your rst day full of excitement
for this new chapter in your career, only to be completely let down.
Picture this: the person who interviewed you has left under mysterious
circumstances. Mentioning their name leads to awkward silence, until the CEO
steps in and blames them for all the company’s issues.
And it doesn’t end there. There’s zero quality control—no code reviews, no unit
tests. You’re dealing with legacy code over 15 years old, no documentation, sta
are happy lying and overcharging clients. To top it o , the CEO makes anti-
Semitic jokes, and everyone laughs.
This actually happened to me. I ignored major red ags because I was enticed
by the higher salary. My advice: be cautious. Don’t ignore red ags like I did. If
something doesn’t feel right, it’s okay to walk away.
I handed my notice in after 2 months. I couldn’t face another day working for a
company like that. Don’t be like me, turn down jobs that look a little shady, be
sure to check out their accounts on Companies House and sta review sites.
Don’t settle, keep looking--the right job for you is out there!
Ok, listen up! The tech industry can be a jungle, and if you want to
survive—and thrive—you've got to avoid being the dick everyone dreads
working with.
But how? It’s simpler than you think. Even the biggest dick can learn not to be a
dick (or learn to be a smaller dick). Remember, being a decent human being
isn’t just good for your career; it makes the tech world a better place for all of
us. So, don’t be a dick—be awesome!
Be punctual:
Time is money, people! Show up on time for meetings and hit those deadlines.
Your colleagues aren’t just sitting around waiting for you to grace them with
your presence (unless they actually are... anyway, moving on!).
Communicate Clearly:
Nobody has time for cryptic messages. Say what you mean, mean what you say,
and let’s keep the confusion to a minimum.
Acknowledge Contributions:
Give props where props are due. If someone does a killer job, let them—and
everyone else—know it.
Listen:
Your opinion isn’t the only one that matters. Tune into other perspectives and
ideas—you might learn something!
Integrity:
Don’t be shady. Honesty is the best policy, and cutting corners only gets you
into trouble.
Accountability:
Own your mistakes and x them. Playing the blame game isn’t a good look on
anyone.
Transparency:
Be open and clear about what you’re doing. It builds trust and makes
everyone’s life easier.
Stay Humble:
Arrogant dicks think they know it all. Be open to learning from everyone, even
the most junior members of the team—you might learn something!
It’s by no means easy but if you can set aside a few hours a week, you won’t go
far wrong.
I've seen junior developers face harsh criticism for making mistakes,
crashing production, or introducing bugs into the system. However,
these issues are often not the fault of the individual but rather a
symptom of team-wide shortcomings.
Code stu
"Every class should have one, and only one, reason to change.”
In essence, the Single Responsibility Principle states that a class should do one
thing and one thing only. When a class has more than one responsibility,
changes in one area may a ect the other, making the code brittle and harder to
maintain.
This violates SRP because the UserRegistration class is doing two things—
registering a user and sending an email.
Now, each class has only one responsibility, making the code easier to change
and extend.
"Software entities should be open for extension, but closed for modi cation."
The Open/Closed Principle means that you should be able to extend the
behaviour of a class without modifying its existing code. This is essential for
creating systems that can evolve without breaking existing functionality. Let’s
assume we need to calculate discounts for di erent types of customers, and we
currently have a single Discount class.
To follow OCP, we can refactor the code to make it open for extension but
closed for modi cation. By using inheritance or polymorphism, we avoid
changing the Discount class itself and instead create new discount types.
The Liskov Substitution Principle ensures that derived classes can stand in for
their base classes without causing issues. This principle helps maintain
polymorphism and prevents surprises in your code when objects are
substituted. If we have a base class Bird and a subclass Penguin, substituting
Penguin in place of Bird should not break the functionality.
This violates LSP because Penguin can't y, but it’s still inheriting the y
method from Bird.
Now, if we have a class RobotWorker, it will have to implement both work() and
eat(), even though robots don’t eat. A better design would be to split this
interface into smaller, focused interfaces:
"High-level modules should not depend on low-level modules. Both should depend
on abstractions."
The SOLID Principles are a set of design guidelines that help developers create
software that is easier to maintain, understand, and extend. These principles
were introduced by Robert C. Martin (Uncle Bob) and form the cornerstone of
modern object-oriented design.
If you can internalise these principles, you'll be well on your way to writing
code that's robust, scalable, and adaptable.
Mastering SOLID will push your career forward, equipping you with the skills
needed to build well-structured, high-quality software that stands the test of
time.
if...else and switch statements are essential tools in any programmer's toolkit.
They exist because they serve a fundamental purpose: handling conditional
logic in a clear and straightforward way.
These statements are highly e ective for scenarios where the logic is simple
and doesn’t involve a large number of conditions, such as:
For instance, you might use similar logic to determine access permissions, send
noti cations, or log user activities.
If you needed to modify, remove, or add conditions, would you have to update
each occurrence manually? What if you missed one? Imagine if there’s 20 of
these conditionals around the codebase?
If the conditions are simple and map directly to speci c actions or values, an
associative array (or map) can be an e ective alternative. The rst example
below is basic but you could use closures, maybe specify them in con guration
les?
Bene t: This enforces consistency across all roles, ensuring that every role
class has a getAccessMessage method. It also allows for polymorphism,
meaning the client code can interact with di erent role objects through the
same interface.
Bene t: This allows for clear separation of responsibilities. Each class handles
the logic speci c to its role, making the code more maintainable and extensible.
If a new role is needed, you can simply create a new class that implements the
Role interface without modifying existing code.
Bene t: This approach centralises the logic for creating role instances, making
the code easier to manage. If you need to add or change a role, you only need
to update this function. The use of match makes the code concise and readable.
Concept: The client code interacts with a Role object, but it doesn't need to
know the speci c type of the role. It simply calls the getAccessMessage method,
and the appropriate message is returned based on the actual object type.
Conclusion.
However, else-if and switch statements are not inherently bad. They can be
highly e ective for simpler scenarios where the logic is straightforward and
unlikely to change frequently. These control structures can provide clarity and
e ciency in cases where the number of conditions is small and well-de ned.
It’s all about nding the right tool for the job.