Bad programmer seeking mastery - no passion for programming

Hello all,

I graduated school with very little programming knowledge and got my first job as an Elixir engineer. I have enjoyed using Elixir in production so far. However, I struggle to keep up with my peers. I have no passion for programming (being honest), but it pays the bills for my family and so I am stuck. I do want to love it because there’s an intellectual part of me that is still interested (I like watching Joe Armstrong and Rich Hickey talk about programming). However intellectual interest is not enough; I have to force myself to code.

Now that I have to make the best of my situation, what is the best way to gain mastery? I feel as though I will enjoy it more if I get good. I have no ideas for a side project and I’m not sure how much doing leetcode will make me more skillful for a production codebase.

I would appreciate any advice on this :slight_smile:

4 Likes

I was in a similar situation, where I did everything to try and escape coding. I tried learning a new language (not a programming languages), tried getting a different education. But having nowhere else to go, I did coding in between, and am now at a company that I really enjoy working for, and will probably keep coding for a long time. Even though I consider myself a (reliable) mediocre coder.

Things in short that made me realise I do like coding:

  • 3± year experience in the same area will get you over that bump, where everything is hard, to where everything is more easy. Then you can put in more of your creative mind.
  • (personal) Accepting that you are a geek. I rejected being OK with loving games, coding etc, and not loving parties etc. Now I am more OK with it. Much better quality of life.
  • My first job was pretty horrible. Toxic colleagues mostly. Which made me think all coding jobs would be like that, while it was actually the company itself that was the issue. Took me a while to get over that.
  • The company might not suit you. Good colleagues are super important :heart_eyes:
8 Likes

I think this is a good point from @JorisKok, the joy of programming isn’t the entry of code into the editor. It’s the joy of using data structures and algorithms to represent the solution to problems - the more creative part of the process. So if you get sufficiently proficient at the translation of data structures and algorithms into code it becomes more enjoyable to program - being the higher level creative process. And in addition, your code itself will probably get better too. Just my opinion of course.

7 Likes

Now if you said you had to program in BAL or write the towers on Hanoi on an IMLAC PDS4 where you had to manually manage display refresh then for sure I’d say go find another career. These days its all just luxury in the development world :slight_smile:

2 Likes

Thanks @kip and @JorisKok. But how do I get to this higher level creative process?

I’m not passionate about any specific idea to go build it. So the advice “build something you want to use” or “build for yourself” falls on deaf ears. I feel like an idiot even asking this question.

Whenever I ask a question like this, I sometimes I get quit your job or change jobs as the answer but that is absolutely not an option. I have made my bed and now I must lie on it.

You should not feel at all stupid for asking, its a very reasonable question. But probably not one other people can or should answer for you.

In my view it’s pretty important not to define yourself by the work that you do. Sometimes a job is just a job and thats perfectly OK.

7 Likes

On the opposite of @kip, I don’t really like using data structures or algorithms. Well, I do like it at some point but that’s not what I can consider a joy in coding, and that’s absolutely not the reason I keep coding almost every day.
In fact, there’s 2 things I like in coding:

  • the smile of the face of the end user when the product is good and fits his/her desire. That’s the best and even if the programming language / framework is awkward (which has happened most of the time in my case), if I can have this thing, it’s ok
  • the power of the laziness. Less I code, less I have to debug code, the happier I am. Then I have to be more clever (but I am not really that clever, though) and able to use lots of tools to achieve this. For example, I don’t like devops, but deploying safely with just a click on “Accept Pull Request” is soooooo good that I accept to get over my aversion, get the things done and enjoy my one-click-deploy each I do it.

During a long time, I was seen as alien because I was doing dev jobs and saying that I’m not interested in coding, rather in the project, and that I don’t code at home and in fact I know a lot more about art theory than about programming languages. But still I can do good job. Because I like to give end user what they want, or discuss about what they should better want another thing. Which is not the case of devs only interested in tech stuff…

Also, as other said, team is very important!

7 Likes

This. Regardless of the job (e.g. serving coffee, cleaning toilets, whatever…)

If you’re disconnected from the end user you need to fix that.

