Loading ...
Sorry, an error occurred while loading the content.

Trying to learn the concepts

Expand Messages
  • wayne62682
    Hello, everyone! I ve just recently joined the mailing list but I ve made attempts to follow the whole ALT.NET movement for a couple of years now, although I
    Message 1 of 54 , Jan 7, 2011
    View Source
    • 0 Attachment
      Hello, everyone!

      I've just recently joined the mailing list but I've made attempts to follow the whole "ALT.NET" movement for a couple of years now, although I still consider myself a relative junior developer as the majority of jobs I've held have all been as the single IT person so I was never really a "programmer" and could never focus on any one thing.

      I wanted to post a question to you. As I said I've been trying my hardest for a few years now to learn the ALT.NET concepts. I've bought books, devoured blogs, watched screencasts and subscribed to tech sites, but there is one constant factor that keeps preventing me from doing anything meaningful: No matter the job I get, the rest of the developers are always what you guys would consider "Morts". Since I started working almost every single development job I've gotten has always been the same story:

      * ORM? We use DataSets (or we wrote our own ORM because something like NHibernate was "too hard")
      * MVC? Nah, WebForms all the way baby! And none of that fancy-pants MVP stuff, neither. But at least we don't drag-and-drop...
      * SOLID? SoC? You mean I shouldn't write all my code in code-behind including data access?
      * IoC? DI? What's that?
      * Testing? Oh yeah, the debugger. We do that.
      * Source Control? Why, Visual SourceSafe of course (or maybe TFS if I was lucky)

      You get the idea, I'm sure. My latest job is no exception - no ORM (they use DataSets for everything, and the Microsoft Enterprise Library), no testing (and I'm not even talking about TDD here, I mean unit tests in general), no application of the SOLID principles or any kind of "craftsmanship" whatsoever, just code the old .NET 1.1 way before anyone had the notion there was an "alternative" way. This is a medium-sized company that sells a web-based software application and has been in business for several years; software is the core business of the company, not a support function. This isn't an isolated incident, either; like I said I've worked at many companies just like this in the five or so years that I've been trying to make that transition from a junior developer to an intermediate/senior one. Most of the time, I get disillusioned with the fact everything is thrown together and I leave several months in but I'm getting to the point where I can no longer do that. And trying to "educate" them that they're "doing it wrong" so to speak would just result in my getting fired for not being a team player or stirring the pot or whatever.

      So how in the hell am I supposed to improve myself and learn this ALT.NET stuff when nobody else I work with seems to care about it? These are all established companies with established products, with experienced developers and management that have many solid years of software under their belt - much more than I have, and they see no point in any of this stuff... if they even know it exists; half the time I talk to the lead/manager/other guys on the team and they don't even know what an ORM is, or why you would use DI (let alone an IoC container) when you can just instantiate things directly. It's almost like I'm talking to non-technical people about these things, except these guys ARE software developers!

      I have no choice but to do things "their way" in order to keep my job; remember whenever I encounter these scenarios it's always as the "new guy" on the team and I don't want to go pointing out "You should be using NHibernate, and Ninject, and use TDD and..." to my boss and teammates or I'll quickly be shown the door and replaced with someone who is happy to be using DataSets and code-behind and WebForms.

      I really want to start applying some of the theory I've learned from the blogs/videos/books, but it seems like I'm alone in thinking it's a better way. In my own code I try to do what little I can to make it high-quality; usually that's just applying SOLID and maybe DI if it won't take too long and cause incompatibilities with the rest of the code, but I can't really go and introduce, say, an IoC container (let alone a mature ORM), because it'll throw off the rest of the app and I'll get in trouble for that.

      Any pointers?
    • Wayne Molina
      It was not even a review; we dont have those. Just the senior dev, who is being groomed for manager, asked me to stick with the current way (i.e. Codebehind
      Message 54 of 54 , Feb 24, 2011
      View Source
      • 0 Attachment

        It was not even a review; we dont have those.  Just the senior dev, who is being groomed for manager, asked me to stick with the current way (i.e. Codebehind and returning raw datasets and copy-pasting code) to not have multiple architectures since they wont adopt the other practices or even any organized architecture due to no buy in from management.

        On Feb 24, 2011 2:11 PM, "Michael Brown" <mike.brown@...> wrote:
        > Problem is he tried the just do it route and his code got rejected in review
        > because it was "too complicated". I would have started playing Alanis
        > Morrissette upon hearing that statement. Calling simpler code complicated
        > really is ironic.
        >
        >
        >
        > From: altdotnet@yahoogroups.com [mailto:altdotnet@yahoogroups.com] On Behalf
        > Of gregtechnical
        > Sent: Wednesday, February 23, 2011 9:23 PM
        > To: altdotnet@yahoogroups.com
        > Subject: [altdotnet] Re: Trying to learn the concepts
        >
        >
        >
        >
        >
        > I have been in your spot many times. Be careful is my first advice.
        > Business/Management wants a product they can sell and make money off of.
        > They are not interested in the latest and greatest way of doing IT "stuff".
        >
        > Go for some small wins first. If the code base is already there pick a new
        > project or module to show them how good it really can be; but be preparefd
        > for push back. Again, at the end of the day you need to "get stuff done" in
        > their eyes so they can sell it.
        >
        > Another approach is "just do it" and then show them where the value is
        > added. Again, think samll wins at first. Even going to SVM is a huge change
        > in a small shop...getting away for datsets and going to Busisness Objects is
        > a hige undertaking...why, Datasets ahev it all already built in..tough sell
        > to a Business person.
        >
        > Set up CrusiesControl on a desktop or free server...start automated builds,
        > add some NUNit tests, do a little NCover...small stuff first.
        >
        > Plan to do this in your own time to, not on their time. One of my best devs
        > came to me and told me he wanted us to switich to SVN. I had a budget and
        > timeline, neither included SVN. I told him if he could do it on his own time
        > and make it seamless and train us, do it. He did. I have loved it ever
        > since.
        > The same developers wanted to use Busines Objects/DTOs. Our entire frameowrk
        > was based on datasets. I told he could do it on his next feature. he did, I
        > got it, loved it, and now, where and when possible we use Business Objects
        > and DTOs.
        >
        > Again, think small wins, don't be pushy and be prepared to do this on your
        > time, not the companies.
        >
        > --- In altdotnet@yahoogroups.com <mailto:altdotnet%40yahoogroups.com> , Alex
        > McMahon <fluxmunki@...> wrote:
        >>
        >> I think you either have to have management/senior buy in for this sort of
        >> change and/or the agreement of the other devs. If you can get the
        > management
        >> buy-in then your way can be the approved way and everyone else will have
        > to
        >> learn to migrate towards better coding etc. This was sort of the situation
        > I
        >> was in at my current place, and things are improving, the devs who didn't
        >> like the newer ways of working have tended to move off onto other projects
        >> etc... without management buy-in I'm not sure whether this would have
        >> worked.
        >>
        >> If you have the entire team buy-in then I'm sure you can push the changes
        >> through management as they should be using the devs as a source of
        > technical
        >> knowledge.
        >>
        >> Working on a shared code-base when you're working differently from
        > everyone
        >> else is going to be tricky. Perhaps you could try and sell the ideas to
        >> someone, maybe they'll let you take on a self contained future product by
        >> yourself (or with anyone you can get to sign up) so you can demonstrate
        > the
        >> benefits and remove some of the fear factor these sorts of changes can
        >> bring.
        >>
        >>
        >> On 22 February 2011 13:52, Wayne Molina <wayne.molina@...> wrote:
        >>
        >> >
        >> >
        >> > So an update: On my own tasks I have to tried to write the code in the
        >> > "right" way, using domain objects and repositories to return objects
        > instead
        >> > of raw datasets. I applied some basic design patterns and made the code
        >> > self documenting.
        >> >
        >> > The senior developer told me not to do this anymore because it might
        >> > confuse the other devs since the architecture is so different than the
        >> > current use code-behind for everything.
        >> >
        >> > Im not sure how to approach this. I cannot force myself to write code
        >> > their way but I cannot push them to change it even slightly as
        > refactoring
        >> > is seen as a waste of time that adds no business value. They dont have
        > to
        >> > use full DDD stuff but the current style has no architecture at all; I
        > have
        >> > seen code behind files over 1k lines with duplicate methods and classes
        > that
        >> > do a dozen things.
        >> > On Jan 17, 2011 10:16 AM, <mark.pawelek@...> wrote:
        >> > > 1. In the UK and wherever else it lives, the ACCU have "Mentored
        >> > > Developers Projects". Join the ACCU and get involved.
        >> > > 2. Try to attend low cost Agile conferences and developer evenings;
        > there
        >> >
        >> > > are even some free cons [CITCON]. Meet people, network.
        >> > > 3. Seek out a better job; working with people who care. Apply for jobs
        >> > > which are upfront in specifying the importance of craftmanship,
        > quality
        >> > > improvement, Agile and XP.
        >> > >
        >> > >
        >> > > Mark Pawelek
        >> > > Web developer
        >> > >
        >> > >
        >> > >
        >> > >
        >> > > From: "wayne62682" <wayne.molina@...>
        >> > > To: altdotnet@yahoogroups.com <mailto:altdotnet%40yahoogroups.com>
        >> > > Date: 07/01/2011 12:37
        >> > > Subject: [altdotnet] Trying to learn the concepts
        >> > > Sent by: altdotnet@yahoogroups.com
        > <mailto:altdotnet%40yahoogroups.com>
        >> > >
        >> > >
        >> > >
        >> > >
        >> > > Hello, everyone!
        >> > >
        >> > > I've just recently joined the mailing list but I've made attempts to
        >> > > follow the whole "ALT.NET" movement for a couple of years now,
        > although
        >> > I
        >> > > still consider myself a relative junior developer as the majority of
        > jobs
        >> >
        >> > > I've held have all been as the single IT person so I was never really
        > a
        >> > > "programmer" and could never focus on any one thing.
        >> > >
        >> > > I wanted to post a question to you. As I said I've been trying my
        > hardest
        >> >
        >> > > for a few years now to learn the ALT.NET concepts. I've bought books,
        >> > > devoured blogs, watched screencasts and subscribed to tech sites, but
        >> > > there is one constant factor that keeps preventing me from doing
        > anything
        >> >
        >> > > meaningful: No matter the job I get, the rest of the developers are
        >> > always
        >> > > what you guys would consider "Morts". Since I started working almost
        >> > every
        >> > > single development job I've gotten has always been the same story:
        >> > >
        >> > > * ORM? We use DataSets (or we wrote our own ORM because something like
        >> > > NHibernate was "too hard")
        >> > > * MVC? Nah, WebForms all the way baby! And none of that fancy-pants
        > MVP
        >> > > stuff, neither. But at least we don't drag-and-drop...
        >> > > * SOLID? SoC? You mean I shouldn't write all my code in code-behind
        >> > > including data access?
        >> > > * IoC? DI? What's that?
        >> > > * Testing? Oh yeah, the debugger. We do that.
        >> > > * Source Control? Why, Visual SourceSafe of course (or maybe TFS if I
        > was
        >> >
        >> > > lucky)
        >> > >
        >> > > You get the idea, I'm sure. My latest job is no exception - no ORM
        > (they
        >> > > use DataSets for everything, and the Microsoft Enterprise Library), no
        >> > > testing (and I'm not even talking about TDD here, I mean unit tests in
        >> > > general), no application of the SOLID principles or any kind of
        >> > > "craftsmanship" whatsoever, just code the old .NET 1.1 way before
        > anyone
        >> > > had the notion there was an "alternative" way. This is a medium-sized
        >> > > company that sells a web-based software application and has been in
        >> > > business for several years; software is the core business of the
        > company,
        >> >
        >> > > not a support function. This isn't an isolated incident, either; like
        > I
        >> > > said I've worked at many companies just like this in the five or so
        > years
        >> >
        >> > > that I've been trying to make that transition from a junior developer
        > to
        >> > > an intermediate/senior one. Most of the time, I get disillusioned with
        >> > the
        >> > > fact everything is thrown together and I leave several months in but
        > I'm
        >> > > getting to the point where I can no longer do that. And trying to
        >> > > "educate" them that they're "doing it wrong" so to speak would just
        >> > result
        >> > > in my getting fired for not being a team player or stirring the pot or
        >> > > whatever.
        >> > >
        >> > > So how in the hell am I supposed to improve myself and learn this
        >> > ALT.NET
        >> > > stuff when nobody else I work with seems to care about it? These are
        > all
        >> > > established companies with established products, with experienced
        >> > > developers and management that have many solid years of software under
        >> > > their belt - much more than I have, and they see no point in any of
        > this
        >> > > stuff... if they even know it exists; half the time I talk to the
        >> > > lead/manager/other guys on the team and they don't even know what an
        > ORM
        >> > > is, or why you would use DI (let alone an IoC container) when you can
        >> > just
        >> > > instantiate things directly. It's almost like I'm talking to
        >> > non-technical
        >> > > people about these things, except these guys ARE software developers!
        >> > >
        >> > > I have no choice but to do things "their way" in order to keep my job;
        >> > > remember whenever I encounter these scenarios it's always as the "new
        >> > guy"
        >> > > on the team and I don't want to go pointing out "You should be using
        >> > > NHibernate, and Ninject, and use TDD and..." to my boss and teammates
        > or
        >> > > I'll quickly be shown the door and replaced with someone who is happy
        > to
        >> > > be using DataSets and code-behind and WebForms.
        >> > >
        >> > > I really want to start applying some of the theory I've learned from
        > the
        >> > > blogs/videos/books, but it seems like I'm alone in thinking it's a
        > better
        >> >
        >> > > way. In my own code I try to do what little I can to make it
        >> > high-quality;
        >> > > usually that's just applying SOLID and maybe DI if it won't take too
        > long
        >> >
        >> > > and cause incompatibilities with the rest of the code, but I can't
        > really
        >> >
        >> > > go and introduce, say, an IoC container (let alone a mature ORM),
        > because
        >> >
        >> > > it'll throw off the rest of the app and I'll get in trouble for that.
        >> > >
        >> > > Any pointers?
        >> > >
        >> > >
        >> > >
        >> >
        >> >
        >> >
        >>
        >
        >
        >
      Your message has been successfully submitted and would be delivered to recipients shortly.