All posts by Jure

Sara Vošinek Gašpar explains why developers should switch jobs every 3 years

In Meaningful work interviews I talk to people about their area of work and expertise to better understand what they do and why it matters to them.

Sara Vošinek Gašpar is an IT recruiter. She explained to me why job ads in the IT industry are so strange, the specifics of the Slovenian IT market, and how developers can further level up. After talking with her I started to see the benefits of building a relationship with a recruiter and not just randomly applying to job ads.

How do others introduce you?

They would say that I’m an IT recruiter and a talent sourcer. I would add to that that I see myself more as a talent enabler. I’m always trying to figure out how to empower developers and find opportunities where they can grow.

What is it like to work with developers for you?

Sometimes I hear from people that it’s weird to work with developers. I think that’s a lazy excuse. My experience is that developers are super chill and very straightforward people. The nature of their job is creative and they want to protect their creativity. They want to be very quickly on the same page, very informal, and straight to the point. They’re very quick to notice red flags and potential issues with clients that try to recruit them.

This makes my job very easy as I don’t need to waste time and very hard as it makes it very hard for me to recruit people for certain companies that have a reputation. 

That doesn’t mean that it’s impossible to find developers that would work in such an organization. It just takes more work to find someone that is driven by the idea that they can fix the culture, make such systems work more reliably, or just like the mission of the company.

Developer job ads often mention the perk of having access to fresh fruit and coffee machines in the office. Is that really a factor for developers when considering new employment?

Yes, it turns out that it’s a perk for some people. There is a non-trivial amount of companies that still don’t offer this and you need to buy or bring your own coffee.

What I see, at least in Slovenia, is that developers have much better working environments compared to other positions with a similar level of education. Job ads are traditionally written by the HR department and for them, these things are genuine perks that they probably don’t even have access to. There’s also the difference in the salary (developers usually earn a lot more compared to HR) and they’re constantly recruited by the competition. Bringing all of these differences together sometimes results in job ads that list benefits that are self-evident to developers.

What can we developers do to make job ads more realistic?

If developers compare their jobs to non-developers jobs they’ll always feel like they have a really great working environment, perks, and pay. The trick is that they need to compare their job to other developers’ jobs. This is the best way to see if you’re actually in a bad job and that you need to switch for something better.

There’s still a lot of opportunities for developers to push back on bad hiring and working practices. At the moment there’s still too much power in the hands of the companies . Developers are the only ones digitally literate and it will remain so  for the next 15-20 years so it is crucial  for developers to  take back creative control. We need  to support open-source and new R&D developments while protecting our data and empower developers to be the counterweight to other interests in the digital market.

How can we help improve the working environment for developers?

Mostly by educating them on what’s possible. Presenting them with alternative approaches to professional growth, team organization, or work practices.

I really like when companies allow developers to work on non-work projects during work time so that they can familiarise themselves with new technologies, for  example Internet of Things, drones, playing around with Raspberry Pi or Arduino,…. It could also be free time that they can use to fix whatever issue they find annoying in their existing codebase or learn something new.

I also wish more developers would talk about how they use SCRUM or Agile methodologies and actually have Scrum Masters in their team. To explain to other developers how to push back on bad implementations from management. That you shouldn’t remove retrospectives because someone arbitrarily decided that they’re not needed.

What are some specifics that are unique to the IT market in Slovenia?

In Slovenia, it’s possible to survive as an IT company just by virtue that your software has a Slovenian language interface. These kinds of companies can exist for 15+ years with about 30 clients that keep them afloat. They are very risk-averse and don’t really want to change or update any technologies or processes. It also means that the whole company is stagnating. Developers don’t learn anymore and salaries are low when compared to the market. It would be good for the market and the developers if some of these companies would go out of business. They’re holding the whole market back.

How often should a developer switch jobs?

If it’s your first job you need to absolutely switch if you’re there more than 3 or 4 years. It doesn’t matter if it’s a good team and you enjoy your work. You need to switch so that you’ll learn something new and see how different teams operate.

I see people that are technologically obsolete after their first two years at their job. They got assigned such a specific dead-end technological job that they don’t have any experience with modern IT practices. It’s much harder to help them with finding their next job as they don’t have any real modern development experience. This should not happen to a young person and they need to watch out for it.

