tag:blogger.com,1999:blog-5060551251465839575.post5896838462989802863..comments2023-12-25T23:28:04.785+08:00Comments on Dodgy Coder: Old school developers - achieving a lot with littleDodgy_Coderhttp://www.blogger.com/profile/14418022725678218844noreply@blogger.comBlogger17125tag:blogger.com,1999:blog-5060551251465839575.post-71926012972568962682012-07-25T05:24:14.607+08:002012-07-25T05:24:14.607+08:00I, myself, do not use unit tests much, and I reall...I, myself, do not use unit tests much, and I really agree with the quote: "do you want this to be good software or do you want it to be done next week - pick one because you can't have both". I find it much easier to test pieces of code in isolation while designing them, via a more 'manual' method, and then leave that piece of the code alone. If it needs to be changed again, then I do manual testing again.<br />Integration testing, however, is as credmp wrote an entirely different matter. But even there I am often at a loss because designing reasonably comprehensive integration tests can often be completely unfeasable; what if, for instance: the underlying code is dependant on a massive amount of memory, or worse yet, it's non-deterministic?Crackyhttps://www.blogger.com/profile/11192014311958603067noreply@blogger.comtag:blogger.com,1999:blog-5060551251465839575.post-5932731423013786292012-07-23T12:14:47.871+08:002012-07-23T12:14:47.871+08:00Good observations, I've seen this lack of enth...Good observations, I've seen this lack of enthusiasm myself on teams. The other factor is the difficult and less rewarding job of software maintenance as opposed to greenfields development. Interesting that these three old school devs all came from research backgrounds but ended up contributing to what later became big commercial successes - Unix/Erlang/Netscape. They were also fundamentally driven by challenges, with a deep interest in programming and learning new things. I think Joe Armstrong mentioned that he reserves 20% of his time for solely learning about new technologies.Dodgy_Coderhttps://www.blogger.com/profile/14418022725678218844noreply@blogger.comtag:blogger.com,1999:blog-5060551251465839575.post-55372573752251104022012-07-22T21:50:58.170+08:002012-07-22T21:50:58.170+08:00As programming goes more mainstream, the quality o...As programming goes more mainstream, the quality of the average developer drops. Newer paradigms protect large code bases and teams from the unmanageable complexity developers are dealing with. It's a shame, but just look at the average programmer job now: Several years experience of Java or C# in a large team. Managed languages with strict guidelines in place to ensure that damage is minimized by bad programmers. Large projects are divided into awkward components that are bashed together until they work.<br /><br />This is terribly inefficient compared to the small, highly skilled teams we admire from the 70s and 80s, but it's necessary. There are only so many such developers to go around, the more mundane tasks need to be done by less enthusiastic employees.Anonymoushttps://www.blogger.com/profile/13829996874605560287noreply@blogger.comtag:blogger.com,1999:blog-5060551251465839575.post-10489854235904886852012-07-22T19:07:02.450+08:002012-07-22T19:07:02.450+08:00Thanks for your comments. I agree with your point ...Thanks for your comments. I agree with your point that writing simple and efficient code (in terms of both memory and CPU usage) is something that is widely undervalued. I think the perceived bloat of modern languages (C++, Java, C#) and frameworks is something that horrifies a lot of old school devs who were brought up to write code within the limits of machines of the day, e.g. less than 1MB of RAM @ 50MHz. These days that wouldn't even get you a basic screensaver. <br /><br />I found it interesting that these developers listed (Thompson, Armstrong & Zawinski) have the view that C++ is a bloated horrible language to be avoided at all costs. They all favoured C over C++. This is the polar opposite of many developers, who often hold the view that C++ is the leanest and most efficient language out there.Dodgy_Coderhttps://www.blogger.com/profile/14418022725678218844noreply@blogger.comtag:blogger.com,1999:blog-5060551251465839575.post-27302481541308544742012-07-22T18:51:46.980+08:002012-07-22T18:51:46.980+08:00Thanks for your comments. There's a lot to be ...Thanks for your comments. There's a lot to be said for using the same editor such as Emacs all the time - you can become very efficient with it, and it can also be used across all platforms; linux, mac, windows. Personally I started off using plain text editors, but after the last few years of using mainly the Visual Studio IDE, I now find it difficult when I need to go back to editors which don't have at least some level of code completion (intellisense). The thing where it helps me enormously is when using libraries - there's an immense amount of libraries/modules out there these days, especially in the frameworks for .NET and Java.Dodgy_Coderhttps://www.blogger.com/profile/14418022725678218844noreply@blogger.comtag:blogger.com,1999:blog-5060551251465839575.post-34496040114244285412012-07-22T10:45:02.041+08:002012-07-22T10:45:02.041+08:00Its taken from this 2011 video on the computer his...Its taken from this 2011 video on the computer history museum... <a href="http://www.computerhistory.org/revolution/the-art-of-programming/9/357/2278" rel="nofollow">Jamie Zawinski: The Art of Programming, It's About Style</a>Dodgy_Coderhttps://www.blogger.com/profile/14418022725678218844noreply@blogger.comtag:blogger.com,1999:blog-5060551251465839575.post-60766929052055395122012-07-22T09:46:42.735+08:002012-07-22T09:46:42.735+08:00I don't think that picture is of jwz.I don't think that picture is of jwz.Dannyhttps://www.blogger.com/profile/08564547980823273440noreply@blogger.comtag:blogger.com,1999:blog-5060551251465839575.post-67433214303904693842012-07-22T01:31:26.949+08:002012-07-22T01:31:26.949+08:00I'm an old school developer because I learned ...I'm an old school developer because I learned programming before IDEs, unit testing, OOP, Agile, etc. Computer time was expensive and memory was precious when I was learning. I formed habits such as walking through my code and desk checking because I had to wait a long time between runs of my code. I was heavily influenced early in my career by Unix and C, which emerged just as I was starting to program professionally. The practical style espoused by Ken Thompson, Dennis Ritchie, Brian Kernighan, and Rob Pike emphasized choosing suitable data structures and writing simple, efficient code. I learned vi back when my "workstation" was a VT-100 terminal and still use it every day.<br /><br />A lot of what is touted as new in software development turns out to be an old idea with a new coat of paint. Programmers can be quick to fall in love with shiny new things and fail to study the history of their craft, leading to a cycle of re-discovery and re-invention that ultimately wastes time. New tools and methodologies aren't all bad but they can distract programmers from the task of programming.Greg Jorgensenhttps://www.blogger.com/profile/02115271322374887430noreply@blogger.comtag:blogger.com,1999:blog-5060551251465839575.post-88685454439809886672012-07-21T23:02:32.516+08:002012-07-21T23:02:32.516+08:00Personally I think the need for using IDEs is due ...Personally I think the need for using IDEs is due to (a) not understanding what you are actually doing or (b) uaing something that is too complex to wrap your mind about.<br /><br />Case (a) occurs when you start writing, lets just take it as an example, Java with little to no knowledge of the language. You create something and as you go along you continually need to refactor due to changing insight in where your code is going. Instead of thinking upfront about what you are doing and what a proper design is.<br /><br />And for (b) something that comes to mind is all those frameworks with a bazillion XML files that then interact with the code in mysterious ways. Without an IDE it becomes hard to get an overview of what is going on.<br /><br />Personally I write in Java, C, C++ and Erlang and I use (GNU) Emacs to write all this code, relying on build systems like maven, make and rebar to perform the compilation of the code. I do use unit tests because they help me validate the working on the code, but only on an integration level, so that it validates the code and not every single line of code. The thing I like most about this is that my editor always works the same, no matter what language I use.<br /><br />HTH,<br /><br />ArjenAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-5060551251465839575.post-77329416339593993762012-07-21T22:22:07.130+08:002012-07-21T22:22:07.130+08:00Good point. I agree that for mere-mortals (like yo...Good point. I agree that for mere-mortals (like you and I), unit tests are very necessary, especially to be able to maintain and refactor existing code.Dodgy_Coderhttps://www.blogger.com/profile/14418022725678218844noreply@blogger.comtag:blogger.com,1999:blog-5060551251465839575.post-44810570355345797662012-07-21T22:19:29.678+08:002012-07-21T22:19:29.678+08:00I wasn't suggesting that they are deliberately...I wasn't suggesting that they are deliberately avoiding using modern tools/techniques - in fact when all of these guys were doing their most productive work, things like TDD, OO, IDEs and BDD weren't known about yet. I just wanted to make the point that these guys managed to be extremely successful in the projects without using modern techniques.Dodgy_Coderhttps://www.blogger.com/profile/14418022725678218844noreply@blogger.comtag:blogger.com,1999:blog-5060551251465839575.post-43901422669387528212012-07-21T21:55:48.143+08:002012-07-21T21:55:48.143+08:00Implicit returns, like in Erlang (Joe Armstrong...Implicit returns, like in Erlang (Joe Armstrong's language), Haskell (which he apparently uses), Lisp?<br /><br />If you introduce bugs because of your poor understand of a language, and are ignorant enough to think implicit returns are a new/bad idea, I can just imagine the boat load of bugs in your code.Tim Ruffleshttps://www.blogger.com/profile/10806500945459623939noreply@blogger.comtag:blogger.com,1999:blog-5060551251465839575.post-60704530859565372012-07-21T21:49:20.578+08:002012-07-21T21:49:20.578+08:00While they may be geniuses, that is not the REASON...While they may be geniuses, that is not the REASON they choose to avoid modern development tools, techniques.idlinghttps://www.blogger.com/profile/16980461762692340143noreply@blogger.comtag:blogger.com,1999:blog-5060551251465839575.post-79382041803857136932012-07-21T21:08:16.640+08:002012-07-21T21:08:16.640+08:00While these gurus are (possibly) good enough to de...While these gurus are (possibly) good enough to debug with print statements and go without unit tests, do they advocate the same for others? <br /><br />When you try to work with people that are not so bright (i.e. basically everybody else!) and you'll soon realise you need recipes to put some order in the creative chaos. <br /><br />So - while Unit Tests, etc. etc. are most definitely NOT necessary to write code, they ARE necessary to have a maintainable code base in the medium/long term (e.g. by mere mortals!) .Sklivvzhttps://www.blogger.com/profile/04634595770973072948noreply@blogger.comtag:blogger.com,1999:blog-5060551251465839575.post-89632445755378200622012-07-21T20:45:19.322+08:002012-07-21T20:45:19.322+08:00Interesting article, thanks - here's the click...Interesting article, thanks - here's the clickable link for others to read ... <a href="http://alistair.cockburn.us/Characterizing+people+as+non-linear%2c+first-order+components+in+software+development" rel="nofollow">"Characterizing people as non-linear, first-order components in software development"</a>Dodgy_Coderhttps://www.blogger.com/profile/14418022725678218844noreply@blogger.comtag:blogger.com,1999:blog-5060551251465839575.post-72918304783113003002012-07-21T20:15:40.113+08:002012-07-21T20:15:40.113+08:00and now people use coffeescript and have boat load...and now people use coffeescript and have boat loads of bugs introduced by shitty features like implicit returns hahahhahaTJ Holowaychukhttps://www.blogger.com/profile/03599416173386972931noreply@blogger.comtag:blogger.com,1999:blog-5060551251465839575.post-83920894845981183112012-07-21T19:11:45.404+08:002012-07-21T19:11:45.404+08:00You might be interested in this paper from Alistai...You might be interested in this paper from Alistair Cockburn:<br /><br />http://alistair.cockburn.us/Characterizing+people+as+non-linear%2c+first-order+components+in+software+development<br /><br />It describes how he discovered that tools and methodologies are pretty much incidental to the success of a project, and that project success is much more dependent on the people involved and how they work.Unknownhttps://www.blogger.com/profile/03048293453163568688noreply@blogger.com