2 Likes

@mindok @domvas good advice. Thank you both. I will try to build something to get some users.

… or get some users and then build something for them. If you have a job now, there’s always someone in the office who wants a simple little tool to make their lives easier.

EDIT: Here’s an example I was reading earlier today: Floor map management system on web, with Leaflet

1 Like

Passion isn’t mandatory. Caring about doing the work well and crafting something to the best of your abilities might be.

If you can get work that is programming but where the thing you care about is the outcome that can be a different eay of finding the motivation to invest the time. I’ve worked in education software which can be rewarding in many ways. I imagine people writing high stakes financial systems find some motivation in the gravity of their work. Startups are sometimes very motivated by a goal rather than the code made to achieve the goal.

You don’t need to care about programming. But I think caring about what you do can be quite important.

I found the book “So good they can’t ignore you” useful in outlining a path to mastery and what the point of that is. But I don’t share this particular struggle. I’ve lost my love of programming a few times, it always came back when I got ris of stress. I happen to be passionate and self-motivated to do this. But it isn’t necessary.

Best of luck

3 Likes

Thank you, I agree. There’s no excuse for not improving upon one’s craft which is why I’m here asking for help / suggestions from seasoned developers. Just ordered Cal Newport’s book :slight_smile:

1 Like

When I started medical school there were 100 in my class. I’d like to say that everyone made it through, but the truth is that we lost a few along the way. So what was the difference between those who made it and those who didn’t? Was it intelligence? Toughness? Altruism? Love of medicine and science? No. It wasn’t any of those things. It was student loans. Every single person that dropped out of my medical school came from a background that made it possible for them to enroll without taking on hundreds of thousands of dollars in debt. For most of us, stopping simply didn’t feel like an option, and it kept us going through the toughest moments.

Right now, you feel trapped in your job. But perhaps your situation is doing you a favor, keeping you in your job through a tough period where you might be tempted to give up. The way you feel about your job is cyclical—it’s the same for all of us, even if our careers are very different. If you had the choice to easily walk away, you’d miss out on all the good times that are coming up—and they definitely are coming.

You said “I feel as though I will enjoy it more if I get good,” and you are absolutely right. It’s insightful, but it’s also only part of the equation. About a decade ago, Daniel Pink began giving short lectures to promote his new book, Drive. In that book, he explains that research has identified three factors that motivate people and improve their performance:

  1. Autonomy

  2. Mastery

  3. Purpose

One of my personal observations over the years, is that it’s very easy to acquire one of the three elements when you already have the other two. And in real-world scenarios, we see fluctuation in these three elements many times in one career. For example, during a period of strongly-felt purpose, you might feel comfortable returning to a beginner’s mind, seeking mastery in a completely new arena. You might be willing to sacrifice some autonomy during that period, and then suddenly seek it out again by starting a company with your newfound skills.

Perhaps your work situation isn’t currently the place to provide you with fulfillment, but that could change. Imagine this: You use your free time to build a static website for a local charity, or a lifelong friend who is starting their dream business from scratch. The website itself isn’t anything special, but the cause is close to your heart (purpose). Over time, you add more and more features. You can do whatever you want, because the recipient is appreciative and you’re working alone (autonomy). You end up adding heaps of functionality, and in the process you start pushing some of your tools to their limits (mastery). Let’s say that those tools are open source, like Elixir or LiveView. Now suddenly you find yourself with a skillset to give something back to those open source repos. So you start contributing there. People are grateful—they’re using your code, you’re building relationships, people see you as a mentor. This new code is different from what you write at work. This code gives something back to you.

What happens then? The answer is that you bring all of that with you when you go to work. You have a lot more to offer your employer, and if they are smart, they will start to give you autonomy in exchange for your mastery. This autonomy may allow you to find or create purpose at your job that wasn’t there before. Or maybe it will be time for a new employer, self-employment, etc. You never know where your head will be down the road.

13 Likes

@tio407 There are many more things to jobs than just programming. If you know a lot about a business, field or have another skill, there are many ways to combine it. Learning another different skill also opens up opportunities to find areas where there is a need for tools. And then you might find it interesting to make/help building those tools.

