What if you devote the first hour of the day to yourself, intentionally trying to improve an aspect of your life that you’ve been putting off for too long?
You can do that by reading, thinking, writing, meditating even. The Miracle Morning book can show you what and how to do it. Personally, the life SAVERS exercise is something I’ve stuck with for years now. Here are some other books that may be of interest to you.
Oh, and btw, if you spend half of that 1-hour on reading, you’ll end up reading 30 books per year (and here’s the math that proves it).
[DT]
We need more games that make us think instead of those that dumb us down. Video games are not bad (in moderation). Boardgames are better. Puzzle games are great.
I used to love hacker challenge games, and recently I stumbled upon one on iOS called 63.
As a testament that I didn’t lose my mojo completely 😏, I finished on the Leader board.
Great game, check it out, and please recommend any other that you may know that’s similar.
Oh, and BTW, because why not, you can get one of the 62 images (I kept one for myself) above as an NFT on OpenSea.
⚠️ In this new “Daily Thoughts” series, I’m just scratching my own itch. For too long now I’ve been reading and consuming. Not that there’s something inherently wrong with that, but if one doesn’t offset that with his own producing, one often falls into the trap of staying a consumer. If you think you know something, or want to learn something about yourself, try to explain it ‘on paper’.
Personally, I think best ‘on paper’, and it’s been a while since a wrote a post. So, I’ll start small (and build up a habit of daily writing again) by sharing a thought daily. I’ll use this as a retrospective a year from now.
Dear readers, feel free to chime in with your thoughts on my thoughts (so Meta; which is popular in its own right these days).
In this new “Daily Thoughts” series, I’m just scratching my own itch. For too long now I’ve been reading and consuming. Not that there’s something inherently wrong with that, but if one doesn’t offset that with his own producing, one often falls into the trap of staying a consumer. If you think you know something, or want to learn something about yourself, try to explain it ‘on paper’.
Personally, I think best ‘on paper’, and it’s been a while since a wrote a post. So, I’ll start small (and build up a habit of daily writing again) by sharing a thought daily. I’ll use this as a retrospective a year from now.
Dear readers, feel free to chime in with your thoughts on my thoughts (so Meta; which is popular in its own right these days).
So, let’s go:
Imagine a world where every individual gives their maximum. Not their neighbors, or their spouses; their own maximum. And imagine everyone competing against the only person they ever truly should strive to surpass – their past self. Would we be better off or worse? Would we solve the problems of today’s world that are screaming at our face, or would we continue to ignore them?
I would like to believe that before we ‘level-up’ as humans, we’ll have to start wanting more from ourselves, and then delivering on that desire.
The gaming industry is changing rapidly, with more users than ever before turning to online games.
Some play games with friends on a console, playing titles such as Call of Duty or Fortnite. Others use gaming to meet new people, whilst some replace activities they used to do at a physical location with a virtual experience, such as going to a casino.
The iGaming market, which incorporates online slots and casinos, saw a significant rise in 2020, courtesy of the pandemic. In Croatia, the iGaming market has increased by more than 300% since the start of the century, with European Gaming estimating it is worth more than €360m (HRK 2.6bn). With GiG moving into the country recently, that means lots of opportunity for online gaming providers, and therefore for those involved in coding and developing such games.
If you are interested in coding for an online provider, there are three fundamental rules to remember. Hopefully, these will give you a good starting point when deciding whether iGaming coding and development is for you.
Regulations
The first thing to remember is that iGaming is heavily regulated worldwide, and you need to understand the country you are coding for, not the one you are coding in. Much of this is around Random Number Generators, RNGs, which operate at the heart of every online casino. Techopedia explains that an RNG is a mathematical construct that generates a number without a discernable pattern, hence being called random. Some countries are strict on how the RNGs work, what information must be displayed on-screen and other requirements. In the United States, a growing market for the iGaming industry, those regulations can vary from state to state.
Design is Key
When online casinos first appeared, they were rather basic designs, focusing on gameplay rather than the user experience. Much of that has changed, especially with such a wide variation of online slots and different games available. The user experience must be smooth and facilitate access to a wide range of games. It must not be chaotic, cluttered or unappealing. In terms of basic design, Gala Bingo displays top titles such as Fiery Wilds and Big Banker on their homepage, with options for users to drill down further into each section for even more titles. Those sections contain many more titles, but if they were displayed on the main screen, it might become too busy to navigate. Also, the design of games has changed over the years, with users expecting a solid visual experience from their gameplay and dynamic sound. All of this is worth considering if you begin to code for a provider – are your skills up to the task?
Bugs
Generally, games released on a console can have a few bugs at launch. Cyberpunk might have bombed because of several problems, but titles such as Fallout 76 survived despite being buggy when they first dropped. In the world of iGaming, those bugs need tracking and dealing with very swiftly. You only need to spend a few minutes perusing online casino review sites to discover that bugs or crashes can destroy a brand quickly. Also, if the bug can be exposed by a cheat or someone looking to make some quick money, rest assured they will find a way. Your code needs to be solid, but those bugs need tracking and dealing with immediately.
For more coding advice, tips and news, be sure to pay regular visits to this blog.
TL;DR
In this post, you’ll learn how to use Vue CLI to build a Vue.js 3 application for searching Giphy’s GIFs by using their API.
Introduction – The War is Over
Let’s be honest; even those of us that actually don’t hate the JavaScript ecosystem can understand the frustration with the fact that new JS frameworks are popping up all the time.
This was especially true some 2-3 years ago. However, it seems that the craziness has settled down a bit and that the war is seemingly over. For now. These top four (top 5 lists are overrated 😉) frameworks established themselves:
I added the number of Github `*’s (at the time of this writing), but I don’t want you to read into that too much 🤗
Analysis paralysis will, well, paralyze you!
You could argue that there are other options like Ember, Mithril, or good ‘ol jQuery even! However, this tweet says it all:
Developers are fighting over which frontend framework is better.. it’s not like users know or care. They mostly care about the User Experience. UX should be our focus on the frontend.
Personally, I stuck to the Angular bandwagon ever since version 1.0, but that started losing it’s ooomph after version 2.
I believe that Vue.js (due to its progressive and flexible nature) is a perfect fit for the teams that have to rewrite old codebases one step at a time. However, you can also use it as a full-blown framework if you wish.
Personally, React’s JSX just seems wrong, and some people, smarter than me, swear by that being TheRightWay™, and I guess we’re not here to discuss tastes…
General’ framework war’ kind of questions I tend to answer in the following way:
Please just stop with the analysis paralysis already.
Do your research, pick a framework (any framework for that matter) that the community is using, use it, and see how far it gets you.
All these talks about X being slow or Y being better just make no sense until you try it yourself for your use case and preference.
Besides, nowadays the speed will not be a deciding factor among the top JS frameworks.
With all this out of the way, fasten your seatbelts, take a venti (or trenta) sized cup of coffee, and let’s go do something practical! 💪
If you care about the hardcore metrics ⏱️ and want to check out some detailed comparisons between popular frontend frameworks, here are a few blog posts.
The Demo App
As said in the intro, we’ll build an application for searching (and showing) Giphy GIFs by using their API.
You can fork the complete source code on Github.
I’m using Vue.js 3, and I’ll be referring to it as just Vue.js in the rest of this post.
Prerequisites
Make sure that you have the following tools installed:
- Node.js – here’s a free but outdated step by step guide/book for both Windows and Mac. Or, really, just go to the main website and download the executable for your machine
- Git – here’s a fun getting started tutorial in case you’re new to it
Vue CLI
As their docs say:
Vue CLI aims to be the standard tooling baseline for the Vue ecosystem. It ensures the various build tools work smoothly together with sensible defaults so you can focus on writing your app instead of spending days wrangling with configurations. At the same time, it still offers the flexibility to tweak the config of each tool without the need for ejecting.
To install Vue CLI, run the following command (in your Terminal):
npm install -g @vue/cli
You can confirm that the installation went well if you run vue
and get an output with usage information.
⚠️ Just for reference (in case you follow this tutorial at a later stage and something is not the same as I output it here), my version (get the output by running
vue --version
in your Terminal) as of this writing is@vue/cli 4.5.12
.
Start a new app with Vue CLI
We’ll call our app, originally 🙈, giphy-search
. So, to start a new app using Vue CLI, run:
vue create giphy-search
Make sure you select the option ❯ Default (Vue 3 Preview) ([Vue 3] babel, eslint)
and press ENTER
.
You should get an output similar to this:
Vue CLI v4.5.12
✨ Creating project in /Users/nikola/DEV/BLOG/giphy-search.
🗃 Initializing git repository...
⚙️ Installing CLI plugins. This might take a while...
🚀 Invoking generators...
📦 Installing additional dependencies...
📄 Generating README.md...
🎉 Successfully created project giphy-search.
After this command finishes, let’s cd
into the project and run
it:
cd giphy-search
npm run serve
You should get this output:
DONE Compiled successfully in 3178ms
App running at:
- Local: http://localhost:8080/
- Network: http://192.168.8.189:8080/
Note that the development build is not optimized.
To create a production build, run npm run build.
You should see the following page in your browser if you open http://localhost:8080.
Folder structure
Now, let’s open this project in the editor of your choice (I’m using Visual Studio Code), and you should see something like this:
This is an introduction tutorial, to get you running fast, so I won’t be going into any specific details and will be only focusing on the src
folder.
Add content
OK, so let’s add something to our app.
But, where to start? 🤔
Well, one of the first things I do when I come to a project for the first time is to look at the generated output. Then I try to find the strings corresponding to that output within the source code.
So, if you search for the string Welcome to Your Vue.js App
, you’ll see the string is within the App.vue
file. This file contains the following code:
<template>
<img alt="Vue logo" src="./assets/logo.png">
<HelloWorld msg="Welcome to Your Vue.js App"/>
</template>
<script>
import HelloWorld from './components/HelloWorld.vue'
export default {
name: 'App',
components: {
HelloWorld
}
}
</script>
<style>
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
}
</style>
Without knowing much about Vue.js, you can see where you would change the Welcome to Your Vue.js App
text. So, let’s change that to Welcome to GiphySearch
. While you do that, also remove the contents of the style
tag.
In the App.vue file, we have a template
tag that contains a standard HTML img
tag and an HelloWorld
tag, which is a so-called component. Here’s the link to the documentation where you can learn more about components.
Add an input and a button
Our basic application should have one input field and one button.
To do this, adjust the template
in the HelloWorld.vue
file to contain only this:
<div class="hello">
<h1>{{ msg }}</h1>
<input name="search" />
<button>Search</button>
</div>
Actions
Having a simple search input field and a button doesn’t do much. We want to click the button, and we want to output something to the console just to verify it’s working correctly.
So, this is how you define a function that will handle a button click in Vue.js:
<button @click="performSearch">Search</button>
But, if you open your DevTools now and click the Search
button, you’ll get an error like:
runtime-core.esm-bundler.js?5c40:38 [Vue warn]: Unhandled error during execution of native event handler
at <HelloWorld msg="Welcome to GiphySearch" >
at <App>
warn @ runtime-core.esm-bundler.js?5c40:38
logError @ runtime-core.esm-bundler.js?5c40:211
handleError @ runtime-core.esm-bundler.js?5c40:203
callWithErrorHandling @ runtime-core.esm-bundler.js?5c40:157
callWithAsyncErrorHandling @ runtime-core.esm-bundler.js?5c40:163
invoker @ runtime-dom.esm-bundler.js?830f:327
runtime-core.esm-bundler.js?5c40:217 Uncaught TypeError: _ctx.performSearch is not a function
at Object.onClick._cache.<computed>._cache.<computed> (HelloWorld.vue?fdab:6)
at callWithErrorHandling (runtime-core.esm-bundler.js?5c40:154)
at callWithAsyncErrorHandling (runtime-core.esm-bundler.js?5c40:163)
at HTMLButtonElement.invoker (runtime-dom.esm-bundler.js?830f:327)
That’s because we haven’t defined the performSearch
function anywhere.
Let’s do that now. In the HelloWorld.vue
file, add the following function definition inside the script
tag, methods
object property:
<script>
export default {
name: 'HelloWorld',
props: {
msg: String
},
methods: {
performSearch() {
console.log('clicked');
}
}
};
</script>
We defined the performSearch
function, which doesn’t accept any parameters and it doesn’t return anything. It just outputs clicked
in the console.
Gather input
What if we would like to output (to the console) the string that someone typed in the input field?
Well, first we need to add a new attribute to the input field:
<input name="title" v-model="searchTerm">
The v-model
is a directive that instructs Vue.js to bind the input to the new searchTerm
variable.
Finally, change the performSearch
function to this:
performSearch: function() {
console.log(this.searchTerm);
}
Technically, you could write this a bit differently, passing the
searchTerm
variable into theperformSearch
function as a parameter:performSearch: function(searchTerm) { console.log(searchTerm); } <button @click="performSearch(searchTerm)">Search</button> I'd love to hear from you in the comments which approach is better in your opinion.
Giphy search API
Finally, we come to the cool part 🥶, and that is to fetch some data from the Giphy API and show it in our app.
How do we get this API? Well, if you do a simple Google search for giphy api
and open the first link, you’ll get the documentation for their API.
You need to follow these instructions to create an account (and an app) to get an API key. You don’t need an SDK solution at this point (you may want to go that route if you’re going to make a mobile app that shows these images).
After you obtain your API key through their dashboard, you’re going to be able to make search
(they offer a bunch more) API requests through their API explorer.
An API URL (obviously, with the fake API key) may look like this: https://api.giphy.com/v1/gifs/search?api_key=AbC&q=cats&limit=10&offset=0&rating=g&lang=en
Great, now we see what kind of a request we need to create to search Giphy’s GIF database for a certain term.
If you open this link in the browser, you’ll see that the service returns something like:
In the next section, we’ll cover retrieving this data within our app.
⚠️ Since Giphy’s rules now require you to add attribution, make sure you add it. I added the image in the footer with a link to their docs.
Vue.js HTTP requests
We have several options for making HTTP requests in Vue.js, and some may see this flexibility as a pro, and some may see it as a con. Either way, for more options, check out this post.
I chose to go with Axios, as it’s a very popular JavaScript library for making HTTP requests. It’s an HTTP client that makes use of the modern Promises API by default (instead of the not so nice JavaScript callbacks 🙂) and runs on both the client and the server (i.e., Node.js).
In your Terminal enter the following command to install Axios via npm:
npm install axios --save
Import Axios in the HelloWorld.vue
file just after the script
tag:
import axios from "axios";
The performSearch
function should now look like this:
let API_KEY = 'getYourOwn';
let link = `https://api.giphy.com/v1/gifs/search?api_key=${API_KEY}&limit=25&offset=0&rating=g&lang=en&q=`;
let apiLink = link + this.searchTerm;
axios
.get(apiLink)
.then((response) => {
console.log(response);
})
.catch((error) => {
console.log(error);
});
Just for reference, to put it all in one listing, the contents of the HelloWorld.vue
file should be:
<template>
<div class="hello">
<h1>{{ msg }}</h1>
<input name="search" v-model="searchTerm" />
<button @click="performSearch()">Search</button>
</div>
<a href="https://developers.giphy.com/docs/api#quick-start-guide">
<img src="giphy.png" alt="" class="giphyAttribution" />
</a>
</template>
If you run the app and enter something in the input box, and then click the search button, you’ll see something like this in your console log:
You can see that we’re getting an object that in its data
property has another data
property (so meta 😎) that’s an array with 25 objects, which holds the information about the images we’ll show in our app.
Well, after a tongue twister in the previous sentence, this is all great, but we don’t want to be logging our objects to the console; we want to show them in our app! 🙂
To show the GIF, you can choose any of the properties under the images
object, and use the url
property. I used fixed_height_small
in my example.
We don’t want to just show one image but all of the images. We can use the v-for
directive for that:
<img v-for="g in giphies" :key="g.id" :src="g.images.fixed_height_small.url" />
For reference, here’s the full listing of HelloWorld.vue
file:
<template>
<div class="hello">
<h1>{{ msg }}</h1>
<input name="search" v-model="searchTerm" />
<button @click="performSearch()">Search</button>
<img v-for="g in giphies" :key="g.id" :src="g.images.fixed_height_small.url" />
</div>
<a href="https://developers.giphy.com/docs/api#quick-start-guide">
<img src="giphy.png" alt="" class="giphyAttribution" />
</a>
</template>
B e a utiful
At this point, if we take a look at the app and search, for example, for ‘cat coding’ we’ll get this:
Although the result doesn’t look sleek (ha!, far from it 😳), our code does exactly what it’s supposed to do. If you want it to look nicer, feel free to add more CSS.
Bulma is a cool framework that I used in the JWT authentication in an Angular application with a Go backend post in case you’re interested in taking a look.
Conclusion
In this tutorial, you learned how to get started with using Vue.js 3 by building an application for searching Giphy’s GIFs by using their API.
Please leave any comments and feedback in the discussion section below, and thank you for reading!
TL;DR
In this post, I’m sharing my ultimate list of books on the topics of leadership, personal improvement, goals, finance, purpose, and programming.
!TL;DR
The book to read is not the one that thinks for you but the one which makes you think.
~ H. Lee
As it usually goes with people that read, you’re often asked to share “a few good books”.
I already wrote about the top 5 that are, IMHO, worth re-reading every once in a while, in the post Too many books, not enough time.
However, this time I’m sharing my ultimate list of books on the topics of leadership, personal improvement, goals, finance, purpose, and programming. Each and every one of these books helped me move the needle a bit forward, so I hope they’ll do the same for you.
I didn’t list any fictional books here, but if you want one, then look no further than The Name of The Wind.
Leadership
- Leadership and Self-Deception
- The First-Time Manager
- Leading snowflakes
- Radical Candor
- The Manager’s Path
- The Five Dysfunctions of a Team
- The Leadership Handbook
- Leaders eat last
- Start with Why
Personal improvement for leadership
- The Coaching Habit
- How To Win Friends and Influence People
- The 7 Habits of Highly Effective People
- Speak to Win
- Time Management Made Simple
- The ONE Thing
Personal improvement in general
- The miracle morning
- Mindset
- Can’t Hurt Me
- Make Your Bed
- Discipline Equals Freedom
- The 5 Second Rule
- So Good They Can’t Ignore You
Have goals and think big
Purpose
- How Will You Measure Your Life
- The Monk Who Sold His Ferrari
- The Road Less Traveled
- The four agreements
Finance
- Rich Dad Poor Dad
- Think and Grow Rich
- The Greatest Salesman in the World
- The Science of Getting Rich
Programming
Conclusion
This list may seem daunting, but then again, please remember that if you only read 25 minutes per day, you’ll read 30 books per year.
If you think I should add another one to this list, please let me know in the comments.
The online slot machine market is rapidly expanding, with iGaming spreading across the world.
2020 was not a great year for many things, but for the world of online casinos, it presented a wonderful opportunity. More people were forced to sit at home looking for alternative pastimes, often turning to their mobile devices to find solace and escapism. That brought a huge number of new customers to the industry, with revenue expected to grow to $114.2bn (kn713.3bn).
That presents an opportunity for developers and coders because each of the games that feature on these sites needs somebody to create them. The world of online slot machines is a competitive one, and not only do they tend to function on similar technology, but they also need to boast impressive graphics and sound to appeal to a generation of gamers used to bright colours and immersive experiences. Often, these providers use bold imagery to help their product stand out from the crowd, and that dictates that behind the spinning wheels there must be skilled individuals building and designing experiences. Leading European slot provider Foxy Bingo have lots of titles that use strong branding and imagery to set a scene for the player to enjoy, such as The Perfect Heist and Neon Pyramid games. These games have clear design aesthetics that make them stand out, as well as being more about the overall experience, rather than a simple slot machine. When you consider this must then function on both Android and iOS, the world is your oyster if you have the right skills.
What technology lies behind these games, and what may permeate into the industry in the future? These are the core principles, mechanics and growth fields to consider.
RNG
Almost all casino games, online slots included, use a random number generator to determine whether a player wins or loses. Assuming each reel of a slot has ten possible outcomes, a random number generator will create a random outcome for each, either wheel by wheel or a single number that determines the outcome. All online slots use this function, and it does mean the outcomes are completely random.
3D Modelling
When many people think of a slot machine, they might picture the old one-armed bandit’, with cherries and melons spinning around. Online slots are nothing like that and the very modern ones use 3D modelling and illustration to create the user experience. Creating a slot is not a one-person job, and an illustrator and designer can be drafted in to work exclusively on the design and characters without ever having to worry about RNGs.
Mobile Conversion
Online slots originated on the internet, programmed for PC using something like JavaScript or Flash Player. Increasingly, players now want the experience on a mobile device, be it Android or iOS. Therefore, anyone with the skills to make the port happen, or even create an identical game from scratch on a mobile device, will be in high demand. Gamers want consistency, so if they find a slot they like at home on their computer, they will want the same experience from that game on their tablet, or whilst commuting on the bus using their phone. With devices running at 1080p just as they do on PC and capable of handling 3D graphics, mobile conversion is a whole new aspect to online slots that grows daily.
VR and AR
Virtual reality and augmented reality are not common within the online slot sector right now, but they will be. Both areas of design and tech have scope for creating even more immersive and enjoyable experiences for the player, keeping them coming back. Customer retention is key and with so many providers on the market, innovation is likely to be a key strength of a successful provider going forward. AR could allow you to build your surroundings into a game, so the player spun the slots using their kitchen fridge as a backdrop, whilst VR could recreate a whole casino experience without ever having to leave the house. That is exciting for players but mouth-watering from a developer’s point of view.
Here are my highlights from a highly recommended book The Manager’s Path by Camille Fournier.
Management 101
- 1on1 meetings with your direct manager are an essential feature of a good working relationship.
- The bedrock of strong teams is human connection, which leads to trust. And trust, real trust, requires the ability and willingness to be vulnerable in front of each other.
- Good managers know that delivering feedback quickly is more valuable than waiting for a convenient time to say something.
- Bring agendas to your 1on1s when you have things you need to talk about.
- When you want to raise, ask for it. When you want the promotion, find out what you need to do to get it. Your manager cannot force work-life balance on you. On the flip side, sometimes if you want a bigger job, you will have to work more hours to get it.
Mentoring
- Listening is the first and most basic skill of managing people.
- Mentoring new hires is critical. Mentoring an intern: give them a project and make them present the work.
- Alpha geek tries to create a culture of excellence but ends up creating a culture of fear. If you’re ever in a position to promote people to management, be very, very careful in giving your alpha geeks team management positions, and keep a close eye on the impact they have in that role.
Tech Lead
- The idea that the tech lead role should automatically be given to the most experienced engineer, the one who can handle the most complex features or who writes the best coach, is a common misconception that even experienced managers fall for.
- Tech lead is a leader, responsible for a software development team, who spends at least 30% of their time writing code with the team.
- I have a strong opinion on pushing people into management, which is that you shouldn’t do it.
- Real-life of a manager: when you only had a team you were able to balance things and still write code, but as your team has grown you’ve lost touch with the code. It’s troubling you as something you should be doing, but there’s no time.
- Successful leaders write well, they read carefully, and they can get up in front of a group and speak. Don’t forget to listen during all of this communication.
Managing people
- It’s hard to accept that “new manager” is an entry-level job with no seniority on any front, but that’s the best mindset with which to start leading.
- Regular 1on1s are like oil changes; if you skip them, plan to get stranded on the side of the highway at the worst possible time. The default scheduling for one on ones is weekly.
- Some people assume that good relationships require very little attention, and spend all their time on their bad relationships.
- As much as possible, when someone does something that needs immediate correct feedback, don’t wait for the 1on1 to provide that feedback. The same goes for praise!
- When you strip creative intelligent people of their autonomy, they lose motivation very quickly.
- The worst micromanagers are those who constantly ask for the information they could easily get themselves.
Managing a team
- Leaders are capable of identifying the highest value projects and keeping their team focused on this project. In addition to focusing the team, they are capable of identifying headcount needs for the team and planning and recruiting to fill these needs.
- If you truly wish to command the respect of an engineering team they must see you as technically credible. You need to stay enough in the code to see where the bottlenecks in-process problems are. It’s hard to make up lost time when you stop writing code, and if you do it too early in your career, you may never achieve sufficient technical savvy to get beyond the role of middle management.
- Infrequent releases can hide the pain points such as poor tooling around releases, heavily manual testing, features that are too big, or developers don’t know how to break the work down.
- Project management rules of thumb:
- Do you have 10 productive engineering weeks per engineer per quarter
- Budget 20% of the time for generic sustaining engineering work across-the-board
- As you approach deadlines, it is your job to say no
- Test of happy engineering team: “If you buy them pizza in the evening, will they stick around and socialize together, or will they race out the door as quickly as possible?“
- Whenever asked for an estimate, take your guests and double it.
Managing Multiple Teams
- The engineering director
- is responsible for a significant area of the technology team. Leads engineers across multiple product areas, or multiple technology functions. He is not generally expected to write the code on a day to day basis. However, the engineering director is responsible for the organization’s overall technical competence, guiding and growing that competence in the whole team as necessary through training and hiring.
- should have a strong technical background and spend some of their time researching new technologies and staying abreast of trends in the tech industry.
- focuses on ensuring that we continue refining our development/infrastructure standards and processes to create technology that will deliver sustained value to the business. They are leaders for recruiting, headcount management and planning, career growth, and training for the organization. They’re responsible for creating and growing the next generation of leadership and management talent in the organization, and helping the talent learn how to balance technical and people leadership and management.
- is a motivated, cross-functional collaborator, a very strong communicator, and has a positive public presence.
- should spend the time to gain mastery of programming before moving up to management.
- spends at least a solid half-day once a week completely free from meetings or other obligations and uses this time on some creative pursuit (blog post, conference talk, open-source project).
- One example of an important but not urgent task is actually preparing for meetings so that you can guide them in a healthy way.
- Engineers who don’t write tests often have a harder time breaking down their work.
- Frequency of changes is one of the leading indicators of a healthy engineering team.
Managing managers
- You must take the time to proactively hold skip-level meetings with the people who report to your direct reports (once a quarter).
- Learning how to hold managers accountable will be one of your biggest learning opportunities as you work at this level.
- A manager is accountable for the health and productivity of the team.
- Making the wrong person and manager is a mistake, but keeping her in that position once you’ve realized she’s wrong for it is a critical error.
- Don’t compromise on culture fit, especially when hiring managers. Many people are very reluctant to hire in management from outside, and for a good reason.
- Dedicate to 20% of your team schedule to “sustaining engineering”.
The big leagues
- It’s not about being the lead engineer, chasing the latest language or framework, or having the shiniest technology. It’s about building a team with the tools and attributes to build the best possible product for our customers.
- VP is an engineering role, CTO is not.
- In my experience, most people need to hear something at least three times before it really sinks in.
- As a senior-most person in an organization, you’ll be watched closer than you ever been watched in your life.
Bootstrapping culture
- Structure is how we scale, diversify, and take on more complex long-term tasks. It’s more common in small companies to see structure come too late.
- He describes the early start-up as driving a race car. You’re close to the ground, and you feel every move you make. You have control, you can turn quickly, you feel like things are moving fast. Of course, you’re also at the risk of crashing at any moment, but you only take yourself down if you do. As you grow, you graduate to a commercial flight. You’re farther from the ground, and more people’s lives depend on you, so you need to consider your movements more carefully, but you still feel in control and can turn the plane relatively quickly. Finally, you graduate to a spaceship, where you can’t make quick moves and the course is set long in advance, but you’re capable of going very far and taking tons of people along for the ride.
- A complex system that works is invariably found to have evolved from a simple system that worked. Complex system design from scratch never works and cannot be patched up to make it work. You have to start over with a working simple system.
- Culture is how things get done, without people having to think about it.
- Call them what you want pods or squads or pillars, but cross-functional product development groups are a popular structure for a good reason. By putting everyone who is needed to make a project successful together in one group, you help the members of those teams focus on the project at hand, and you make the communication for the whole group much more if active.
- Organizations that design systems, are constrained to produce the designs which are copies of the communication structures of these organizations.
- The most important lesson I’ve learned is that you have to be able to manage yourself if you want to be good at managing others.
TL;DR
In this post, I’ll show you some pictures and notes from the very first .debug conference.
⚠️I know, I know, this post comes veeeery late after the conference was already finished 🤦, but I figured that this will (sadly) most probably be the only one I’ll attend the whole year, so I might as well share and recall how it was.
The Swag, oooh the Swag
I was impressed by the amount of stuff they put in the rucksack (oh yes, there was a rucksack too 😊). Yeah, sorry, the chocolate didn’t make it intact to the picture time 😛
I’ll now go through all the sessions that I attended, share a few pictures and notes.
A new World for Your App, Justyna Jaworska
- Basically talking about the ‘business opportunity’ to build stuff for this platform
10 types of devs you’ll meet at the conference, Dora Kalneus (Militaru)
- speakers, thought leaders, hipsters, influencers, nomads, entrepreneurs, consultants, blockchain something something 🙂, hackers, #iamdeveloper
- awesome presenter, great flow
- “Suffering unites people”
- Personal branding is about creating an opportunity for you to grow
Companies without designers are building a catastrophe, Tom Kozačinski
- “Just build it doesn’t work in big companies anymore”
- “Never hire on the lower end of the salary spectrum”
- “Rather than focus on artifacts, we focus on prototypes and validating those prototypes in Discovery, with the added benefit that the prototype serves as the spec for Delivery.
Panel discussion on how to get paid for your work and knowledge
- Luka Abrus
- gap getting tighter for seniors
- Agreed that people once coming from the college have to have projects behind them
- Government is not helping at all
- Alan Sumina
- Our tax system is like Swiss cheese and they weren’t prepared for ‘pausalni’
- Tatjana Barančić
- People stopped going to Ireland
- We see a lot of developers coming back now
- ‘Pausalci’ that work in a freelancer setup will have no problems
- Hrvoje Balen
- We are stupid as people will just start companies outside of our country.
- Lower the tax on work and increase on real estate (only 8%!?), as otherwise, we’re turning into a renting country
Devonomics – Expanding the developer horizons, Srdjan Vranac
- “Later equals never”
- “Never talk about technical debt” – 🤔🤦 oh, really?
- “Your mandate as a software engineer is to find solutions for the problems presented, with acceptable compromises between time, cost and quality, with buy-in from the management/leadership.”
- Time to market is the only metric – shorter TTM -> more money
- Everyone is a salesperson!
AI in banking, Draženko Kopljar
- “AI is a buzzword for sales people so they can sell stuff easier” 🙂
Panel discussion about ‘the life after coding’
- Mihaela Smadilo
- It’s hard to make the switch to manager, and communication skills are the key
- Tomislav Grubisic
- Regular 1on1 check-ins are key
- Luka Kladaric
- Your knowledge evolves, so if you work on a new technology you’ll actually have it easier to learn new things
- Oleg
- “Most CEOs are complaining that devs are bad”
- Personally, I think that the panelist was pushing this question of “what are you gonna do at 60!?”, and they were trying to explain to him but with no luck. Even to, it seemed, a point of irritation.
- Sven
- I think that the main motive nowadays is that people work on interesting things
From diploma to Google, Maja Bilic
- This was an awesome presentation, should have been the keynote yesterday
- Imposter syndrome is real
- The important thing is to like things that you do
- NTH sucked: on the third day became the design team lead, then the web team lead – I knew exactly nothing about this!
- Did a lot of retrospection and thinking what I want to do
- Got two jobs in Google – and then had to make a decision
- Putting things on the paper and weighing is bullshit as you always deep down have an actual decision you want to do
- I make a decision, tell everyone, sleep on it. If I don’t regret it, then I actually execute on it.
- People need growth and challenge that’s out of their comfort zone
- Interview to realize what’s your value on the market
- I was so disappointed that there’s no ideal organization – but here’s your chance to bridge the gap
- A good manager will give you feedback on your performance but also tell you what you need to work on
- Change is what brings progress as that yields a lot of spaces that aren’t covered
- Titles don’t say anything about what you actually do
- Know something that no one else knows
- Never say that’s not my job, and always know what you’re doing
- Ask for feedback
- Know when to move on: when there’s nothing that excites you
- Mentor – you have to click with this person to ask what to do at a certain problem point
- Good team, interesting job and opportunity to learn – money comes after this
10 mistakes I did as a young IT guy, Luka Abrus
- I thought that people will appreciate my code
- Vanity metrics
- Today we’re actually celebrating when we see good metrics and not when we launch!
- I thought I knew what customers want
- I loved emails and didn’t wanna go and meet with people
- As an employer, I was slow to fire
- I thought that money was the most important
- I didn’t know how to make a good project deal
- I didn’t know when to say ‘go to hell’ to the client
- I applied to things I didn’t have the competency for
Experiments done in business and life, Martin Stenkilde
- “As long as you learn something from the failure, everything is great”
Tech Leadership: People + Technology, Kátia Nakamura
- Ooof, didn’t resonate with me
- I totally disagree that someone **shouldn’t ask something in the public Slack channel
- Does 1on1s every other month – come on, seriously?!
- Agree only on the last point that you have to have people that take care of other people, and the importance of (written) communication
Hairy Developer and the Sorcerer’s Startup, Shahyar Ghobadpour
- Great presenter!
- Learned how to be tough after they got evicted
- Office politics is real and it’s not always about how good you are
- Learn as much as you can anywhere you go
- Risk, but research beforehand
- Be good with people, time, skills – if you aren’t, then find a matching partner
Till next time, stay safe 🙏
Recent posts
Categories
- Android (3)
- Books (114)
- Programming (22)
- CodeProject (35)
- Daily Thoughts (77)
- Go (3)
- iOS (5)
- JavaScript (127)
- Leadership (1)
- Meetups (8)
- Miscellaneou$ (77)
- Breaking News (8)
- CodeSchool (2)
- Hacker Games (3)
- Pluralsight (7)
- Projects (2)
- Sublime Text (2)
- PHP (6)
- Quick tips (40)
- Servers (8)
- Stack Overflow (81)
- Unity3D (9)
- Windows (8)
- Wordpress (2)