Wanting to start programming

Discussion in 'Off Topic Area' started by JackMcCann, Jun 13, 2011.

  1. holyheadjch

    holyheadjch Valued Member

    I wasn't referring to that - I was referring to the 'paying customers as testers' approach, which is still a very popular, if appalling, development process.

    Personally, I'm a TDD fetishist. If the code isn't called in a test, it doesn't get written.
     
  2. holyheadjch

    holyheadjch Valued Member

    Agree that VB is weak, but I don't buy into the 'it's crap because it's MSFT. The .NET stack is freaking awesome and improving all the time.
    Sorry dude, Agile is a fad? You're kidding right? It's popular because it works and works brilliantly when properly implemented within an organisation. What development lifecycle works better than Agile? Seriously, I'm curious. Or is it just the tendency for Agile to be poorly implemented or just implemented in a really rigid fashion that you have a problem with.

    Amen.
    Yeah, if the kid aint scared off by that paragraph alone, he's already beaten the odds.
    I think he'd do well with Ruby/Python as a beginner language. They're both reasonably popular with big enthusiastic communities and he wouldn't need to pay a penny to get his hands on good tools.
     
  3. holyheadjch

    holyheadjch Valued Member

    There is a key problem with University projects that cause all graduates to suck:
    They never have to maintain/refactor/rape the code they wrote a year ago. If final year Comp Sci students were given back their second year coursework with a massively rejigged spec, they'd gain a far better understanding of how development really works and they'll have a firm understanding of why you need to really think about what you're doing when you initially write the code.
     
  4. Giovanni

    Giovanni Well-Known Member Supporter

    just a quick note on the 'agile is a fad' post....not to pile on too much...but...

    not a fad. in my experience delivering projects that i'm responsible for (either as a project manager or in a development role), agile is the only way. we use many agile techniques, not just one flavor. but as a way to deliver quality software, agile just cannot be beat. if you're not testing your software every step of the way (unit and acceptance test), if you're not automating your build, deployment and rollback processes, if you're not delivering small chunks of functionality to the end-user to generate iterative feedback and provide value every step of the way, you're being left behind. my firm eats up old software shops that do things the "waterfall" or "old way x".
     
  5. embra

    embra Valued Member

    I have no beef with Agile - I use it in all its miriad forms just about every working day. I have seen good and bad Agile projects. To answer your question more directly though; in some large projects, a lot of what gets talked about like refactoring and TDD does not always get done until too late i.e. a 3 week sprint doesn't lend itself well to changing checked exceptions to runtime exceptions in mass of spaghetti code that no-one understands - and no-one knows how to test - everyone knows it should be done - but it dont always work out that way. Other things like flawed ORM designs are difficult to rework in sprints.

    OO/Design Patterns was a revelation and frankly a fad i.e. not everything that came out originally worked out too wondefully at the begining, for a long time, before it became accepted as being 'how you design code'. That fad settled down a bit about 10 years ago. Agile/TDD is more akin to 'how to specify your code design with meaningfull tests', and will become common practise soon enough.




    Thats the point, if you can bite into this kind of material, then you will not be fazed.

    He is brave enough to come here and ask the questions - its worth gaining some small insight into where IT will most likely go - what I say is not gospel.

    However, the power of hardware outstrips the capability of current software to exploit it in manageable terms - this is undeniable - and real-world problems e.g. weather modelling will become more prevalent than business IT (unless there is some miraculous economic recovery) i.e business IT will probably saturate soon enough due to sluggish economic conditions.

    Internet and Mobile security are very real problems, that we have not adequately learned how to deal with in our industry - mobile is in its nappies right now.

    Python is a good starting point - as it has elements of OO and functional programming. Ruby I heard good things about, but I never worked with it.
     
  6. Slindsay

    Slindsay All violence is necessary

    I thank god that when I do develop code I do it for research rather than for commercial release.

    If the hardware doesn't involve holding components together with duct tape and rolled up tin foil and cheing gum being used to bridge connections and if the code is completed more than 12 hours before it has to be demo'd then frankly you have too much time and money on your hands.

    Edit: No wait, that is Agile development, my bad.
     
    Last edited: Jun 17, 2011
  7. embra

    embra Valued Member

    From a business perspective, Agile is very good i.e. closely aligned to business Objectives and deliverables. Its the sometimes abscence of Technical best practice that causes me to label Agile 'fad' (perhaps unfarely.). The Agile Manifesto guys (Ward Cunningham, Uncle Bob etc) and then later folk like Rod Johnson, came up with Technical best practices e.g. TDD, Refactoring, runtime exceptions etc; but they don't always come to the fore because of 'business' concerns e.g. too much early emphasis on scrums when there is nothing tangibly available to work with - e.g when inheriting spaghetti code. You can get round the spaghetti, but on day 1, its more or less impossible.

    Bottom line: 2 things never change in IT 1) Requirements are always difficult and b) Folk always underestimate the technical complexity.
     
  8. Giovanni

    Giovanni Well-Known Member Supporter

    yeah, you're right embra. it's not all great. there's no silver bullet. i think that an agile project needs a really, really strong project manager who not only understands technology but also the project that's being delivered (because that guy probably also has to write salient acceptance tests). two, there are a lot of tasks that need to be accomplished that are outside the 'providing value' tenet of agile. my firm tries to mitigate that by having an iteration 0 that's all about tasks not about functionality. like setting up a buildbot, repository, etc.
     
  9. JackMcCann

    JackMcCann Valued Member

    hey,

    thanks guys. Everything is getting a bit technical now for me but I get the picture. As you said, I just wan't some sort of grounding and taste for it. I'm not going to lie, I am a bit of an obsessive person and will so my uttermost to learn what I am capable of.

    So the debate is between ruby or python. Both have actually been reccomended to me before, which one should I choose then. You seem to know far more than me.
     
  10. embra

    embra Valued Member

    Go do both! - but not at the same time.

    Once you have some knowledge, then its helpful to see how other languages operate. Once you have something to work with e.g. Python, then you have something to experiment with.

    As soon as you can its worth learning about Unit Testing - in any language.
     
  11. JackMcCann

    JackMcCann Valued Member

    Yes I know that one you learn one language, the skills are interchangable but which one in your opinion is best to start with?

    And by the way what is unit testing? lol
     
  12. holyheadjch

    holyheadjch Valued Member

    Technical but awesome. You'll find few professions where the practitioners are so passionate about what they do and how they do it.

    Ruby is a very fashionable language now, so you might try that.

    They are actually quite similar languages, once you know one, you'll at least be able to read the other.

    If in doubt flip a coin.
     
  13. holyheadjch

    holyheadjch Valued Member

    Unit testing is when you test each piece of code on its own, without examining that piece of code's dependencies. Once you understand programming a bit better it will make sense.

    If I use a car as an example. You could test that the steering wheel turns without it being hooked up to the car's wheels. That would be like a unit test.
     
  14. JackMcCann

    JackMcCann Valued Member

    Ohh thanks now I get it. So if there's no other more convincing arguements ruby it is then. What are the sort of natural capabilities and applications ruby has by the way?
     
  15. holyheadjch

    holyheadjch Valued Member

    Ruby is best known as a web language thanks to the Rails framework.
     
  16. JackMcCann

    JackMcCann Valued Member

    Cool cool. That sounds great thanks so much everyone. Thoroughly enjoyed reading that!!
     
  17. Osu,


    Very good post Embra, thank you. :)
    Makes me wonder why anyone with a little foresight would want to learn one language... With China, India, Viet Nam and many other Asian countries turning out tens of thousand highly skilled language programmers every year, there is no future there.
    The correct positioning, IMHO is project management... the ability to understand client requirements, define the scope and boundaries of a project, and move a team of programmers towards achieving a finished product...
    These are scarce skills, in very very high demand with top rewards. :)


    Osu!
     
  18. holyheadjch

    holyheadjch Valued Member

    Programming is easy, development is hard.
     
  19. Osu,


    I believe this is debatable... :)


    Osu!
     
  20. aikiwolfie

    aikiwolfie ... Supporter

    Full Circle Magazine has a Python course which starts right at the beginning and builds up to more complex stuff. It's a free downloadable mag in PDF format and Python is also free and open source. So there's no cost really. The mag is Ubuntu focused but you can install Python in Windows if Linux isn't you bag.

    It's free and not the worst place to start learning.
     

Share This Page