Job hopping is the best way to achieve exponential growth of your potential. You get to see how other people think and do things. Having multiple experiences help you understand what you want and with that knowledge, it’s much easier to find a job where you’ll stay longer (5 – 10 years).

What’s the profile of a developer that you’re most looking for?

I’m looking for someone with 10 – 15 years of work experience with modern technologies. They already switched their job a few times and have a range of experience of working in different teams. They understand technology enough to know when the latest hyped technology is not a good fit for their project. This profile is in its prime at the moment.

How do you comment on general burnout feeling among developers and often stated wish to exit industry “before they are too old to code”?

I don’t understand developers that say that they can’t imagine still coding when they’re in their 60’s. I can’t imagine hearing this from a painter. That they can’t imagine painting anymore when they’re 60. I can understand that a painter doesn’t want to work on commissioned art anymore. But they still want to paint!

I’m wondering how and when they lose this appreciation for solving technological problems. Writing code is just a medium for how you solve these challenges and not the end goal.

What tends to happen is that they are put in a position where they’re unhappy. Fixing bugs, working with technology that they hate, deadlines, and an uninspiring team. After a few years of this, they mentally burn out and want to exit the industry. Developers need to notice this early enough and switch their job.

A developer’s job should be all about learning new mental models, how to solve new types of problems, and to keep growing.

How should (non-junior) developers market themselves so that they get access to better job opportunities?

You should have your basic profiles set up: LinkedIn, StackOverflow, and GitHub. That will help you get the first round of opportunities.

After that, you should look into niche communities around Reddit, Hacker News, Slack, and Discord. That’s where founders and senior technical staff hang out. If you can meaningfully participate in these communities you’ll be able to connect with thought leaders in the space. These will be the same people that can then hire you or connect you to opportunities that are not even advertised yet.

You need to think about how you would hire a skilled developer. Where would you go to meet them and how would you identify them? Then do that yourself so that other developers will notice you.

Are there any resources that you’d recommend for leveling up?

What I learned from talking with Sara

Switching jobs every few years is now expected. Not switching jobs often enough can be a potential liability.

There’s a quiet tension between the creative work of developers and managers that try to control processes around it. It’s probably worth exploring more.

There’s still a lot of opportunities to create support communities for developers and related profiles.

Reflection on & review of Building a Second Brain Course

Building a Second Brain is a productivity course produced by Forte Labs. It’s focused on improving your personal knowledge management system and habits around it. It’s delivered as a 5-week cohort-based online course. I was part of Cohort 12 in May 2021.

 When I was telling my friends about it there two things that stood out the most: cohort-based and the price.

Cohort-based – part of the course is delivered through Zoom lectures and more interactive workshops. There’s also an online forum, Slack, and other opportunities to connect. It’s kind of amazing to be on a Zoom call with 600 people. There were over 1500 students enrolled and amazingly it wasn’t a problem to find opportunities to ask questions and get back a thoughtful response from the instructor and fellow students.

Cost – As Ali Abdaal mentioned in his video review it costs a stupidly large amount of money – 3000 USD in my case. Initially, this challenged most of my existing beliefs about how much value an online course provides.

I’m also happy that some of my friends stepped back and ask a more important question: does it deliver this much value and how does it do that?

My answer to that is yes – if you do the work. The value comes from a large amount of high-quality content, very clear case studies, learning opportunities, and opportunities to discuss learnings with peers and mentors.

The main essence of Building a Second Brain (BASB)

There are two main pillars of BASB: C.O.D.E. and P.A.R.A.

C.O.D.E. stands for Capture, Organize, Distill, and Express. It’s a set of tools and approaches. An example of such workflow would be how to take a highlight from your Kindle (Capture), file it in your digital knowledge management tool (Organize), summarize a few of such notes (Distill), and then use it in your next blog post (Express).

P.A.R.A. stands for Projects, Areas, Resources, and Archive. It’s an organizational structure that helps you reuse parts of your work in future projects.

While the course presents both techniques with widely popular tools it’s mostly doing it just so that you understand how to apply the concepts using your tools.

If you’d like to learn more about these concepts Tiago’s short Podcast episodes are a good start as are free articles on blog.

 Is that it? Just a course on organizational techniques?

