1. What's in a name? Programmer or Developer

    I was part of a conversation the other day that really struck a nerve with me and has resonated in my mind since.  We were discussing Programmer versus Developer and what we were.  This lead to a more generalized conversation about programmers/developers.For now, I am going to use Programmer/Developer as interchangeable names/titles.  Both of these can be part of a large corporation, small company or self-employed.  Both of these titles are universally used and interchanged in job titles, want ads, resumes and regular day to day conversation.  Most probably don't care what they are called or what their title is as long as they are getting paid what they want. We can look at the dictionary definitions for these as well: From Wikipedia:
    A programmer writes computer software.  A developer may take part in design, computer programming...
    Now, my opinion....
    In the end, both Programmers and Developers write code and in that sense are very much the same.  The difference that I see and will argue about is everything else.  A Programmer is given the task of writing the code.  This might entail writing tests as well.  I picture the Programmer as a person in a large organization that is an assembly line worker ant.  They are given a task and expected to complete it.  The Programmer may never meet the client and may never see the final product.  The Programmer s one spoke in the wheel of the entire project.  The Programmer is never asked what they think or for suggestions, they just write code.  Good Programmers strive to learn more and to be Developers.  If I worked for a large company, I would just be a Programmer and there is absolutely nothing wrong with that at all.  I do not look down on or think that I am better than a Programmer.  Programmers are not Developers.
    Developers on the other hand are also Programmers.  Large companies have Developers and they are responsible for the Programmers.  Small companies and self-employed, are mostly Developers.  A self-employed person cannot just program.  They interact with clients, they are part of the design process, they develope and they program.  The developer may be every spoke of the wheel or they may work closely with other developers.  Developers can take a clients idea and make it a reality.  Developers must be flexible and know when to offer the client advice and when not to.  Sometimes the client may not know what they really want and it is the Developers job to tell them. And in the end, the Developer sits down, puts on their Programmers hat and writes code.
    There is a place and a need for both Programmers and Developers.  Right now I am still learning and I would say that I am a Programmer.
    But before long I will become a Developer.  Rebel Outpost, LLC.


  2. Rails underestimated...

    I have been a self employed contracted Ruby on Rails developer for a couple of weeks now.  I cannot thank @rebelhold and @m3talsmith enough for this opportunity.  Leaving the big bad corporate world is scary as Hell, but it is a lot easier when you have others to help you. Hiring myself as my boss was quite a change in life for me.  I have NEVER been without a JOB.  This is the first time that I have ever been 'self-employed'.  I have to say that at least now I am fully responsible for my success or failure.  I am also only limited to what I "want" to do.  If I want a "raise" then I will have to work more.  For the first time, I control my own destiny! So enough of that....  I thought that I was ready to enter the world of Rails development and I had studied and practiced Rails as well as working on tutorials and creating my own app.  Wow, I really underestimated Rails entirely.  Oh Rails is Rails but I never expected to need to use so much Ruby and Javascript.  I had a pretty well know Rails dev tell me that he wasn't very good at Ruby.  That was a crock of shit!!  I thought that Rails was mostly html.  Man was I wrong. In order to be a good Rails dev, you need to know Ruby and I mean really know Ruby.  If you think that you can get by with just "basic" Ruby knowledge, then you are ok if you want to create "basic" Rails apps.  If you don't mind having a "basic" Rails app, well then never mind learning Javascript or jQuery.  If you just want to be a "programmer" and not a "developer" then you do not need to learn Ruby and JS. Two weeks on the project that I am on and I would say that about 50% of what I have been using is Javascript and about 24% .sass.  That leaves only 25% and most of that has been Ruby.  And I thought that I knew enough Rails. Again, I have to thank @m3talsmith, @fzf and @rebelhold for teaching me and helping me learn while coding.  It is RebelHold's philosophy to help others to learn Ruby on Rails and do to so without charging to teach.  If you have read any of my other posts you will know that I am pretty anti paying to learn RoR or charging for doing so.  I think that open source is or should be a community that works and learns together.  If you have read any of my posts you know that I am so impressed with the Rails community and the fact that most Rubyists or Rails devs are always willing to assist others.  The @rubyaz group in the Phoenix area is a very strong and tight community with monthly meetings offering ANYBODY to present on Ruby related topics.  If you live in the valley you definitely need to check them out. Rails underestimated..... Yes I really did underestimate Rails and I see that I have soooo much more to learn.  That being said, every day I learn a little more and every day I am one more day out of the corporate world. BR


  3. Jobless in Arizona

    Well, on Monday I gave my 2 weeks notice at my job.  Today was my last day.  I no longer work for a company.  I guess at this point I am my own boss, self-employed, or just jobless.

    I am now working as a Ruby on Rails Developer.  A computer programmer or a web developer; whatever title is best.

    It has been a long trip so far, going from learning Python for geoprocessing, to wxPython, to Ruby on Rails.  There are quite a few people that have helped me along the way.  I remember my first time at the Ruby::AZ meetup.  I had no clue what the Hell they were talking about.  I just gave a presentation this week at Ruby::AZ for Rails BDD and Capybara.  What a transition it has been.

    I am now a contractor for ReblHold and working on my first project there.  Hopefully before too long I can become a partner there.  What is RebelHold?  From their Facebook page:

    "RebelHold is a workers collective, completely worker owned and run.  RebelHold was created to equalize the playing field for workers, providing full health care (with no copays), paid training, equal salaries, and to meet the physical and social needs of communities all around us. We believe that putting the means of production in the hands of the workers is a first step, and that training new people to be able to work in whatever capacity they can is valuable. Every worker is an owner, all decisions are made by consensus, and every worker has the combined responsibility of training others. We are highly motivated to taking care of the needs of others through this process; and open to other processes to help.  To create a mass of workers on equal grounds with each other who are taken care of completely; to pour ourselves in to improving the communities around us through training, through direct action, and through charity as needed; to communicate well with others; and to make high quality software that we can be proud of."

    All of the places out there that charge to teach Ruby on Rails, and these guys are helping me learn for free!!  With their help I was able to take the big leap to being a contract programmer and saying goodbye to corporate America.

    From here on out it is the developers life for me!


  4. Why I love Ruby on Rails

    OK, so I have been working with Rails for a few months now.  I have a long ways to go yet but I am getting a pretty good grip on things.  As of yet I do NOT have a live app out there to share but I am working on an app of my own and collaborating on a couple of other apps.  I have a lot better understanding than I have knowledge but I am working on that.

    Why do I love Rails?  First off, the Ruby on Rails community in Phoenix is rock solid.  The Ruby::AZ group is fantastic here in Phoenix.  Every month there is a pretty good turn out and always plenty of people volunteering to present.  Another fantastic group in Phoenix is the Phoenix Night Owls where there are plenty of people to help you out on your projects.  I have said this before and I will say it again, the Ruby on Rails community is so supportive and it amazes me how many Rails developers are willing to help you learn and willing to take the time to teach you.  I have been fortunate to meet the guys at RebelHold who have taken me under their wing to teach me better practices in Rails development.  What is great about these guys is that they FORCE me to become a better coder.  I have learned so much from @m3talsmith and @fzf in just a few months.

    What have I learned?  Well I must say that I think NOSQL is the way to go.  Preferably mongoDB.  Just today I went thru the Hell of installing postgresql.  What a pain in the ASS.  With mongoDB there is no migrating to add a field.  There is just an easy install of mongoDB.  Want to add a field to a table?  Put in the model.  I can say that I didn't have that hard of a time with sqlite3 but still I think mongodb is the way to go.  Afraid that mongodb cannot handle large amounts of data?  Just a few small companies like Disney, craigslist, and foursquare.  It is not like those guys have a lot of data.

    What else do I like to use?  I have recently started to use Omniauth for registering as a user on my app.  Devise (sorry @m3talsmith) for authentication when not using Omniauth.  RVM is a definite must for version control.  Where do I go to learn?  I would hate myself if I were to forget to mention Railscasts.com and the man behind Railscasts @rbates who amazes me that he not only has the time but also takes the time to record awesome Rails tutorials EVERY week!  And they are free to watch.  Another example of the greatness of the Rails community.

    BDD.  I have totally gotten into the world of Behavior Driven Development.  In fact this month I am giving a presentation on BDD and Rspec / capaybara.  I now know that "if you are not testing your rails app, you are not developing, you are guessing."  Take the time to learn how to write and use request specs.  It takes longer up front but saves time in the long run.  Learn to write stories in pivotal tracker and transpose those to your tests.  You will learn a lot more by testing and write less and cleaner code.

    Another thing I was forced into (LOL) was NOT using scaffolding.  Since I stopped using scaffolding I write more code but I understand what I write better.  While I might be actually typing more code, in the end I have fewer lines of code.

    I will add my BDD/Capybara presentation on here after I have it finished.  I will also start blogging more about my experiences with BDD and show some code in the near future. …


  5. My Ruby on Rails progress

    Hard to believe that I started this blog almost a year ago to share my new found knowledge of Python.  Wow have things morphed.  I still use Python for geoprocessing in ArcGIS but I have really immersed myself in Ruby on Rails.  I have been learning and studying and learning anything and everything that I can about RoR.  There is so much info out there for learning both Ruby and Rails.  I have tried to watch just about all of the Railscasts.com Rails tutorials that Ryan Bates puts out there for free.  I have read other tutorials and found other screencasts as well.  If anybody ever says that there is not enough info on Ruby and Rails, well then they never heard of Google.

    I know I have touched on this before but I am so impressed with the Ruby and Rails community.  I can't even count how many people have offered to help and/or helped me on my Quest to be a Rails pro.  My advice to new users or those looking to learn; find a local user group.  They are everywhere.  Look for co-working places in the cities where you live, that is where the programmers live.  A lot of places will have open hack nights where programmers new and experienced can go to work together or to get help and advice.  Other than that, read everything and just start coding.

    Shortly after I started "to get Rails" I found myself in a tutorial rut.  Too many "to do" or mini blogs, etc and I had to do something new.  A friend that I met at Ruby::AZ our local Ruby/Rails group gave me a real old app that he started on Rails v1 something.  I had the code to look at and a half running app to see what he had done.  As it was way too old version of Rails, I had to build it from the ground up.  I learned more doing this than any tutorial taught me.  It is easy following the steps in a tutorial but a lot harder to see what is is that you want to build, and then building it.

    I am still doing little things on the side and do not a "live" app of my own up but there are a couple of apps that I am working on.  In the meantime, I try to learn as much HTML and CSS as possible as well as JS and jQuery which is now installed by default in Rails 3.1.0.

    I am planning on doing some pair programming soon and striving the become that Rails "Ninja" …


  6. Could Phoenix become a Technology mecca?

    I don't want to jump to extremes just yet, but the Phoenix area really seems to be bustling with technology these days.  There are more and more programmer groups, user groups, and all around technology meetup groups springing up all over the valley.  There are now 3 (that I know of) co-working locations in the Phoenix valley.  You have Cohoots, GangPlankASU Skysong, OSP Tempe and more on the way.

    We have a very well established and active Ruby/Rails community (http://rubyaz.heroku.com/), an ever growing Geo/GIS community (http://phxgeo.org/), as well as Android, Win 7 etc.

    This fall we are having our first WhereCamp in Phoenix, a Ruby conference called SunnyConf (http://sunnyconf.com/), and another DesertCodeCamp (http://nov2011.desertcodecamp.com/) on November 5th.  I even heard that Steve Jobs may be showing up!!

    Not sure about a mecca but we are on our way...... …


  7. Gangplank - Co-working in Arizona

    So today is the first time that I have ever been to Gangplank (http://gangplankhq.com/) in Chandler AZ during the day.  I was here once in the evening for the dinner that they hosted after Desert Code Camp (http://desertcodecamp.com/).  It is mid afternoon and there are several people hanging out here and working.  Many belong to the numerous Anchor Companies that have set up shop here but others are just hanging out and hacking.

    I have been to a couple of other co-working places here in the Valley but Gangplank has them beat by far.  One of the other locations in town charges for hanging out for the day and another always seems dead.  Seeing as I follow Gangplank on Twitter I always see all of the events that they are putting on.  They have a regular "anybody is welcome" hacknight every week on every Wednesday of the month in addition to their Brownbag sessions as described on their website as "The best advice comes from those who have been there – that is the philosophy behind our weekly brownbag series. Each Wednesday at noon, Gangplank invites a leader in the local community to share the success they’ve enjoyed, and challenges they’ve faced in their careers."

    The room is hustling with activity even it is just 4 guys taking a break and playing video games!  They also had a chair massage person here for 3 hours today if a massage was all that was needed to relax and get more work done.

    All of my work is done sitting alone at home and working.  Here if I have a question, I can ask an expert in one of many various fields.

    truthfully the only downside that I see to Gangplank is that they are almost an hour away from me.  Hopefully they will open up their Avondale office on the west side and soon I can go there to work and learn. …


  8. Next Steps....

    All I can say is that keeping up a blog is a lot more work than I ever thought it would be. With that being said, email me if you would like to add an article to my blog as a guest author.

    I have gotten quite a few requests for video tutorials and I am planning on creating some for geoprocessing.  I am thinking very short and sweet "how to's" for the various basic geoprocessing functions.  I have seen a little interest in Phoenix for Python geoprocessing classes for which I would love to do if there is enough interest.  I am hoping that fellow members of the DesertPy.org group will also be interested in sharing their knowledge/experiences for some more basic Python training.

    As usual, if you have any questions, comments, or bitches, feel free to contact me.

    BR …


  9. What programming language do I learn?

    If you search the web there are a million posts on a million forums about what is the best language.  These are all OPINIONS and that is that.  So time for my opinion...

    I think that the biggest thing in determining what programming language you should learn is deciding what it is that you intend to use it for.  I would never spend the time and effort to learn Chinese if I never have any intention of going to China.  Just remember that programming languages are just that..languages.  So before you decide what language you want to learn, you need to ask yourself what you want to use it for.

    I learned Python as I work in GIS and as I have said before, ESRi's ArcView comes with Python.  If you are in GIS and do geoprocessing, then there is not really and questions as to which language to learn.

    For general (non web application) use, I think that there are a lot of things that are better with Python than Ruby but I also feel that there are parts of Ruby formatting that I like better than Python.  Ruby has its gems and Python has its eggs or modules. Truthfully for non web development it is really a matter of personal preference between Ruby and Python.

    Now, for web development, I am really torn between the two.  I have tried both Django and Rails.  I have tried many of the other smaller web frameworks as well. There are parts of each that I think are better than the other.  Rails generates more upfront files and html but Django creates a pretty awesome administrative interface.  I still have not decided which one I prefer.  I will mess around with Django for a few days and then jump to Rails for a few days.  I will say that there is a lot more documentation on Rails than there is for Django.  That brings me to my last opinion on the difference.

    Remember that this is my blog and these are my opinions.  I also know that the name of my blog is "Python and then some.."  That being said, there is a major difference between Python/Django and Ruby/Rails in the users and the communities.  There is also a different mindset and (in my opinion) personality between the two types.

    I feel that in general, Python users are more independent than Ruby users.  Every major (and a lot of minor) cities in America have Ruby or Rails user groups and they are very popular.  There are not as many Python user groups.  I started a Python user group in Phoenix AZ and I am struggling to get people show up.  Comparatively, the Ruby and Rails user groups have excellent turn outs.  You can say what you want but the Ruby/Rails community is a lot closer and tighter than any Python groups.

    Again, this is just my opinion but I have noticed a major difference between the two.  For example, Rails is big on TDD (Test Driven Development) where you create a test that you know will fail before you create the process to make it pass. That is what I call proactive troubleshooting, whereas you test for failure prior to creating the process.  In Python/Django I see more of a reactive troubleshooting, whereas you create the process and if it doesn't work you test to see why not.

    Now this does NOT mean that this is always the case.  There are extremes in either group.  I just feel that the Ruby/Rails community is more close knit than the Python/Django community.

    So, what language should you learn?  Decide what it is that you want to use if for in the first place and go with that.

    And to the Python world, this is not intended to be insulting but rather a call out for more unity.  The Rails community can do it than why the hell can't the Python community be more connected?

    BR


  10. Desert Code Camp - Chandler AZ

    What an amazing world we live in today.  I just went to my first Desert Code Camp ( http://desertcodecamp.com/ ) and it was fantastic!  It is great that there is so much tech going on.  There was such a wide variety of classes that were put on.  I was so impressed with the whole event.  From breakfast to dinner they took care of everything and it didn't cost anything to go to it.

    I got to see a great presentation on Ruby on Rails 101 put on by Clayton Lengel-Zigich that taught me more than all of the tutorials that I have done.  I also sat in on his HTML5 class ( all of his presentations are at http://bit.ly/i4lozg ) that was equally informative.  I am not going to rush out and code everything in HTML5 just yet as our friends at Microsoft do NOT have a browser to support it yet (IE5 supports SOME of HTML5) but it is amazing what HTML5 can do.  I just created a form for my companies website using jQuery so that I can require and validate fields and a lot of this is already in HTML5.  Not to say that jQuery isn't great but why re-build the wheel?

    I also sat in on a CoffeeScript class that was very impressive.  I once looked at javascript and thought it to be too difficult and for that matter a very messy language.  CoffeeScript allows you to write in a clear cut sensible way and then create the .js for you.  Hmm, I may have to look at JavaScript a little more.

    Speaking of JavaScript, I also sat in on a Node.js class which is a is a server-side JavaScript environment.  What was insanely incredible was Nodester ( http://nodester.com/ ) which is a FREE Heroku like hosting for Node.js that was created by a friend on mine Chris Matthieu ( @chrismatthieu ).  In addition to this Chris also created a JavaScript based way to place calls within a browser without using a VOIP account or Skype.  If you really want to be amazed check out http://phono.com/ !!

    How much did I love Desert Code Camp?  Enough that I volunteered to help with the next one! …