2 Likes

I feel you might just have a bit of a boring work place. That’s not inherently bad – as you said, it pays the bills.

I advise you to try and do something outside of your direct work responsibilities. You guys have a script that’s slow? Try and optimise it – be it a CI/CD thing or anything else. Or you aren’t happy how certain code looks? It’s hard to modify? Try and refactor it on your own time – or steal some of your normal work time for it.

Additionally, as others mentioned, find a cause that you like. Surely there’s at least one thing out there in the world that you’d feel fulfilled solving for someone.

IMO you need a bit more human contact – go to some meetups in your area, even if they are not about Elixir. Talk to people, ask them what they struggle with in their work. You might find something interesting to get you excited about technology.

I’d advise against reading about algorithms though. Currently you aren’t feeling the excitement so I don’t think you should force yourself.

4 Likes

I guess nobody has a constant passion for anything. There are ups and downs. Whenever I lose my passion, I both reduce the tempo and force myself to do as much as I can. I mean I reduce my working hours to a point where I don’t feel strong disgust towards programming. In the same time I force myself to do as much work as I can. Yes, I’m less productive for a while, let’s say few days or a week, but by forcing myself to persist and work to my limit, I gain strength. I gain strength, because I haven’t cheated - I reduced the tempo no more than necessary and I increased the effort as much as I could, keeping my psychological balance. After that quest, I feel empowered, successful and stronger and smash the rest of my task by sometimes doubling the working hours per day. That increase in productivity is also due to the nature of my work - usually 1/2 - 1/3 of the task is relatively pleasant and not exhausting e.g. css, ui, while the backend to me is hard and boring of the I-want-to-give-up-programming kind.

4 Likes

This might sound counter-intuitive to some but I think I know exactly what you mean. I call it “the robot mode”. I get up in the morning, get a breakfast, do a mild workout but still don’t feel motivated to work. And I say to myself: “dude, you are paid to do this; give them something that they need” and as you said, I push through and deliver one or two bits of work. Even if the productivity is reduced I found that people rarely care and are appreciative that you aren’t disappearing without a trace for a week or two, and that you able to sustain a certain tempo (averaged over the course of weeks).

3 Likes

“Research shows that passion is generally something that emerges in response to working hard in an area of interest. Don’t be concerned that you are not yet passionate about your work. Passion takes time to form.

To build on the process of passion-building, stay curious and pay attention to what attracts you. You can notice at each step of your career, if you are paying attention, whether the thing you’re doing is leading, more or less, in the direction of a passion.” -Bill Burnett, Dave Evans, Designing Your Work Life: How to Thrive and Change and Find Happiness at Work

4 Likes

In a world miraged by sensationalism, get rich quick consumerism and devoid of concentration, what you are experiencing is an existential crisis due to many factors.

TL;DR;
Passion breeds mastery. The bridge between passion and mastery is through optimal experience, or flow.
Without flow or passion there can never be optimal experience nor mastery.

I hope this minipost will enlighten many to make the good choice in life. There is a lot to say, actually, as of writing this I’m working on complex course which touches many of the points you’re facing (including passion!). As everything you do in life is a choice and an opportunity which leads to other opportunities.

First and foremost, you should be happy to be working at a company with Elixir. I’m sure most people who love Elixir are struggling to get it adopted at their companies. I for one have been searching for it for many years…

Those who tell you to “quit/change your job” probably have acceptable intentions.

The reason is simple, there is an enormous influx of people who want to become programmers or work in the IT field mainly because of the benefits and perks associated. Most switch because of the same benefits you’ve probably decided… Every time I’m asked for an input if someone needs to switch I tend to ask them a few questions such as:
Are you willing to dedicate yourself for 3 hours a day for 3 years to learn the basics?
Are you willing to dedicate a lifetime into becoming a craftsman and master your field?

As a programmer myself, I took quite a different approach to programming. I started out young out of the curiosity of how things are built. Struggling to learn things by myself through trial and error, there was no such access 17 years ago to information as there is today.