That’s how it starts and then in the second week, it shifts into a personal development course. After it fixes the basic technology workflows of participants it starts to ask important questions: what do you want to produce and why does it matter to you?

This shift from productivity to a personal development course is where it shines. What I noticed is that it doesn’t matter how well I can plan a project if I can’t emotionally connect with it. I’ll procrastinate on it and it’s going to be a big struggle. So what BASB does with monthly and weekly reviews is that it makes sure that you work on projects that you care about.

In my case it also forced me to reflect on the kind of content I’m consuming and what am I doing with all of this information. An example of this would be listening to the content by the Microconf community and reading books about running a Software as a service website. I already know enough about the topic so I should start focusing on execution and less on studying. This is also true for any conference videos, podcasts, and blog articles.

 What they could do better

I wish the initial part of the course and mentor groups would be less focused on the technology. I think the course is teaching something greater and constant refocusing on technology is distracting from the part of showing up and doing the important work. Mentor groups were also too focused on technology and I also missed more time slots in European Time Zone.

I was also surprised by how poor the technology choices for their platforms were. Teachable felt outdated as a teaching platform. I found Circle forum software much less developed than open-source discourse and hard to use.

Parts of the course delivery felt like they’re still in an early stage of technological development and while it’s great to see how the team builds in public it was also a bit disappointing at times. Probably because I have experience with building similar technology and I know what’s possible. At no point, it prevented me from fully participating in the course and learning. I just know it can be done better.

 What I liked

The community of students was amazing and they’ve helped me get over my struggles with excellent answers.

Just a ton of content that allowed me to really deep dive into parts of course where I felt that I needed further information. It was pure productivity geeking out of heaven.

I have lifetime access to all future cohorts and I’m looking forward to the fall one. I’m sure I’ll be able to further improve my processes so I can do even more work that matters to me.

 Was it worth it and would I recommend it?

For me, it was absolutely worth it and I’d mostly recommend it to others too. I’d say there are two important things to consider.

You should already be in a well-paid job. I’d say that if you make over $50k/year after taxes then it makes sense to invest about 5% of your salary to boost your personal organization and productivity skills. For students and people in lower-paying jobs, it might take too long for new systems and habits to start returning on the course investment.

You need to be able to invest time and focus during the 5 weeks of the course. There’s a lot of supporting content that you’ll want to study and think about. You’ll also want to experiment with new tools and how you organize your information and that’s hard to do if you’re in a middle of a few large projects. As it’s a cohort-based approach you’ll lose a lot of learning opportunities if you can’t participate in the scheduled activities.

Powerful thoughts that stuck with me

Capturing and consuming by itself doesn’t add any value. It’s just gorging on information making it a 3rd tier type of task. Everything else is a priority.

Consuming content is the least unique to you and with this least useful.

Define projects in a way that they will succeed or fail as soon as possible. Avoid zombie projects at all costs.

Publish the work when it is 80% ready so that you get a maximum outcome based on the effort you put in.

 Closing thoughts

Most of the time I complete a course or a workshop it feels like it will have a lasting effect on my life. Building a second brain was no different. It provided me with a paradigm shift that I needed as I start my work on new projects.

If you’re even a bit of a productivity geek you should enroll in such a course and give this part of you some attention as you reflect on your habits.

Technology and tools that we use don’t matter that much in the end. Know your why and you’ll find your how.

Jana Bergant teaches me how to get started with creating paid online courses

In Meaningful work interviews I talk to people about their area of work and expertise to better understand what they do and why it matters to them.

Jana Bergant (LinkedIn, YouTube, Udemy) is a developer, creator, and author of online courses with over 25000 students. She kindly answered my questions on how to approach creating commercial online courses. We’ve also discussed personal growth for developers and how to find your space in the world.

How do you introduce yourself to people?

There are three main perspectives on my professional work at the moment. I’m running online courses so I’m an instructor to my students and I’m there to support their learning. For my consulting business, I’m an online elearning coach to my clients and I help them build their own courses. In this context, I’m helping them with a mindset, technology, content structure and I support them on their e-learning journey. For occasional contract work, I’m also an e-learning expert that implements educational resources for my clients. My last project was API documentation and project documentation for a slovenian company BetterCare (Marand).

