Slashdot Mirror


Getting Back To Coding

New submitter rrconan writes I always feel like I'm getting old because of the constant need to learn a new tools to do the same job. At the end of projects, I get the impression that nothing changes — there are no real benefits to the new tools, and the only result is a lot of time wasted learning them instead of doing the work. We discussed this last week with Andrew Binstock's "Just Let Me Code" article, and now he's written a follow-up about reducing tool complexity and focusing on writing code. He says, "Tool vendors have several misperceptions that stand in the way. The first is a long-standing issue, which is 'featuritis': the tendency to create the perception of greater value in upgrades by adding rarely needed features. ... The second misperception is that many tool vendors view the user experience they offer as already pretty darn good. Compared with tools we had 10 years ago or more, UIs have indeed improved significantly. But they have not improved as fast as complexity has increased. And in that gap lies the problem.' Now I understand that what I thought of as "getting old" was really "getting smart."

43 of 240 comments (clear)

  1. Join a Free Software Project by Anonymous Coward · · Score: 5, Insightful

    Write code.

    1. Re:Join a Free Software Project by Austerity+Empowers · · Score: 5, Funny

      I tried but linux doesn't have a .vcproj or .sln. Someone told me they just use 'built in editors' but when I made a patch in wordpad, f5 didn't compile it.

    2. Re:Join a Free Software Project by Austerity+Empowers · · Score: 2

      Visual Studio/Xcode:
      I can call spirits from the vasty deep.

      Real Programmers:
      Why, so can I, or so can any man;
      But will they come when you do call for them?

    3. Re:Join a Free Software Project by Anonymous+Brave+Guy · · Score: 3, Funny

      Visual Studio/Xcode casts Summon Spirits.
      Spirit appears.
      Spirit appears.
      Spirit appears.
      Spirit attacks Real Programmers.
      Real Programmers attempt to save against arrogance... and fail.
      Real Programmers have been frozen in time.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    4. Re:Join a Free Software Project by luis_a_espinal · · Score: 2

      So basically, your poking fun at the fact that VS users can be productive on a larger scale in a shorter amount of time?

      Yeah... let me learn VIM and linux command line to make a program. That'll show those VS users a thing or two *Rolls eyes*

      I've worked with VS users, and I'll I can think to say is the following: define productive.

      Don't get me wrong, I've worked with some true geniuses in the C#/C++/C/Win32API land, but those are few and far between. Productivity is not generating/reusing lots of stuff that does magic for you, and only the right magic so long as your needs stay down that nice and tidy narrow path. Well, we can define productivity to be *that*, but then, I can chose to re-define the symbol '3' to mean 'papaya'.

      And btw, this is not just a VS pple case. The same crap happens in Java-land.

      Modern IDEs help good developers tackle large bodies of code using a bunch of disparate technology stacks. And they make mediocre developers spawn heaps of horror onto this world. Productivity had little to nothing to do with IDE (as it is primarily a function of the developer's skills and the business culture surrounding the activity of development.)

  2. Tool complexity leads to learning the tool by jfdavis668 · · Score: 5, Insightful

    I have an issue with my programmers when they know how to use the tool, but don't understand what they created. I overheard one group discussing a new system, and the one stated she didn't know where the code actually ran. No one in the group did. The Integrated Development Environment hid the details. No wonder people leave gaping security holes in systems if they don't understand how they work. I have really smart people who don't understand how the application server accesses the database. They just write code, and it works. They get used to figuring out how the tool works, not how the system works. If the tool is replaced, they are lost. If required, I'll go fix it in a text editor, because I understand what it's doing. I don't need an IDE to tell me. I know what information is flowing through the system, and how it does it. That way I can prevent inappropriate data from being exposed to outside users. IDE's are very useful to speed development, but you can't base your entire knowledge of programming on how to use a tool.

    1. Re:Tool complexity leads to learning the tool by angel'o'sphere · · Score: 2

      Sorry, that is nonsense.
      Every IDE places everything you edit ultimately into files, text files to be precise.
      The idea that something only runs in the IDE and otherwise no one knows how it works is just nonsense.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    2. Re:Tool complexity leads to learning the tool by Boronx · · Score: 4, Interesting

      He's doing them a disservice by fixing their problems. In the old days you bought a computer and there was no software for it, so you got a magazine with a program and you copied it in. You had no clue how the jumble of characters made it work, but it did ... until it didn't. If you dive in to fix the problem or to make it do something new on your own, you end up learning something about the system, about why things are the way they are.

      GP needs to stop playing daddy and let the newbs grow by fixing the problems themselves.

    3. Re:Tool complexity leads to learning the tool by angel'o'sphere · · Score: 4, Interesting

      Your wording is in the wrong order. It is not that they have not bothered to learn what us happening 'behind' the IDE. They simply don't know how a computer, a network or distributed software works.
      Either take them as programmers and let them use the IDE, or educate them about what they obviously did not learn in the university or simply don't hire them, but for god sake: stop complaining! If you hire people who don't understand how the code they produce is deployed to the production environment, then either make sure they don't need to know or ad I said above: stop complaining, change your recruiting habits!

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    4. Re:Tool complexity leads to learning the tool by angel'o'sphere · · Score: 3, Interesting

      Nope, I don't work with Microsoft Technologies.
      In 1997 a company I owned partly was so smart to use VisualSourceSafe as VCS (considering that it did not really work, I can not get why they did it).
      Instead of having files versioned in files they used like SVN the database approach. And yes they had back ups.
      When the VSS DB got corrupted, all work of two years of about five developers got lost. Well, mine was additionally in my private (back uped) RCS ...
      Due to licensing issues it took them months to get the backups back into a working VSS ...
      That was the last company I worked with MS 'tools' /languages for coding 'real' software.

      If your environment demands to use particular tools because vi and text files are not enough, then something is seriously wrong. And I doubt that absolvents from universities that only can use MS tools and can only work in MS ecospheres save so much money in the long run that it is worth it.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    5. Re:Tool complexity leads to learning the tool by netsavior · · Score: 3, Interesting

      the reality of the real world is that you don't get to pick what your customers and your vendors do, you just have to code around their bullshit.

    6. Re:Tool complexity leads to learning the tool by Oligonicella · · Score: 2

      "Nope, I don't work with Microsoft Technologies."

      Then you admit that "Every IDE places everything you edit ultimately into files, text files to be precise" should have been "Every IDE I use".

    7. Re:Tool complexity leads to learning the tool by lgw · · Score: 2

      And there are many people like you who have difficulty reading text that's not annotated, explained or highlighted by something else.

      I used to program using butterflies, but of late that doesn't seem manly enough. Now I'm programming by arranging cocoons such that weeks hence when the butterflies fly away, the desired atmospheric disturbance will result in the code on my HDD. Took years to get to where I could intuit the changing weather well enough, but now I feel like a real programmer again - let's see em make an Emacs macro for that.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    8. Re:Tool complexity leads to learning the tool by angel'o'sphere · · Score: 2

      Sorry, that is nonsense.

      All java sources in an Eclipse project are simply in one or more trees of directories.

      If you can not cope with them without Eclipse then check them out of your VCS and use what ever editor you want.
      And bottom line I really wonder when you do intensive code reviews: why dob't you utilize tools like gerrit or fisheye for it .... eeeek, another tool!

      Oh, you do generate code with Eclipse or tools used by it? Perhaps you should then drop your academic attitude of 'not putting generated code' into version control?

      Do you have a build system that can build your project from the command line? No? Why not? How do you even know that the security audits of the code you audit actually cover the code soon to be in production?

      So now you blame Eclipse ... it is just a tool! And a fool with a tool is still a fool!

      If blame an IDE for deficiencies in your software or software development process ... then there is something wrong with your approach, seriously!

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    9. Re:Tool complexity leads to learning the tool by RabidReindeer · · Score: 3, Insightful

      The idea that the IDE becomes _necessary_ to access the code is spot on. We do code security reviews as part of our work, and, for example, most Java projects cannot be reviewed anymore without the Eclipse set-up that was used to produce them. That is pure insanity!

      If I was in charge, I'd march around the whole office and generously apply boot to fundaments.

      I got burned REALLY, REALLY bad in my Visual Studio days because it was difficult-to-impossible to get a makefile out of it, depending on which release you were working with, and once the IDE had been replaced with a newer version of the IDE, some projects couldn't make 1-line emergency fixes without either massive project rework or re-installing the old version of the IDE.

      Moving to Java wasn't much better, because although the IDE in question wasn't Eclipse, projects couldn't be built without the IDE plus the same directory setup as the original developer.

      Because of the expense and lost time at critical moments, I have a very strict policy that and project under my control must be buildable using a well-supported non-gui build system that can be set up and used in under 10 minutes with no external user system dependencies or other tweaking. In other words, Ant, Maven, or an equivalent product.

    10. Re:Tool complexity leads to learning the tool by Noah+Haders · · Score: 2

      Sorry, that is nonsense. Every IDE places everything you edit ultimately into files, text files to be precise. The idea that something only runs in the IDE and otherwise no one knows how it works is just nonsense.

      you're 100% wooshing it. the point is that the air-tards at his company know how to use the IDE but don't know what it does, and that's bad. everybody agrees with you that the IDE edits files and saves them.

    11. Re:Tool complexity leads to learning the tool by angel'o'sphere · · Score: 2

      Sorry, but your claim that you can not build a Java project that originated in Eclipse, without having the same layout is not only nonsense it is bullshit.

      First of all I assume you mean directory layout _above_ package level?

      Then please explain me why a command line like: javac -sourcepath YOURSOURCE:FOLDERS:HERE -classpath JAR:FILES:AND:CLASSDIRECTORIES:HERE does not work on your system!

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    12. Re:Tool complexity leads to learning the tool by gweihir · · Score: 2

      I have to say I find Java apologist like you not only pathetic but repulsive. This "language" represents everything that is wrong with "modern" software creation. It is so badly designed, you cannot handle the sources without tools. It is so full of syntactic clutter, it is barely readable. It is so badly non-orthogonal, code re-use is a myth. Even badly written C or Perl is better. It is so slow and resource-hungry, that when you deliver some good-quality C-code that does the same, some people only believer your performance numbers after they see it in action. And it is so badly structured, that most Java "programmers" do not even understand most Java mechanisms. Java code is always incredibly bloated and incredibly hard to read and universally 10...100 times longer than it needs to be. It often solves problems that have already be solved in an universal way and does it badly.

      Really, if somebody claims to be a "Java programmer", the assumption that they are fundamentally incompetent with regard to CS concepts, cannot do anything in any other language, have zero understanding for operating systems and that their Java code is badly borked is almost a certainty.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    13. Re:Tool complexity leads to learning the tool by angel'o'sphere · · Score: 2

      Well, if I was not on an iPad I simply would copy paste your rant and exchange every NOT for a yes and every "C can", with a "C can't" etc. p.p.

      If you really believe the **** you just wrote there, you don't qualify for discussions about software development etc.

      I only agree that Java is bloated, because the need of writing 'public' in front of every class and method and 'private' in from of every attribute is indeed a waste of time, and it is ugly to read.

      The rest of your post, especially the claims about how incompetent Java Developers are, how slow Java is, how resource hungry Java is ... simply shows you have no clue yourself about Java.

      Hint: did you ever compare a 'real world' Java program in speed and resource consumption with an equivalent real world C/C++ program? Likely not. Why not? Because a Java program where 7 developers work 5 years on costs roughly 4.5million Euros. I doubt there is anyone going to invest another 10(?) million or regardless how much to craft an equivalent C program just to prove you can save a megabyte here and there and gain a few computing cycles here and there.

      Guess what, my last 'BIG IRON' Java contract involved a SUN 'mainframe' with 1 terra byte of RAM. It had about 50 Java VMs running with max memory sizes between 2 and 16GB. The self made software running on it was worth roughly 100million Euros, likely more, I joined late in the project, no idea how long it actually ran. And guess what all the VMs where doing all the time? Idling, waiting for DB requests or Network requests to finish. Do you really think C programs ... or Erlang, or just insert your language of choice: would idle less? Would need less RAM? Would be cheaper to develop? (Programming DB access in C ... that is worth than the death penalty ... oh my)

      Sorry, you can say about Java what you want. But if we had not Java, many big companies in our times would not even exist.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  3. Do you speak it? by necro81 · · Score: 5, Funny

    Sounds like we need some Programming, Motherfucker!

    Do you speak it?

  4. The problem mirrors that of big word processors by darylb · · Score: 5, Insightful

    ...Everyone says "I only need 10% of what this word processor will do." Everyone else will agree with that statement. The problem? The 10% I need is not the 10% YOU need.

    I find the article strangely short-sighted. Sure, we have to avoid overengineering solutions that are not going to be needed in the near future. But to say "you should not code features that are not immediately needed in the current sprint" will lead, in most cases, to significant rework in the future. Rework is money and time.

    A key part of the work of a smart project lead, whether that lead is an active developer or not, is to anticipate the product direction. The lead has to be able to say, "Sure, we're only going to write this subset of functionality *now*, but it is a near certainty that users will want this expansion of it in just a couple of years. We might as well have the basic framework for that in place, even it's only stubs."

    Further, our tools are complex because our needs are complex, even at the SMB level. I've been a developer for 30 years now, writing everything from experimental personal-use stuff, to local utilities, to enterprise software that is used by some of the largest manufacturers on the planet. Even small users expect unanticipated cases to work. Big customers expect that, not only do unanticipated cases work, but that migrations to new versions will be tailored to THEIR needs and will happen without notable incident. As but one small example that means that internal testing of a new release not only has to work as a brand new install, but it must also work as an upgrade, and it must work as an upgrade against the specific data and specific customizations (real software is customizable), even when you don't know what those are. If you expect success in that environment, you're going to need a LOT of tools: source code management (to identify what changed when you introduce a regression), an automated testing framework, a way to test builds and build functionality, a framework for testing upgrades against real customer data (that they let you use for this purpose), and then tools and processes that let you track code reviews, approvals, and the like. That's a lot of tools, and a lot of staff to follow it all around.

    My organization has some excellent tools, and developers assigned solely to maintain them for the rest of the development staff. It means, though, that any new developer coming in is going to have to learn a lot more than a programming language.

    1. Re:The problem mirrors that of big word processors by lgw · · Score: 2

      But to say "you should not code features that are not immediately needed in the current sprint" will lead, in most cases, to significant rework in the future. Rework is money and time.

      When at last you grok the Tao of Programming in fullness, you will no longer have this problem. Seriously, one good reason to have a senior engineer on the team is to help guide you in doing just what you need immediately without significant throw-away work, or not-used-today cruft.

      A key part of the work of a smart project lead, whether that lead is an active developer or not, is to anticipate the product direction. The lead has to be able to say, "Sure, we're only going to write this subset of functionality *now*, but it is a near certainty that users will want this expansion of it in just a couple of years. We might as well have the basic framework for that in place, even it's only stubs."

      A couple of years? Writing dead code and cruft on purpose? No, that's nuts in this day and age. Write code properly such that it's easily refactored, and don't do anything to block anticipated features, but if you can't see ways to do just the immediate work and still keep it cheap to add someday-maybe features later, what have you been doing these 30 years?

      --
      Socialism: a lie told by totalitarians and believed by fools.
    2. Re:The problem mirrors that of big word processors by Aighearach · · Score: 2

      People using vim or emacs would have automated tools that build documentation listing the function prototypes, and would spend the 2 seconds to open up said document when working on a project, and will just keep it open. Generally people using these tools make use of virtual desktops and have all of these tools open and available all the time.

      Just because you don't know about a workflow doesn't automatically mean it is in the dark ages ;) it might just mean you're in the dark ages and don't even know what the workflow options in popular use are.

      Why do options you don't use "grind [your] gears" just by existing? Don't you feel like a total sociopath admitting that? Why would a new software project need your approval just to exist, or meet your expectation of a highly specialized use case? Almost everybody using an "editor" is using vim or emacs, and none of the "editors" force users of a file created in it to use the same editor.

      Also, you said the "only" thing that "grinds [your] gears" is one thing, and then you listed a second thing, as a "second thing." If even your English isn't self-consistent, no wonder you need an editor, and no wonder everything would be totally borked if you attempted sed! lolol

  5. ultimately the misperception is by businesses by a4r6 · · Score: 2

    ...on how to best create software. It seems really, really tough to get anyone finance-minded in the *business* of making software to understand that it's worthwhile to do exploratory development of tools and techniques to be much more productive later on. There is simply not enough money being invested into making better programming tools. The fact that free, open source software is so pervasive in for-profit companies is proof of that. Everyone would rather take what they can get, squeeze as much money as they can out of it in the near term, and wait around to benefit from everyone elses investments back into the technology.

    1. Re:ultimately the misperception is by businesses by gweihir · · Score: 5, Informative

      Really, that is completely ass-backwards. We do not need better tools. We need better programmers. I recently finished a medium sized project in C, using text editor, command-line compiler, commandline-debugger and svn only, and I found absolutely nothing wanting in my tool-chain. That was dual-platform development on Linux and Solaris (with the Solaris compiler and debugger on Solaris, not the GNU tools), and still, even an unified IDE would have benefited me almost nothing.

      Now, it may be that I am stuck in the dark ages of programming, but I don't think so. My development speed and result quality is entirely appropriate and significantly better than average. However, I have observed that many "programmers" are indeed helpless without exactly the complex tool-chain they are used too and cannot even produce simple code without the only IDE they know. These people have no business producing software and, indeed, they do not understand the language they code in or the machine they code for. They "muddle through" somehow, having their hand held by the IDE. It seems these people are the norm, not the exception. It is really no surprise so much software is so bad.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  6. c/c++, vi/emacs, make, ddd by mrflash818 · · Score: 5, Informative

    c/c++, vi/emacs, make, ddd.

    Lots of good years of use, likely many more years of usefulness, too.

    --
    Uh, Linux geek since 1999.
    1. Re:c/c++, vi/emacs, make, ddd by djchristensen · · Score: 2

      It's interesting how so many people seem to just assume that newer tools are needed for more efficiency/productivity. Assuming the same code needs to be produced, the important part is the knowledge required to produce that code and have it be efficient and of high quality. The tools have absolutely nothing to do with that aspect of the job other than to provide a level of comfort to the developer. That's a highly personal thing and necessarily prohibits any usefulness of a "my tool is better than yours" argument.

      I greatly prefer emacs over a fancy GUI IDE for the largely same reason that I would prefer to do documentation in LaTeX over Word or LibreOffice. When the tool is largely invisible (which becomes true with enough experience), I can completely focus on the *content* that I am creating. That doesn't mean that I think my way is the best way for everyone, just the best way for me. It's where my experience has taken me. Not that I haven't tried newer tools or been forced to use them from time to time, but there's a high bar for them to get over to truly improve my productivity.

      My only real problem with GUI IDEs is when using them precludes not using them. While I've managed to mostly avoid the MS world throughout my career, where it has impacted me has generally been painful. The tools there tend to assume that everyone uses the same environment and make little or no accommodation for other environments. Yes, I know this is not universally true, but true enough that I will continue to avoid that world as much as possible. I can use emacs, make, and gdb on Windows, OSX, Linux, and more. Can the same be said about Visual Studio? (Running Windows in a VM is NOT a valid argument.) The rise of Linux as a common base OS in the embedded space is making this easier every day, thankfully. I'm not really trying to bash MS here, it's just a particularly easy example.

  7. I'm bitching about SQL Server Management Studio by SethJohnson · · Score: 4, Insightful

    Compared with tools we had 10 years ago or more, UIs have indeed improved significantly.

    No criticism of the OP here, but this got me thinking about one of my mortal enemies. The UI within SQL Server Management Studio. For the last decade of upgrades, I've really wondered how that development team leaves the office everyday thinking they are doing a good day's work. There are so many blatantly apparent rough edges to the UI for SSMS, I can't believe they think it's as good as they can make it.

    In order to avoid tldr, I'll just give a single example. Look at the tabbing for each database connection window. The tabs are labelled "servername.database" but are limited to a small number of characters regardless of how many tabs are open. Here's an example where there are only two open tabs:

    http://img.informer.com/screen...

    The first reason the labelling is fundamentally broken is that the database name is chopped off in an unnecessary abbreviation. The tab could stretch out to display the whole thing! It's not scrunched in with a bunch of other tabs. There's plenty of room there.

    The second reason this is broken is that the database name is the thing you actually need to see more than the server name. In the majority of use case scenarios, the user is connected to multiple databases on the same server. When switching tabs, you need to be able to locate the one for the database you're looking for within your current connections. Sure, there's that pulldown menu on the left, but that's a much further mouse drag than the tabs are from your focal point.

    So, if you're ever looking for an example of a developer interface that doesn't get a proper update, look no further than SQL Server Management Studio. It's hardly changed in over a decade of releases.

  8. Here is how to get in to coding: by netsavior · · Score: 4, Insightful

    This advice is what I give people who ask me "how can I learn to program computers like you?"

    Build something. Find a problem and solve it. It doesn't matter what the problem is or how you solve it.
    Write a tic tac toe engine, or a photo slideshow generator, or a fart joke generator, or whatever you want to do. But you just have to do it.

    1. Re:Here is how to get in to coding: by ledow · · Score: 4, Insightful

      Precisely.

      I work in independent (private) schools. We have a few "star" pupils who want to be coders. They generally don't become them, not because they're not skilled, or couldn't do it, but because they've never sat down and done it outside of lessons that they waltz through. Following a course by-rote isn't learning.

      I also get asked an awful lot (by the younger years) how I type so fast and how they can "learn" to type that fast. Type. For years. Bang, you've learned. This is no shortcut, there is little technique, no amount of learning the home keys will help you type fast. You just have to type, lots, all the time.

      Same for coding. You can learn some theory. But to learn to code, you have to code. And with kids it's really easy - pick a game, program it. They know every kind of game, they will rarely fully complete anything approaching a full game before they get bored, disillusioned or just plain hit the limit of their skill level. The way past that point is determination and learning what to do. And that comes by just demanding that you code and discipline yourself.

      The true "stars" are the ones that persevere through those problems, solve them and come out the other end with ANYTHING approaching a complete program that isn't entirely trivial. Next time they have a coding problem, they know they just have to work at it to get past it.

    2. Re:Here is how to get in to coding: by vix86 · · Score: 4, Interesting

      I also get asked an awful lot (by the younger years) how I type so fast and how they can "learn" to type that fast. Type. For years. Bang, you've learned. This is no shortcut, there is little technique, no amount of learning the home keys will help you type fast. You just have to type, lots, all the time.

      While this very true; it helps to also give them a place that requires speed to push them to type fast. I've always told people that asked "how do you type so fast?" that I learned to type really quickly by growing up in IRC chat rooms with lots of people and multiple conversations going on at once. You had to learn to type fast to keep up with what was going on.

      Same for coding. You can learn some theory. But to learn to code, you have to code. And with kids it's really easy - pick a game, program it.

      The only problem I've ever had with using "games" as a way to learn to code is that the final product may not match expectations. To put it another way. I love programming because it gives me a means to solve problems. Sometimes the problems are concrete as "I need a piece of software on my desktop to tell me when I'm getting a phone call on my phone." That problem is focused, the solution is focused too. If your phone rings and you get a notification on your computer, you know you solved the problem.

      Games rarely offer up focused problems and solutions, especially for beginning programmers. A lot of game ideas are nothing more than "I want to make an RPG where I fight zombies." The solution would deceptively be to have a few characters in a bland world and some monsters labeled zombies, but game dev is never that simple and the problem space "grows." It goes from "rpg zombie game" to "rpg zombie hunting game where I must build a cure, save cities, and all while I'm working within this cool battle system." Games could be a great route to code but the path between problem definition and solution is huge compared to more simple stuff.

    3. Re:Here is how to get in to coding: by Gestahl · · Score: 2
      An important concept in software development is don't duplicate effort. After someone has taught themselves a programming language from a book or sat through a uni course, better to convince people to find an existing project on Github or whatever, fix open bugs or start working on a feature addition that the devs have put on their wish list.

      He said learning how to code, not how to develop software. Important distinction. Learning a programming language is like learning how to read. Learning programming itself is like learning basic English composition skills (i.e. write a 5 paragraph essay). It's easy to study, easy to evaluate, and easy to review, and you can focus on the details of syntax, semantics, grammar, and style. The logical analysis, presentation, and cites are important (the start of engineering and reuse, etc), but not the focus. Learning software development/engineering is like learning how to publish a properly annotated, logically argued and presented, and cross-referenced scholarly paper suitable for a journal. It (should be) a foregone conclusion that your syntax, etc. is proper. Now the focus is on consistency, coherency, structure, reuse of existing material, and aesthetics.

    4. Re:Here is how to get in to coding: by Aighearach · · Score: 2

      You completely botched the concept. Doing something to learn is not duplicating effort because if it was done before, it was a different person learning. Somebody else's effort can't be transferred in some sort of Vulcan Mind Meld. Each person does their own learning, and learning projects are not going to be useful end projects anyways.

      And no, most projects on github are NOT in need of "patches." There is a glut of people who want to be contributors. There is not a shortage. There is perhaps a shortage of quality contributions, but having people still in the initial learning stages submit pull requests is not useful to anybody, it is just pollution. You don't even do what you recommend, it is obvious from your language; nobody accepts patches, or reviews them, on github projects. You submit pull requests.

      Learn first. Repeat what others have done in the past. Implement a bunch of known wheels in the various known ways. Keep doing. Keep doing. This is how you learn. Then when you finally have a pull request to send, it is for a feature that was actually needed, and not "me too" vanity code.

  9. "Featuritis" in the whole computing ecosystem by gestalt_n_pepper · · Score: 5, Insightful

    New languages. New frameworks. New IDEs. New magic procedures...

    Some of it is good, surely. Who programs without classes these days? But every time I see someone come up with a magic new net language, framework, etc., I sort of cringe. I mean, do we really need another one? Do we need all the ones we have (I'm lookin' at you, Ruby...).

    The elephant in the room here that Microsoft, et. al. seems happy to ignore is that it takes time to learn AND recode this stuff. Time is money. If you're a teen or a student, you have time to mess with the next Ruby, or Dart, or GO, or BrainFuck or...

    As a kid, you have no money invested, and plenty of time. There's no risk.

    Fast forward 25 years. You still code for a living. You have a house, a wife, kid(s), car(s). You and your spouse are paying for all of this. Suddenly, genius boy at Microsoft invents Powershell! and convinces a few PHBs to roll it out. Suddenly, all your clients want Powershell! Quite frankly, you haven't got the time or interest in learning Powershell!. You wanted .net features added to VBScript and/or Jscript. You wanted backwards compatibility with existing VBscript and Jscript code. You wanted something that added value, not something that subtracted value by forcing you to go back to the drawing board and recode perfectly functional tools to satisfy a corporate IT security requirement from the corporate PHB that says, "Use Powershell!" for which you may, or not be paid, depending on how well your contract was written.

    Disclaimer: I like Powershell, but it was the wrong decision.

    The problem, quite simply, is this: Change!=Improvement. Change!=Better. Sometimes you get lucky. At other times, not so much.

    --
    Please do not read this sig. Thank you.
    1. Re:"Featuritis" in the whole computing ecosystem by Beck_Neard · · Score: 4, Insightful

      Rapidly introducing new tools and deprecating old ones unnecessarily is part of Microsoft's business strategy.

      --
      A fool and his hard drive are soon parted.
  10. Assembler only - One Coder - No backdoors. by MindPrison · · Score: 2

    Yep, I live in the stone ages, but at least I know every corner of my systems.

    --
    What this world is coming to - is for you and me to decide.
    1. Re:Assembler only - One Coder - No backdoors. by MindPrison · · Score: 2

      How the fuck do you manage to find a job writing low level code? I thought that shit died out in the 80s!

      I didn't.

      And no, that shit is far from dead. You'll find lots of assembly in specialized proprietary hardware where it's easier to just implement your own code instead of using an entire suite of libraries and ready made IDE packages.

      What I like about coding assembly, is that it's relatively straight forward, ok...the math really isn't as we don't have the luxury of floating points in every variable, various math function - and we need to keep track of our code jumps as the MCUs have certain limitations when it comes to branching here and there.

      I usually use older MCUs too as I don't have to deal with numerous layers of special codes to access special features of the chip. I keep things on a simple I/O level - and add "shit" as I please. No need to have an AD/DA converter with every thing I come up with, so I just add the hardware layers I need and what whenever I need them. I've been thinking of moving to FPGAs...now THERE's something that would eat my time. Assembly is the simple shit. (But very gratifying and fun to do, even for beginners).

      --
      What this world is coming to - is for you and me to decide.
  11. Re:Less coding, more assembling pieces by timeOday · · Score: 2
    No the trend actually is the same in application development - away from clean sheets, and towards lashing together complex components that can made to sort of work together, supported by complex development tools.

    It sucks, but I'm intentionally throwing more of my time now into learning the latest languages and development environments. Are they better? Not really. But you will never, ever convince anybody that fuddy-duddy is actually cool. They'll just think you're irrelevant. Every career has some drawbacks, and spending your life chasing fads, coupled with others' disdain for everything you did or learned over a decade ago, is a drawback of this one. (Heck, why didn't you start a successful startup or at least move into management by now, anyways?)

  12. Maybe by Anonymous+Brave+Guy · · Score: 3, Interesting

    It seems really, really tough to get anyone finance-minded in the *business* of making software to understand that it's worthwhile to do exploratory development of tools and techniques to be much more productive later on.

    Perhaps, but any such exploration and the resulting tools have to beat the baseline of a decent text editor, a decent version control system, a decent scripting language, and starting to write code within a minute of deciding the project is ready to begin.

    For a long-running project with many developers and other contributors performing repetitive or error-prone tasks, maybe it will be worth investigating, selecting and adopting some external tools to automate some of that work, at some stage in the project when you know where the pain points are. But if your development team aren't newbies, they will be perfectly capable of building their code manually at first, they will surely already know their universal Big Three tools very well, and importantly, they will just code up any basic automation on the fly as the project grows and the needs become apparent.

    IME, that turns out to be a surprisingly tough standard to beat. I've seen many, many projects get bogged down in their own infrastructure because they felt they should use some type of tool and forced themselves to do it, not because they necessarily needed that tool or found it useful in practice. Of course good tools can be useful, and of course sometimes it is better to bring in help from outside the project rather than being too NIH about everything, but it's important to stay focussed on the goal and not to forget that tools are only means to an end.

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  13. Welcome to the Next Level. by VortexCortex · · Score: 5, Interesting

    I reached that point in the 90's.

    Now I write all my code in a meta language that compiles down into COBOL, C, C++, C#, Erlang, FORTH, Fortran, Google's Go, Haskel, Java, Javascript, Perl, PHP, Python, Ruby, Rust, and more.

    It takes about two weeks for me to learn a new language and write the "runtime" for my meta compiler. Then I can deploy all of my existing solutions on the new platform faster than the other guys can get "Hello DB Connection" out the door.

    Fuck all the shitty languages and "new" platforms. Now that you've actually grown up and stopped being a fucking fanboy, go write your own meta compiler. I'll open source mine when I retire, it's what gives me the edge over all the noobs still wasting time reimplementing their wheels.

    1. Re:Welcome to the Next Level. by JesseMcDonald · · Score: 5, Insightful

      That sounds like a great idea. Since you're coding for the least common denominator, you obviously get none of the benefits of the target language, while still suffering from all of its issues, plus whatever additional issues are introduced by your under-spec'd and idiosyncratic "meta language" and "meta compiler".

      To top it off, no one else will ever be able to maintain or build on what you write, so you're stuck with that job forever, unable to move on to something better—or at least until TPTB wake up and realize that it's far more trouble than it's worth and throw it out in favor of something which is properly idiomatic and standardized and which doesn't make them wholly dependent on you and your "meta compiler".

      No thanks.

      --
      "The state is that great fiction by which everyone tries to live at the expense of everyone else." - Bastiat
  14. for( mostly=0; mostly < lengthOfVec; mostly++) by DavidHumus · · Score: 2

    How much time do you waste with boilerplate crap like this because of nearly clumsy array-handling ideas that date back to the Great Flood?
    How bloated is code because of the vacuousness of most common languages that
    require
    several lines
    to do
    the simplest
    things?

  15. Tools just get worse. by LostMyBeaver · · Score: 3, Funny

    15 years I coded with Qt professionally and came to love and adore it's quality and simplicity. I even wrote and operating system which was a microkernel and everything else was based on Qt Core.

    I wanted to make a simple project the other day and Qt failed me. It seems that code goes in without unit tests these days and shipments are made without any quality control.

    I used Qt because I'm not the typical loser Linux developer who wants to spend 50% of their time just fixing their tools or reporting bugs to package maintainers.