I progressed slowly and steadily by creating many personal pet projects. Most of which where experiments with various tools, programming languages or which seeked to solve a problem I or someone else had.

I slowly moved on helping small businesses automate by creating various tools. I took ownership of the whole process from inception, to creation, to deployment. Meaning that I needed to jump into the shoes of various roles which are spread into most organizations: Business Analyst, Salesman, Designer, Project Manager, System Administrator, Programmer, Front end/ Backend developer, DB Admin, Architect, Tester, Marketer, Manager etc…
Surely, for each position I had to learn new things, meaning I was open to experimentation. I’d read many books.

Another thing I did was always go against the majority consensus… For example, even though I had enough experience in Java and other mainstream programming languages where jobs were always near, I went with a different, more optimal language. No, Elixir didn’t exist back then or was just in it’s inception(no libraries, tools or community).

This enabled me to see the bigger picture and actually take pride in what I was doing.

I worked part time in the technical support field SOLELY because I knew that working in a company as a programmer would deprive me of my ownership liberty. The other part time I focused on becoming better and better at the full ownership system. Only when I felt ready, did I join a company as a senior programmer.

Note:
Had I acquired programming skills strictly from school and worked directly in a company as a programmer/IT-ist, I, too would have succumbed to the drawbacks. I still see people who aren’t actually interested in programming and it makes me sad.
What I recommend you read is Flow: The Psychology of Optimal Experience did I understand by Mihaly Csikszentmihalyi. Once i read it, I understand why I had succeeded and why most people fail. The person who referenced Drive… efectually referenced Flow, as 99% of the books have Flow in their bibliography, I know because I’ve read many such books along the way.

Without passion you will keep struggling and you probably won’t achieve the level of mastery a passionate person will have.

Don’t worry, Flow can be found in anything, and passion comes when you take ownership.

Csikszentmihalyi describes eight characteristics of flow:

Complete concentration on the task;
Clarity of goals and reward in mind and immediate feedback;
Transformation of time (speeding up/slowing down);
The experience is intrinsically rewarding;
Effortlessness and ease;
There is a balance between challenge and skills;
Actions and awareness are merged, losing self-conscious rumination;
There is a feeling of control over the task.

Mastery can only be achieved through constant improvement by reaching an Optimal Experience through Flow. You really do need passion for this.
It’s the same as when you see a doctor or nurse who is totally uninterested in what they’re doing. This may lead them to not take interest in providing an adequate solution for your problems or treating you as a “thing” instead of a person.

Without passion we wouldn’t have anything in the world as no one would be interested enough to go out of their way in spending large amounts of money, time and energy to pursue something. Think of the majority of people who discovered and inveted the things humanity needed, those who saved lives, wheren’t in the lucky position as you, to have a job to pay the bills. They worked out of passion.

You have various options:
The easy solution?
Expand your knowledge in various subfields of IT.
Have personal pet projects.
Do a MVP of an idea you have.

If you’re young and have the necessary energy you can always put extra hours aside to experiment. What I’d recommend is to switch to working part time. 4 or 6 hours and seek other things, experiment with various fields and domains outside of IT. Expand your entrepreneurial knowledge in Marketing, Sales, Statistics, etc.

You might be surprised to learn that working on becoming a master in 2 totally unrelated domains opens up various opportunities.

The choices you need to make in life depend solely you.

Take care, hope you’ll find the solution to your resolution.

7 Likes

My passion for programming sparked from outside interests in building stuff. Before I discovered programming I would work on old cars and bikes, make art, and build loads of other random things. I always loved creating and improving stuff. When I realized I could build apps for a living I became very passionate. The passion didn’t start with writing code though, initially I was only passionate about the end product and the coding process was frustrating to me. Overtime It became a passion.

Definitely try starting a side project. Build a clone of an app that you really like or create something totally new that you find interesting. When you want to see something through to completion every bit of progression towards the end product is incredibly satisfying and you will start to get addicted to that feeling. Also stay away from Leetcode if you are trying to build up passion (unless you enjoy it), most people do not find that type of problem solving to be enjoyable, I strongly prefer solving real world problems rather than artificial ones.

3 Likes