I’m someone that follows my passions: technology, writing, consulting, and teaching. 

How did you get to the point where you are now – a successful online teacher?

I first got involved in programming during my studies at the Faculty of Organizational Sciences in Kranj. It really clicked for me and I started developing accounting software for my father’s store. After this experience, I applied for an internship at six different local companies and immediately got offers from four. My pitch was “I’m new to programming, passionate about the topic, and these are the things that I would like to learn” and it worked. For a while, I’ve also tried studying Computer Science in addition to finishing my first studies and also working two jobs. It was too much and I ended up just working and learning things as I needed them for my work. So, yes, I’m a self-taught developer. I’ve done a variety of work, mostly as a freelancer.

A couple of years ago I had a burnout, got an autoimmune disease that made my life really hard, then got pregnant and I broke up with my partner. It was a really hard time for me. Raising a small child alone made it hard for me to continue with a busy freelancing lifestyle. I wanted to have more time and attention for my daughter and to reduce the overall stress in my life. This is how I found SmartNinja and joined them as an instructor. That’s where I discovered Udemy and made my first course just as an experiment. It was for Jekyll, a static website generator. I enjoyed the process so I then created a second course where I tried to teach Javascript in a more fun and relaxed way. As later chatbots became popular I found them interesting and I created a course on Facebook Messenger Chatbots. Each step was an organic continuation of all that I learned in the past.

I’m now starting to focus more on connecting and growing my consulting practice as making online courses alone at home can be quite lonely at times.

You mentioned that you did some freelancing work in the past. Do you have any advice for freelancers?

Yes, don’t get stuck in a routine. As a freelancer, you should know your niche and at the same also be a generalist that connects things together. It’s good if you can bring in other fields. I’ve also found that it’s important that you’re the kind of person that is not afraid to show yourself to the world. I discovered this difference myself when I started recording my courses. They gave me more exposure to different audiences and as a consequence, I got opportunities that I wouldn’t otherwise have.

If I could do things again I would start speaking, networking, writing books, and doing online courses much much earlier. It requires you to get out of your comfort zone but the upsides are worth it.

What drives you to leave your comfort zone?

I need to see meaning in my work. If there’s none I just can’t do it for long, and just going to work every day doesn’t do it for me.

I’ve also discovered as I became a mother that I want to be an example for my daughter. I want her to be feminine, caring, and empathic and at the same time also to be courageous and full of self-worth. This wish for her is coming from my experience growing as a person.

I used to do a lot of work for free and it took me a while to learn that I need to start charging realistic rates for my work. I don’t subscribe anymore to the idea that in code development things should be free. 

What did you learn from making your first online course?

Students must get a feeling of accomplishment very early on. In the case of Udemy, where there are a lot of very low price courses, students often buy many courses at the same time. You need to provide a strong hook for students so that they will engage with your content and actually learn. On Udemy students can also ask questions to the course authors. You should address these questions daily. It’s not a lot of work though, about 10 – 15 minutes per day.

Reflecting on the course itself also taught me how I could structure it better and what would make it even more useful. Putting each step into a software version control (GIT) also makes it easier for students to follow along. 

At the moment I see these courses also as a paid advertisement for my work. Someone pays to see how I work and think. This generated a lot of interesting freelance work in the past with clients from all over the world. It’s unlikely that you’ll get rich from making a course on Udemy. Some do though 🙂

What does your process for creating an online course look like?

I start with market research. Tools like and AnswerThePublic give me a general idea of the amount of demand for the topic. If you’re already an expert in your field you can also investigate what kind of more niche content is missing in your area of work. 

What I’m seeing is that you need to go beyond just creating a course. You’ll need to create a community that will have courses, books, and other activities as part of it. If you just want to do a course on Udemy there are specific strategies around that but it will still require understanding the people that you’re addressing with your course.

The bigger the niche the easier it will be for you to address your community. For example:

  • Lisa K created a community where students get together and practice intuition to drive better decisions.
  • Kate Olson trains service dogs.

