The type of bad bosses I hate the most in TI are the ones who just don't care about code quality, maintanability, development pipelines or anything related. All they care about is crazy impossible deadlines and seeing the product ready, doesn't matter if the code is a mess and it'll break everything if you remove a comma. I find that kind of management extremely toxic and not constructive for the developers. if you want to evolve as a programmer, go find a better place for you. that's what I did =\
Hi johnny! It's Steve, the new head of marketing! I turned Toblerome around in two years! Anyways, we love the app, however all of these menus are feeling stale. I want you to streamline the interface into something resembling cortana or siri. I was at a trade show in Boston, and let me tell you, bots are the new thing. Dont give me any of that crap about cycles or testing. That stuff is just gibberish to me. We need bold, self-starting, disrupters who get shit done. You have two weeks.
Oh my god! You nailed it! hahaha. The boss I was refering to does exactly this! He goes to conferences like Web Summit just to come back with "BLEEDING EDGE TECH WE MUST IMPLEMENT NOW". hahahaha
Just playing devil's advocate here, but it's often times your job as a developer to help your boss understand the balance between good code and good sales figures. After all, your team selling your code, whether it's a bastion for best practice or not, is what keeps the company afloat and you with a job.
@mpj, I love that someone recommended "How To Solve It" to you. My community college calculus teacher recommended that to me 20 years ago and I still think about it all the time. One of my favorite ideas in there is that the last step of problem solving is that you have to go back and see if your answer makes any sense. I often find that I'm so happy to get an answer at all the first time through that I need that advice! Also, I love the connection you make between a text like that, pure mathematics, and our field. I personally find it difficult to find teams that really are looking for good thinkers. I'm confused by interviewers that are testing to see if you've memorized all ajax syntax (why on earth would I do that?), or if you can hand-write a method in jquery in 20 minutes (why on earth would I do that?), or write a merge sort algorithm that passes a bunch of test cases you can't see (why on earth would I write test cases to figure out what your test cases are?). It's rough out there! As a thinking engineer, you definitely have to be interviewing them while they think they're interviewing you!
As I'm reading the book "Extreme Ownership" you mentioned in a previous video, I totally recognize the kind of approach the book preaches. Taking ownership of the bosses mistakes is a good and constructive answer. Thanks for the video
Excellent answers! I've been in the game for 30yrs, really like what you said about money - if you can pay the rent and eat well, forget about it, it will look after itself. Personally I've learnt to see frustration as good sign, it means I'm going to get an edomorhine rush when I eventually solve it. Ironically that view has made more patient. :)
Really nice video MPJ! Good thing to live another monday (? Finally watched a funfunfunction at 7am and received the correct greet. Waiting for next week episode :)
I have many experiences with bad bosses. I get hired to do a project on my own and my boss uses his expertise in his experiences to demand what I am to do even if I know what way is the best way to do it. It's very difficult for me to have a lead role, even if I'm definitely the lead of a project, because of my natural social esthetic. Going forward, I will try to limit what I take a stance on and put my foot down even harder. I just wish there was a better way of communicating an issue when both parties are unfamiliar enough to not make any strong arguments. That is why I have been focusing on diagrams, sequence graphs, and so forth to be able and show that I am knowledgeable enough to say this is better than that. Better planning is the only way to avoid issues in the future where nobody has direction and the team gets confused on what future implementations will look like. /endrant
imho, just walking away and letting your brain deal with 'it' w/o focusing so hard on 'it' works (in those WTF! moments). I love it when answers just bubble up out of nowhere.
A very good video with very good points Mattias. I like what you said about pre-mature generalisation and it could stand out as a valid argument. However, I find it useful to often remove any uncertainty from the problem at the very beginning or think about handling as many cases as possible in my abstraction. This allows you to remove unnecessary abstraction at the very end, rather than handling messy duplicated code (which is way more difficult). For example I have recently been implementing a modal in React and I wanted to make it as generic as possible. It can handle a title, subtitle, images, buttons, a list of items, icons and it is responsive as well. If some of those props are not necessary, I'll simply remove them, but it couldn't be much easier to handle all those cases at the end. Keep it up with your videos
In unit tests find that duplication is benefitial to my test data. If I used a generalized way of mocking input, I would just use the same input all the time. When I rewrite it, I tend to change inputs - and thus unintentionally cover more cases.
In Haskell it's a code smell if your functions aren't overly general. (a -> b) -> C a -> C b can really only do one useful thing (function from a to b, container of a, returns a container of b, with no way to construct a new a or a new b; maybe it converts all a's into b's and puts them into a container of the same type?). In an imperative language, generalization right from the start is usually bad.
I wouldn't call that an "abstraction" in Haskell. It's just removing unnecessary specialization. Just because something is _abstract_ doesn't mean that it is an _abstraction_. Abstractions in Haskell usually come in the form of type classes.
Errata for the ep description s/lease of/raise, or/ "Manage your manager" was a good advise. If your manager has good intent and seeks to imrove you and your org, they will listen and support you. Also, quitting/moving _is_ the best advise when that doesn't work, great that you pointed that out. /L
Blackboard thing: done that in a interview. didn't get the job. And I thought that that kind of "attitude" was positive. Thanks mpje! I guess that I need to practice that.
Excellent answers to all the questions. For music, I have been using Brain.fm for the last month. It has worked out wonders. Very pleased. Highly recommended.
very informative, thanks mpj I have tinnitus too, I'm sorry yours is acting up recently :< Do you use speakers or headphones to listen to white noise?
7 років тому
How do you keep your work interesting? As a developer I enjoy solving problems, finding heisenbugs, and similar things that provide a challenge. But these are rare. Building the nth e-commerce site is just boring. The same applies to any kind of programming. Anything new is exotic and fun the first three times, but gets repetitive over time and proficiency.
I'm not sure I agree with the premature optimization part. What you described is basically unnecessary optimization. It's not realy premature since there is no point at which it will be useful to optimize the slow function anyway. What I always though of as premature optimization is when you e.g. add a kind of skeleton for future use case that eventually never comes. So you're kind of optimizing for easier additions to your code, not optimizing for speed. E.g. you might create a factory function for your simple object. The object creation is fairly simple and you don't really need this factory right now but you "know" that this will change in the future, as more features are added. You also explain this to your collegues during the code review and they of course agree with you ("Yes, having a few factories will of course be better than having a horribly complex constructor"). But eventually the features that you thought would come, never do. So now you have this stupid useless factory in your code that's there because someone wanted to PREMATURELY make a smart choice about handling circumstances that never came.
Hey there, thanks for all the work you put in your Videos. I really enjoy them and I have got a Question: When beginning a new Project espacially in JavaScript im always struggling with the initial setup. I often end up spending hours of researching how I should structure things before writing even one line of code. This goes all the way down to the file structure where I spend way to much time on deciding where to put stuff because my brain constantly tells me that the code base "could" grow.. And it seems when searching for articles or examples on the structure of a (lets say) react application you always end up with examples covering a one page application. Do you have any tipps & tricks or good readings solving the initial setup?
+Mario Deluna this is not specific to programming, it's called procrastination via research. It's well documented in the book The Now Habit which also suggests a bunch of coping strategies.
Not to ruin it, but PBS guy has the same video closing mantra (and, also almost the same glasses). I suggest you find another one. What about "Keep coding ?" (or sumthing....).
Wow, didn't know Microsoft made a full Sublime Text clone... I'm gonna try it out. On first glance it seems surprisingly decent. It even has the JSON settings... oh and some "telemetry"........
What about bad teams? Teams that continually choose inefficient processes, overly complex/overarchitected implementation instead of the obvious simple implementation? Such as rampant premature overgeneralization and refusing to pair program or code review...
How to deal with bad bosses/managers: listen Jocko Willink podcast, which gives pretty much the same advice, just much more expanded and in depth. Don't deal with them, deal with their egos.
Thanks for this Mattias. Interested to learn of your tinnitus . How did it come about? Is it something you manage long term or in 'flare ups'? Moderate sufferer here.
+Martin ive had it very mildly for a couple of years, but got a spike a couple of months ago and another spike a week ago. The last one was in conjunction with a party but this one is not obviously relatable to anything but stress. I've learned a lot about it the last four months, it's a fascinating condition. It gets noticeably worse on days that I've slept badly or when my mood is very low, and it's seems like it in general is almost purely neurological (we know very little about it). Many people get hearing damage and doesn't get tinnitus, and it seems like a lot of people that get it have depression prior to the tinnitus appearing. Julian Hill seems to have the best advice on the internet on dealing with it as far as I've found. I'm still formulating my strategy on how to deal with it, honestly, but looking at the few data points there are, it's seems like the people that get rid of it permanently focus a lot of removing stress from their lives and creating coping mechanisms for stress - meditation (transcendental and mindfulness) reoccur a lot in success stories. What I'm currently focusing on is removing stress from my life (reducing work load etc) and adding more stress handling - exercising and creating a daily routine for example. I'm also working on making the tinnitus my friend a bit more. It essentially means well, and viewing the sound as negative will keep you in a constant alert for the sound so that you are unable to forget it. I try to think of it as an internal stressometer, and visualize it as a cute corgi. Helps a lot. I'm planning on making mediation a habit but I found meditation hard even before the tinnitus, so that will require some planning and effort to work.
+funfunfunction I also try to use masking sounds as little as possible, or at a limited extent(not masking completely). Partially because the objective IS to get used to the sound and eventually forget that it exists, but also because it raises my sense of agency over it if I control it up and down.
A few months ago I started getting it as well, I do not know too much about it - however I have noticed that after a few sauna sessions and then cycling between hot and cold showers tends to get rid of it. Although it may just be that I am focused on the shock of temperature differences
i use this background noise machine -> mynoise.net there are many types of noises, atmospheres and drones to choose from and has an EQ and an animation feature. it's kinda cool!
Your videos are consistently great, but the immature person in me was tittering every time you said "premature generalization," because apparently anything with the format of "premature X" makes me laugh.
The type of bad bosses I hate the most in TI are the ones who just don't care about code quality, maintanability, development pipelines or anything related. All they care about is crazy impossible deadlines and seeing the product ready, doesn't matter if the code is a mess and it'll break everything if you remove a comma.
I find that kind of management extremely toxic and not constructive for the developers. if you want to evolve as a programmer, go find a better place for you. that's what I did =\
Hi johnny! It's Steve, the new head of marketing! I turned Toblerome around in two years!
Anyways, we love the app, however all of these menus are feeling stale. I want you to streamline the interface into something resembling cortana or siri. I was at a trade show in Boston, and let me tell you, bots are the new thing.
Dont give me any of that crap about cycles or testing. That stuff is just gibberish to me. We need bold, self-starting, disrupters who get shit done.
You have two weeks.
TI?
Oh my god! You nailed it! hahaha.
The boss I was refering to does exactly this! He goes to conferences like Web Summit just to come back with "BLEEDING EDGE TECH WE MUST IMPLEMENT NOW". hahahaha
My favorite is "we don't have time for process anymore." Actual quote. :)
Just playing devil's advocate here, but it's often times your job as a developer to help your boss understand the balance between good code and good sales figures. After all, your team selling your code, whether it's a bastion for best practice or not, is what keeps the company afloat and you with a job.
@mpj, I love that someone recommended "How To Solve It" to you. My community college calculus teacher recommended that to me 20 years ago and I still think about it all the time. One of my favorite ideas in there is that the last step of problem solving is that you have to go back and see if your answer makes any sense. I often find that I'm so happy to get an answer at all the first time through that I need that advice! Also, I love the connection you make between a text like that, pure mathematics, and our field. I personally find it difficult to find teams that really are looking for good thinkers. I'm confused by interviewers that are testing to see if you've memorized all ajax syntax (why on earth would I do that?), or if you can hand-write a method in jquery in 20 minutes (why on earth would I do that?), or write a merge sort algorithm that passes a bunch of test cases you can't see (why on earth would I write test cases to figure out what your test cases are?). It's rough out there! As a thinking engineer, you definitely have to be interviewing them while they think they're interviewing you!
Hofstadter's Law:
It always takes longer than you expect, even when you take into account Hofstadter's Law.
Good Monday morning MPJ, great Q&A!
THis is the content I have subscribed for! Yes! Getting to the real gritty details of LIFE within software jobs.
I love the way you are talking about code - thank you so much!
Could you show us your books?
great idea, whenever I see books in a video/photo I always try to determine which one they are. Too hard in this video.
As I'm reading the book "Extreme Ownership" you mentioned in a previous video, I totally recognize the kind of approach the book preaches. Taking ownership of the bosses mistakes is a good and constructive answer.
Thanks for the video
Excellent answers! I've been in the game for 30yrs, really like what you said about money - if you can pay the rent and eat well, forget about it, it will look after itself. Personally I've learnt to see frustration as good sign, it means I'm going to get an edomorhine rush when I eventually solve it. Ironically that view has made more patient. :)
Really nice video MPJ! Good thing to live another monday (?
Finally watched a funfunfunction at 7am and received the correct greet. Waiting for next week episode :)
Always a pleasure to listen to the smart answers!
I have many experiences with bad bosses. I get hired to do a project on my own and my boss uses his expertise in his experiences to demand what I am to do even if I know what way is the best way to do it.
It's very difficult for me to have a lead role, even if I'm definitely the lead of a project, because of my natural social esthetic. Going forward, I will try to limit what I take a stance on and put my foot down even harder.
I just wish there was a better way of communicating an issue when both parties are unfamiliar enough to not make any strong arguments. That is why I have been focusing on diagrams, sequence graphs, and so forth to be able and show that I am knowledgeable enough to say this is better than that. Better planning is the only way to avoid issues in the future where nobody has direction and the team gets confused on what future implementations will look like. /endrant
You said premature generalization like 50% of your "premature optimization " section.
imho, just walking away and letting your brain deal with 'it' w/o focusing so hard on 'it' works (in those WTF! moments). I love it when answers just bubble up out of nowhere.
A very good video with very good points Mattias. I like what you said about pre-mature generalisation and it could stand out as a valid argument. However, I find it useful to often remove any uncertainty from the problem at the very beginning or think about handling as many cases as possible in my abstraction. This allows you to remove unnecessary abstraction at the very end, rather than handling messy duplicated code (which is way more difficult). For example I have recently been implementing a modal in React and I wanted to make it as generic as possible. It can handle a title, subtitle, images, buttons, a list of items, icons and it is responsive as well. If some of those props are not necessary, I'll simply remove them, but it couldn't be much easier to handle all those cases at the end.
Keep it up with your videos
finally a mature channel about development without ego-mastrubation over presentations and screen captures ... many thanks for this
@17:11 The look of bad memories flooding back
In unit tests find that duplication is benefitial to my test data.
If I used a generalized way of mocking input, I would just use the same input all the time.
When I rewrite it, I tend to change inputs - and thus unintentionally cover more cases.
You're a wise man, I learnt a lot from this video, thanks
Regarding bosses and other humans: ua-cam.com/video/6HW3382nhKE/v-deo.html
In Haskell it's a code smell if your functions aren't overly general. (a -> b) -> C a -> C b can really only do one useful thing (function from a to b, container of a, returns a container of b, with no way to construct a new a or a new b; maybe it converts all a's into b's and puts them into a container of the same type?). In an imperative language, generalization right from the start is usually bad.
I wouldn't call that an "abstraction" in Haskell. It's just removing unnecessary specialization. Just because something is _abstract_ doesn't mean that it is an _abstraction_.
Abstractions in Haskell usually come in the form of type classes.
you look like a serious person in this video😂😂 great vid !awesome as usual
Pedro Diaz he has a shirt!
it think that might be it .. lol i also use visual studio but i like how atom looks cleaner at least for me .. vs code feels a little cluttered
That is some solid advice. Thanks MPJ!
Errata for the ep description s/lease of/raise, or/
"Manage your manager" was a good advise. If your manager has good intent and seeks to imrove you and your org, they will listen and support you. Also, quitting/moving _is_ the best advise when that doesn't work, great that you pointed that out. /L
I thought in the thumbnail you'd written 'How to deal with badasses'. Maybe an idea for a future video?
You are awesome, man! Thanks for your vids.
Your regular viewer :)
Leading upwards - great advice. From my experience this can make your department a better place, so there will be much less reasons to switch it :)
Respect, the answers in this are excellent.
Blackboard thing: done that in a interview. didn't get the job. And I thought that that kind of "attitude" was positive. Thanks mpje! I guess that I need to practice that.
Thanks for these videos, your new glasses look great.
Your channel is awesome! Good job :)
Muddling up optimisation and generalisation felt like a test 😀
I really like this quote "our life is a way to short to suffer bad managers eight hours a day"
Make more Q&A videos. I liked this a lot. Thanks!
You should try a coffee shop background noise generator. It can be a good break from color sounds.
mpj, is it possible in some future video to show an example of how you profile a piece of code?
mpj, you're truly & simply AWESOME :)!
I also use VSC from the interwebz. Atom has become just my notepad and ST has turned into memories.
You are just amazing! Thanks for share your thoughts...
Noticed you wearing the Pavlok. Curious about your use and experience with it. FFF episode worthy?
Glad I'm not alone on the estimation multiplier!
Excellent answers to all the questions.
For music, I have been using Brain.fm for the last month. It has worked out wonders. Very pleased. Highly recommended.
I also always multiply my estimations by aproximatedly 3! And it really works! :D
very informative, thanks mpj
I have tinnitus too, I'm sorry yours is acting up recently :< Do you use speakers or headphones to listen to white noise?
How do you keep your work interesting? As a developer I enjoy solving problems, finding heisenbugs, and similar things that provide a challenge. But these are rare. Building the nth e-commerce site is just boring. The same applies to any kind of programming. Anything new is exotic and fun the first three times, but gets repetitive over time and proficiency.
great video ! you really Make me think about my work hahahah keep it up !
I'm not sure I agree with the premature optimization part. What you described is basically unnecessary optimization. It's not realy premature since there is no point at which it will be useful to optimize the slow function anyway.
What I always though of as premature optimization is when you e.g. add a kind of skeleton for future use case that eventually never comes. So you're kind of optimizing for easier additions to your code, not optimizing for speed.
E.g. you might create a factory function for your simple object. The object creation is fairly simple and you don't really need this factory right now but you "know" that this will change in the future, as more features are added. You also explain this to your collegues during the code review and they of course agree with you ("Yes, having a few factories will of course be better than having a horribly complex constructor"). But eventually the features that you thought would come, never do. So now you have this stupid useless factory in your code that's there because someone wanted to PREMATURELY make a smart choice about handling circumstances that never came.
Hej MPJ! You are awesome! I have a great question for you! How do I set the F8 / play key to initiate/start up my SPOTIFY desktop app on my MacBook?
Hey there, thanks for all the work you put in your Videos. I really enjoy them and I have got a Question:
When beginning a new Project espacially in JavaScript im always struggling with the initial setup. I often end up spending hours of researching how I should structure things before writing even one line of code. This goes all the way down to the file structure where I spend way to much time on deciding where to put stuff because my brain constantly tells me that the code base "could" grow.. And it seems when searching for articles or examples on the structure of a (lets say) react application you always end up with examples covering a one page application. Do you have any tipps & tricks or good readings solving the initial setup?
+Mario Deluna this is not specific to programming, it's called procrastination via research. It's well documented in the book The Now Habit which also suggests a bunch of coping strategies.
your advice is gold
i use the multiply by 3.14 to manage time too i believe i got it from a Unity3d talk. where they mention time management
Not to ruin it, but PBS guy has the same video closing mantra (and, also almost the same glasses). I suggest you find another one. What about "Keep coding ?" (or sumthing....).
Wow, didn't know Microsoft made a full Sublime Text clone...
I'm gonna try it out. On first glance it seems surprisingly decent.
It even has the JSON settings... oh and some "telemetry"........
What about bad teams? Teams that continually choose inefficient processes, overly complex/overarchitected implementation instead of the obvious simple implementation? Such as rampant premature overgeneralization and refusing to pair program or code review...
How to deal with bad bosses/managers: listen Jocko Willink podcast, which gives pretty much the same advice, just much more expanded and in depth. Don't deal with them, deal with their egos.
Great video!
Thanks for this Mattias. Interested to learn of your tinnitus . How did it come about? Is it something you manage long term or in 'flare ups'? Moderate sufferer here.
+Martin ive had it very mildly for a couple of years, but got a spike a couple of months ago and another spike a week ago. The last one was in conjunction with a party but this one is not obviously relatable to anything but stress. I've learned a lot about it the last four months, it's a fascinating condition.
It gets noticeably worse on days that I've slept badly or when my mood is very low, and it's seems like it in general is almost purely neurological (we know very little about it). Many people get hearing damage and doesn't get tinnitus, and it seems like a lot of people that get it have depression prior to the tinnitus appearing. Julian Hill seems to have the best advice on the internet on dealing with it as far as I've found.
I'm still formulating my strategy on how to deal with it, honestly, but looking at the few data points there are, it's seems like the people that get rid of it permanently focus a lot of removing stress from their lives and creating coping mechanisms for stress - meditation (transcendental and mindfulness) reoccur a lot in success stories.
What I'm currently focusing on is removing stress from my life (reducing work load etc) and adding more stress handling - exercising and creating a daily routine for example. I'm also working on making the tinnitus my friend a bit more. It essentially means well, and viewing the sound as negative will keep you in a constant alert for the sound so that you are unable to forget it. I try to think of it as an internal stressometer, and visualize it as a cute corgi. Helps a lot.
I'm planning on making mediation a habit but I found meditation hard even before the tinnitus, so that will require some planning and effort to work.
+funfunfunction I also try to use masking sounds as little as possible, or at a limited extent(not masking completely). Partially because the objective IS to get used to the sound and eventually forget that it exists, but also because it raises my sense of agency over it if I control it up and down.
A few months ago I started getting it as well, I do not know too much about it - however I have noticed that after a few sauna sessions and then cycling between hot and cold showers tends to get rid of it.
Although it may just be that I am focused on the shock of temperature differences
This guy looks really COOL.
I see have a Pavlok.
How do you like it and what habbit were (are?) you trying to break ?
Very practical..!
13:34 - do you have sources for this? Thanks!
Naftali Friedman anecdotally this is how it has worked for me and most of my friends and colleagues
i use this background noise machine -> mynoise.net there are many types of noises, atmospheres and drones to choose from and has an EQ and an animation feature. it's kinda cool!
whether you are new or not, you still watched an episode of fun fun function.
I think someone read Clean Code 3:37
Your videos are consistently great, but the immature person in me was tittering every time you said "premature generalization," because apparently anything with the format of "premature X" makes me laugh.
How to deal with bad bosses:
Get some balls and stop being someone else's slave.
then you will have to deal directly with clients that have even less knowledge about code :(
What i said was not in keeping with the video context.
I see that you love books. I suggest Algorithms to Live By.
how to do interview people when you hire them :)
Have the same problem .... can I get a job ... are you hiring ? ;)
The word "just" starts with a "j", not with an "i" ;)
+Mihai Andrei Stanimir sorry, j is proncounced that way in Swedish, very hard habit to break.
Mihai Andrei Stanimir sorry you don't like it! I as an American love your accent MPJ!
no worries, it is like your own schtick))
"causator" == cause lol
hello =]
Bad boss? Gtfo of there asap.