Your Programming "Hobby" WON'T Cut It

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
what do you code for do you write code purely for the fun of Discovery and exploration or do you code because somebody else pays you to do it is one of these worse than the other or are they just different aspects of the same thing what's the difference between a professional programmer and a hobbyist [Music] hi I'm Dave Farley of continuous delivery welcome to my channel if you haven't been here before please do hit subscribe and if you enjoy the content today hit like as well this is almost certainly a provocative question not because there's anything wrong with either one of these things in the right context but rather because there are times when we find people playing at development when they shouldn't be I started out purely as a hobbyist I'm largely a self-taught programmer and I started out first writing simple games in the early days of Home computers and later got interested in more complex computer graphics I spent a lot of my free time exploring computer Graphics of all kinds and then got into building 3D Graphics animation rendering and Ray tracing systems I did a lot of playing with computers in the early days and I think that this helped me to begin to establish some of what I'd now think of as the foundations of my coding Style I got to the point in my love affair with coding that I thought wouldn't it be great if I could do this for a living I couldn't get a job as a professional programmer at first I didn't have the right qualifications for that instead I got a job in support for a computer manufacturer as part of that I carried on writing whatever code that I thought of or interested me to solve the problems that I I came across though now I was being paid for it I was fortunate in that my employers encouraged me to explore the systems that I was supporting some of this code got noticed and was used by the company that employed me for a variety of different things and this was my route into professional programming before we go any further let me say thank you to our sponsors we're fortunate to be sponsored by equal experts tricentis transfig and Roost they've all support their Channel and all of them offer products and services that are well aligned with the topics that we discuss on this channel every week so if you're looking for excellence in continuous delivery and software engineering then click on the links in the description below to check them out so the first distinction that we could try to make between hobby programming and professional programming might be about who comes up with the ideas but I don't think that this is a good or a useful way to think about this often used for important software does start out as someone's personal project or idea even in big successful companies that are sometimes focused on other things software developers are in a unique position to see problems that other people miss and to see solutions that other people haven't thought of so I don't think that this explanation is really good enough I think that the difference may be significantly more subtle and more important than that one of the overly simplistic approaches to software development that I see in lots of organizations is the over specification of solutions to development teams with sometimes non-technical people sometimes more senior technical people dictating Solutions rather than leaving that to the people who are really in the midst of the code I think that this is a big mistake as I've said before here software development is about solving problems for people not just transcribing predefined Solutions into code I'm not really sure where this sits though on the hobbyist professional Continuum but I am pretty certain that this is not what successful professional software development really looks like if you're interested in more of what I do think professional software development looks like sign up to our mail list where we publish regular free guides on all aspects of software development and regularly have special offers on training courses there's a link in the description below to that ultimately the real difference between being a professional programmer and being a hobbyist is that someone else is paying for your work this is pretty obvious at one level in that one of the meanings of professional means being paid to do something but I mean more than that when I describe it that way if I'm working on building something even if it was my idea to start with and I'm being paid by someone else to do it then to some extent I've abdicated some control and some responsibility for my ideas and my work but not all control and not all responsibility I still have a duty of Professional Care and a professional opinion about my work but if I have customers or employers then they certainly have some stake in my work too now this is completely different to when I'm writing code for my own in self-interest and has some significant implications for how I'm going to behave I mentioned earlier that in my early steps as a developer I got very interested in computer Graphics I built my own tools and libraries and this was before the days of Graphics co-processors so I built the entire stack from writing code to map and render pixels on the screen and drawing graphical Primitives like lines and arcs in assembler to in the end a full 3D modeling package that did Ray tracing and some basic physics in constructing animated models the lower layers were pretty decently refined because I use them everywhere so over time I refine them to make them easy for me to use but the closer I got to the edges of my understanding and learning the less refined the system was for example I built my 3D models with some loose collection of very crude tools I often wrote bits of code to generate bits of the 3D models as I needed them this was because I was the only user and so this was perfectly fine for me I had ideas and plans of how to make the 3D modeling problem easier but I never got around to that part of the problem because I was interested in the other parts the problems of rendering ever more realistic versions of the animations I was trying to create remember it was a long time ago so the animations weren't really very realistic by today's standards this would have been a very bad idea if I'd be doing this as a professional though I was a professional by this time but this project wasn't what I was being paid to do I now think that if I'd worked on this stuff as a professional I would have certainly been doing the people that paid me a disservice if I'd kept working in this way but actually I would also be doing myself a disservice too the difference here is really about what is the goal of my work in my exploration of the graphics programming problems that I found so much fun was solely about my own learning I was exploring for fun I learned a lot by focusing on trying to build better and better animations later I benefited from this learning in a wide variety of ways but these other things were never my direct motivation at the time fairly early on I sold one of my games he wasn't a huge success you won't have heard of it but even so I now had to do a lot of work on other kinds of things that I hadn't bothered with when I was playing with with it for my own ends I had to add front screens and proper scoring systems and other stuff that I hadn't really cared about up to this point I hadn't even bothered to add any support for text in my first version of the game when I was only learning about how to better manipulate the graphics I was chatting to a friend about this recently and she made an analogy with musicians amateur musicians do it only for the pleasure they practice to learn new things and to push the boundaries of their knowledge many people who do this will leave quite significant gaps in their understanding and their practice as a result because they're doing it for fun professional musicians practice for a very different reason and with very different goals there's an old saying about professional practice in music don't practice this until you can play it right practice it until you can't play it wrong that's a very different perspective when I'm working in hobbyist mode I'm playing I may be playing with a goal in mind and focused on learning new things but this is more like noodling on the guitar or jamming along to the adverts on the TV my learning is only Loosely directed I may gain skills through this kind of practice but my goals are pretty general and this isn't the best way to hone my skills really I believe that ours is a profession that is foundationally grounded in our ability to learn I think that to become effective professionals we must take our skills at learning seriously so I certainly don't mean to dismiss the importance of learning here but the learning that we do as a professional is somewhat different I think our learning is or should be more directed we're learning a specific technology perhaps for a particular goal or we're learning about the problem that we're solving to better understand and shape our Solutions we may decide to learn something completely new a new language or technique but like the musician our aim is to do that in a way that helps us to limit our mistakes later on so we'll still be more cautious about how and where we apply our new skills at the limits of our knowledge than we were when operating as hobbyists why does any of this matter well I think that each of these styles of development have their place but I see people suffering from misapplying both in their own context if you're a hobbyist and you're focused on building something as a professional style development I think you might be missing out you'll be spending too much time on stuff that isn't really teaching you anything new so in these circumstances your goal should be to focus on what it is that you really want to learn and play with the ideas enough to learn it or at least have fun while playing this isn't really the real problem though let me be clear I think that the much more common problem is usually the other way around people working in a professional context but working as though they were hobbyists the problem here is not that we don't need creativity or that professional development should be formulaic neither of these things are true but what is true is that in professional development not everything is creative and groundbreaking not everything is always huge amounts of fun there is stuff that we must do to satisfy those people who've invested in our skills in some way ultimately we have to build things that people want even if they don't know yet what it is that they want we have to build things that people can use at least to the extent that the people that use them can make progress of some kind one of the mistakes that I see quite often in some kinds of hobbyist development teams is well here is our wonderful product platform or service if people can't figure out how to use it then that's their problem they need to try harder maybe learn our special programming language or Arcane API after all we can use it so it must be usable well just because you can use it after you wrote it doesn't mean that anyone else can sensibly do so this problem is relatively common in open source projects that neglects the documentation for example because that isn't the fun part usually this is fine if you don't care if your project is used or useful but now you're doing this for yourself rather than to help other people which is fine but know which one you're doing and choose the right strategy this is to me a clear example of a hobbyist mindset one that is internally focused on the pleasure of the development team rather than being focused on taking the perspective of the real use of the code or system by other people sure this may not always be the fun part for you but there are only two strategies here you either make something from the perspective of your users or you make something to gratify the development team either is fine but if you only do the second you're playing at it if you're making things for real users you need to do the extra work to make it easy for them to use and understand this means that you must spend time on things that aren't always the fun part if you've ever complained about the need for meetings for example then what does this really mean in a professional context do you expect to work alone on only the things that you think of if not then you'll need to meet with other people to discuss things sometimes most people hate useless poorly focused meetings but meetings are an essential part of working as part of a team I once had to write a report on a project that the consultancy that I worked for at the time had done and that had been a bit of a disaster it had gone wrong for many reasons but one of them was that the project management at the clients had done some really rather dumb things someone had decided that developers were only really working when they were typing so that it banned all meetings even two people talking together was not allowed they had a deadline to meet it got so bad that the development teams were sneaking off to hold meetings in the toilets so be careful what you wish for professional development is about collaboration and that means we need to talk and you may not think of it this way but these talks are meetings too meetings aren't automatically a problem bad ones are railing against all meetings is one of those signs of a hobbyist group to my mind so if your meetings are a problem fix the useful ones make them better and eliminate the ones that aren't helping the other Hobbies tendency that I sometimes see is people avoiding the grungier parts of the job in the best teams that I've seen the ones that I think of as being really successful professional teams people are happy to contribute even if it means working on the less glamorous bits occasionally I and two of my colleagues once spent a month trying to figure out different approaches to optimizing build Scripts on another big project we had a team of three people who spent months porting changes between three different branches in order to be able to enable a much more glamorous big refactoring exercise that was needed to pay back some technical debt this work was intricate sometimes quite complicated not very War rewarding to be honest and sometimes even boring but it was essential to unblock the work of over 200 other people and it worked it was bad enough that we rotated people through this small team to share the pain but one person stayed for the whole time to see it through he was instrumental in Saving the project in my opinion on yet another project we had a complex data migration problem that we hadn't really nailed yet during this time while we were figuring it out one of our teammates oversaw the migration every time we did one once per week manually checking and sometimes correcting more difficult parts of the migration to keep us going until we nailed the automated version as I said earlier this kind of work is not really very glamorous people rarely talk about this kind of thing at conferences or write books about it but these sorts of tasks and lots of others are the hard yards of professional software development of course we want to try to automate as much of this stuff as we can but even the task of automating these things is often not really what most people think of when they imagine the exciting bits of their job I think that one of the other differences between being a professional and a hobbyist is maybe the ability to take pleasure from doing a good job of the less than glamorous stuff as well as the obviously more exciting things I wonder if this may be down to a stronger sense of Professional Pride in those people certainly from my own perspective while it's nice to work on the core bits of a system in a field that you find exciting and interesting I find a lot of pleasure in just doing a good job of solving the other stuff well too if I can find what I think of as a smart way to solve a problem it doesn't really matter too much what the problem was to be honest if I feel that I have a good solution with even with boring technology and if I feel that I have helped the team even if they don't really notice how I did it I can take a lot of pleasure from that satisfaction in a job well done whether I was writing a simple script organizing some data or designing the core of something more important of course like everyone else my preference is to work at the core of something important but if I'm honest I interpret something important as meaning something of value to other people not just something that's exciting to me thank you very much for watching and if you enjoy my stuff please consider supporting our work on this channel by joining our patreon community thank you [Music]
Info
Channel: Continuous Delivery
Views: 50,893
Rating: undefined out of 5
Keywords: hobbyist or profession, hobby or a job, am i a hobbyist or a pro, software development hobby, programming hobby, professional software development, software engineering jobs, professional software engineer, computer science, software engineering, software development, Dave Farley, continuous delivery, programming
Id: yARewF1V9rU
Channel Id: undefined
Length: 18min 15sec (1095 seconds)
Published: Wed Mar 08 2023
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.