I’m also not limiting myself to one specific platform for the delivery of online courses. Some niches love real-time Zoom meetings while others want to have discussion forums and self-paced learning. It’s more important to go into a really specific niche such as “yoga for women that are going into menopause” instead of just offering general yoga courses. It will allow you to use her language and to connect with her feelings and needs through your offerings. It’s the same thing also if you’re trying to create something for developers. You need to find a specific niche (digital agencies, beginners, ..) and what specific pain are you helping them with.

After I’ve identified my niche customer I then try to figure out their current behavior patterns. What do they search for on Google and which websites do they visit on my topic? That gives me a list of websites or communities that I need to start engaging to get in touch with them and maybe offer them whatever I’m offering.

This all sounds like a lot of work and you haven’t even started to explain the practical parts of building a course.

That’s true. Building something like this requires a very different mindset from working as a freelancer or having a job. It’s not a fixed scope project where you know how much work it will be and what you are going to get paid. Trading time for money of course makes a good living lifestyle but doesn’t generate passive income streams. 

To create revenue streams that ‘passively’ generate the income you need to go out of your comfort zone and take risks. I think that here in Slovenia we’re very risk-averse. 

My first course wasn’t very successful and I could decide to go back to a day job. In my view, in life you fail many times and it’s a part of the process to learn something new.

When you are creating courses, the topic should also be something that you’re enthusiastic and passionate about. If you’re doing courses only for the money it won’t work.

How do you decide on which projects to focus your time on?

That’s definitely a challenge that I still struggle with. It does become easier with experience. I’ve learned it the hard way in the past when I said yes too many times and that led to health problems in my life. I would really advise everyone to find their limits early and not discover them the hard way. 

Do you use any special equipment when producing your video courses?

I have two extra LED lights, I record myself with my phone and I use a Rode microphone. For screen recording and editing I use Camtasia. There’s no need for anything more complicated.

How long does it take you to produce your videos all together (content, scripting, recording, and editing)?

For my YouTube channel, it’s about one day of work for one ten-minute video. For an Udemy course where you need much more content, it can be easily two months of work. It’s probably possible to do it faster but that’s not stopping me at the moment from doing the work.

I recognize that it’s risky in terms of required time investment and that there are no guarantees that the videos will sell at all. It is still a necessary step if you want to build additional revenue streams.

What are some of your favorite resources for leveling up and people that you learn from?

I would suggest reading at least one book per month that helps you grow. It’s an investment you’ll never regret. I also have coaches I hire to help me get better in different areas. If you can move faster by learning from someone who has already solved what you are struggling with, why not use it and learn from it. Not all lessons need to be learned the hard way!

What I learned from talking with Jana

Technological aspects of creating online courses are the easy part. Mindset and being willing to invest time into the long-term is the hard part.

It’s a journey and it takes many tries to arrive at the point where an outsider can see success.

It’s quite possible to decide on what kind of life you want and then adjust the type of work that you do to that.

Larsen Cundrič shares how to level up during studies

In Meaningful work interviews I talk to people about their area of work and expertise to better understand what they do and why it matters to them.

Larsen Cundrič is in his final year of undergraduate Computer Science studies. We also talked about his previous entrepreneurial experience. At the time of this conversation, he was just finishing his last week of exams during his Erasmus exchange in Denmark.

What’s your current focus?

I’m deep into learning how to be a data scientist. How to organize data, build pipelines, and how that connects to creating prediction models. I’m already working with an early-stage biotechnology startup so all of this is not just theoretical. I’ve also had previous apprenticeship experience in creating prediction models in an ad tech company.

How do you currently see the role of a data scientist?

From what I’ve seen so far, this role requires a very diverse set of skills. You need to understand a lot of statistics and how to do data processing. It also requires you to know how to visualize all of this data.

You mentioned that you’re looking to specialize in Machine Learning and Artificial Intelligence. Why did you decide on it and not for example Web or Mobile development?

Before I started with my studies I was competing with my team as a part of the FIRST LEGO League. The task was to program the robot so it would autonomously solve the challenges in the competition. That’s when I knew I wanted to be in the field of programming.

As I started my studies I couldn’t connect with Web or Mobile development. I enjoyed mathematics and logical thinking much more. In my second year of studies, I stumbled upon a Data Science Bootcamp on Udemy. That’s where I discovered that data science is a perfect field of work for me. It’s a mix of math and computer science and you still get to implement practical solutions in innovative ways. I enjoy the complexity of connecting so many different disciplines together.

Are there any outcomes of your technology that fascinates you at the moment?

My work in a biotechnology startup feels really magical to me at the moment. We’ve developed a process using data science approaches that let us analyze your blood sample and deduct your age from it. That seemed like science fiction to me when I started my studies and now I’m part of the team that is developing such technology.

It’s also amazing how fast it’s possible to learn all of this. It only took me 3½ years to be able to work in data science, develop Android applications, and many more things. I also didn’t learn just the technology but also about the engineering aspects of projects.

You were also active as an entrepreneur. What did you learn from those attempts?

I’ve had two previous entrepreneurial projects. We created a brand of beeswax cosmetics, and we were developing a concept of gamification in marketing.

What I’ve learned from these experiences is that there are many more options in life than just having a job. You can build a company. You can do project-based work. You can join a startup and try to change the world. Concepts and opportunities that were completely foreign to me before.

I’ve also learned a lot from launching new business projects. I think the main lessons were more about the mechanism of running a business. How to keep track of finances, setting goals, and how to divide and delegate responsibilities. It also requires much more attention and focus than I expected. I’ve also learned that I’m currently more interested in technology so I’ve shifted my attention away from business development.

Overall I’ve discovered that the general opinion of what’s hard to achieve doesn’t always apply to me. I’ve always heard that it’s hard to study math and computer science. So it’s a good thing that I tried it for myself and discovered that it isn’t that hard. So now I know that I need to experience things for myself to be able to know if it’s really hard or not.

Can you recommend any good resources to level up?

What I learned from talking with Larsen

A good approach to learn about oneself is to give things try and evaluate if it’s a good fit or not.

The best students are supplementing their studies with self-directed online learning.

With every failure there’s a lot of learning that comes out from it.

First spike for Roam to WP plugin

Status update on getting the first “spike/prototype” of code working.

Scaffolding initial plugin code

I’ve looked into a number of scaffolding solutions:

I’ve initially tried to use WordPress Plugin Boilerplate Powered but it generated so much boilerplate code that it was just too much work to actually write my own code.

So I ended up using wp scaffold that produced a very nice skeleton that I could start writing code into.

Settings Screen

I first needed to build a screen where I could upload my exported data. Final result looks like this for now:

What was really useful in this research was article by Delicious Brains – 5 Ways to Create a WordPress Plugin Settings Page. I ended up using Carbon Fields as I didn’t want to invest too much time into scaffolding my own HTML Form code just to process a few fields.

Processing the data export

For now the general idea is that I only need to look at the first level of blocks inside Roam. So I’ll have structure like this:

  "create-time": 1621153344466,
  "title": "!Resources/BASB/Reviews",
"children": [
  "string": "Wordpress:: #publish",
  ":create/user": {
    ":user/uid": "D9GErGIgWMcqL1SJ9egralKACQ62"

and I need to find all blocks that have somewhere in the first level of children a string that matches "Wordpress:: #publish". The problem is that tree searching libraries like jsonq only return the matching child node but not the parent structure.

No problem we just need to write a single node depth search:

function extract_nodes_to_publish( array $data ): array {
	$rules = \preg_split( "/\r\n|\n|\r/", carbon_get_theme_option( 'rtw_import_rules' ) );
	if ( ! $rules ) {
		return [];

	$matching_pages = [];
	foreach ( array_splice( $data, 0 ) as $page ) {
		if ( isset( $page['children'] ) ) {
			foreach ( $page['children'] as $block ) {
				if ( in_array( $block['string'], $rules ) ) {
					ray( $block['string'] );
					$matching_pages[] = $page;

	return $matching_pages;

Rendering whole content tree

After we have a list of pages that match we need to render whole Roam content page that is in Markdown strings into HTML. Since I’ve been inspired by “Roam Blocks” plugin I’ve decided to reuse their function that does that:

First rendered page

With a bit more glue code I can already see how this plugin creates a new Note custom post types and inserts a page that I tagged with #publish:

Next steps

  • Figure out how to grab Title:: attribute if present so I don’t need to expose internal Roam page titles
  • Figure out what should be a bullet and what should be just a paragraph.
  • Publish to Github so maybe some other brave soul could give it a try