<?xml version="1.0" encoding="UTF-8"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom">
  <title>Dean Wampler's Blog - Home</title>
  <id>tag:blog.aspectprogramming.com,2010:mephisto/</id>
  <generator version="0.8.0" uri="http://mephistoblog.com">Mephisto Drax</generator>
  <link href="http://blog.aspectprogramming.com/feed/atom.xml" rel="self" type="application/atom+xml"/>
  <link href="http://blog.aspectprogramming.com/" rel="alternate" type="text/html"/>
  <updated>2010-03-07T22:37:26Z</updated>
  <entry xml:base="http://blog.aspectprogramming.com/">
    <author>
      <name>deanwampler</name>
    </author>
    <id>tag:blog.aspectprogramming.com,2010-03-07:1177</id>
    <published>2010-03-07T22:28:00Z</published>
    <updated>2010-03-07T22:37:26Z</updated>
    <category term="Conferences, Talks"/>
    <category term="Scala"/>
    <category term="conferences"/>
    <category term="erlang"/>
    <category term="scala"/>
    <link href="http://blog.aspectprogramming.com/2010/3/7/speaking-at-the-erlang-factory-san-francisco" rel="alternate" type="text/html"/>
    <title>Speaking at the Erlang Factory, San Francisco</title>
<content type="html">
            &lt;p&gt;The &lt;a href=&quot;http://www.erlang-factory.com/conference/SFBay2010/community&quot;&gt;Erlang Factory, San Francisco&lt;/a&gt; (March 22-26) will have a tract called &lt;a href=&quot;http://www.erlang-factory.com/conference/SFBay2010/tracks/Give-me-a-break&quot;&gt;Give me a break&lt;/a&gt; on Friday, where other programming languages are discussed. I&#8217;m doing a talk called &lt;a href=&quot;http://www.erlang-factory.com/conference/SFBay2010/speakers/DeanWampler&quot;&gt;Scala for the Curious Erlang Programmer&lt;/a&gt;. I&#8217;ll compare the implementations of some features that both languages implement and discuss features that are available only in Scala or Erlang. I&#8217;ll try to highlight situations where I think Scala or Erlang is the best choice.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://blog.aspectprogramming.com/">
    <author>
      <name>deanwampler</name>
    </author>
    <id>tag:blog.aspectprogramming.com,2010-03-07:1175</id>
    <published>2010-03-07T18:39:00Z</published>
    <updated>2010-03-07T22:28:11Z</updated>
    <category term="Assorted Rants"/>
    <category term="The Software Profession"/>
    <category term="craftmanship"/>
    <link href="http://blog.aspectprogramming.com/2010/3/7/sending-it-back-to-the-kitchen" rel="alternate" type="text/html"/>
    <title>Sending It Back to the Kitchen</title>
<content type="html">
            &lt;p&gt;Several years ago, while I worked for Object Mentor, I blogged about an old friend, &lt;a href=&quot;http://blog.objectmentor.com/articles/2007/05/27/what-ive-learned-from-master-chef-rino-baglio&quot;&gt;Master Chef Rino Baglio&lt;/a&gt;. I described some of the lessons I learned from him about craftsmanship and how they apply to software development.&lt;/p&gt;


	&lt;p&gt;Yesterday, I read a &lt;a href=&quot;http://marqueewines.blogspot.com/2010/02/pairing-wine-with-unique-food.html&quot;&gt;blog post&lt;/a&gt; by Christopher Cribb that contained another Chef anecdote that shows the same fanatical commitment to quality. Chistopher is a Kansas City-based wine importer who visited Chicago&#8217;s Fronterra Grill recently. Fronterra is the famous Mexican Restaurant owned by Chef Rick Bayless. Bayless won one of those master chef competitions recently, so now his restaurants are even more popular (and hard to get into) than they were before.&lt;/p&gt;


	&lt;p&gt;Christopher&#8217;s blog post is actually about wine pairings with spicy foods (and worth reading for that discussion alone). Along the way, he describes observing Bayless eating his own dinner at the bar. When he started to eat the fish entree, he immediately took it back to the kitchen. Twenty minutes later, the head chef brought him a new plate and apologized for whatever transgression Bayless discovered.&lt;/p&gt;


	&lt;p&gt;It&#8217;s easier to just let subpar work go uncorrected, but Bayless is so successful because he&#8217;ll send a subpar dish back to the kitchen. When was the last time you said &#8220;no&#8221; to subpar work in your software project?&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://blog.aspectprogramming.com/">
    <author>
      <name>deanwampler</name>
    </author>
    <id>tag:blog.aspectprogramming.com,2010-02-03:1156</id>
    <published>2010-02-03T14:05:00Z</published>
    <updated>2010-02-03T14:10:26Z</updated>
    <category term="IEEE Software Multiparadigm Programming Issue"/>
    <category term="Polyglot Programming"/>
    <category term="ieee software"/>
    <category term="multiparadigm programming"/>
    <link href="http://blog.aspectprogramming.com/2010/2/3/extended-deadline-ieee-software-special-issue-on-multiparadigm-programming" rel="alternate" type="text/html"/>
    <title>Extended deadline: IEEE Software special issue on "Multiparadigm Programming"</title>
<content type="html">
            &lt;p&gt;We have extended the deadline for submissions to February 15&lt;sup&gt;th&lt;/sup&gt;. Get those papers in now! For more information, please see the &lt;a href=&quot;http://www.computer.org/portal/web/computingnow/swcfp5&quot;&gt;call for papers&lt;/a&gt;.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://blog.aspectprogramming.com/">
    <author>
      <name>deanwampler</name>
    </author>
    <id>tag:blog.aspectprogramming.com,2010-01-23:1128</id>
    <published>2010-01-23T17:55:00Z</published>
    <updated>2010-01-23T17:58:50Z</updated>
    <category term="IEEE Software Multiparadigm Programming Issue"/>
    <category term="Polyglot Programming"/>
    <category term="&quot;multiparadigm programming&quot;"/>
    <category term="&quot;polyglot programming&quot;"/>
    <category term="&quot;polyparadigm programming&quot;"/>
    <category term="ieee"/>
    <link href="http://blog.aspectprogramming.com/2010/1/23/reminder-call-for-papers-ieee-software-special-issue-on-multiparadigm-programming" rel="alternate" type="text/html"/>
    <title>Reminder: Call for papers - IEEE Software special issue on "Multiparadigm Programming"</title>
<content type="html">
            &lt;p&gt;February 1 is the deadline to submit papers for the &lt;span class=&quot;caps&quot;&gt;IEEE&lt;/span&gt; Software special issue on &#8220;Multiparadigm Programming&#8221;. You can read more about it &lt;a href=&quot;http://www.computer.org/portal/web/computingnow/swcfp5&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;We also need reviewers for the submissions!&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://blog.aspectprogramming.com/">
    <author>
      <name>deanwampler</name>
    </author>
    <id>tag:blog.aspectprogramming.com,2009-11-25:1056</id>
    <published>2009-11-25T17:02:00Z</published>
    <updated>2009-11-25T17:03:03Z</updated>
    <category term="Scala"/>
    <category term="scala"/>
    <category term="scalagotchas"/>
    <link href="http://blog.aspectprogramming.com/2009/11/25/scala-type-parameter-gotcha" rel="alternate" type="text/html"/>
    <title>Scala Type Parameter "Gotcha"</title>
<content type="html">
            &lt;p&gt;During the exercises for my Scala tutorial at QCon last week, one of the students was mystified by the error message he got when he ran the following (greatly simplified&#8230;) script:&lt;/p&gt;


&lt;pre&gt;
  &lt;code&gt;
trait Doubler[T] {
  def double(t: T): T
}
class IntDoubler[Int] extends Doubler[Int] {
  def double(t: Int) = t * 2  
}
  &lt;/code&gt;
&lt;/pre&gt;

&lt;pre&gt;
  &lt;code&gt;
(fragment of ....scala):5: error: value * is not a member of Int
  def double(t: Int) = t * 2  
                          ^
one error found
  &lt;/code&gt;
&lt;/pre&gt;

	&lt;p&gt;What?! Of course &lt;code&gt;Int&lt;/code&gt; has the &lt;code&gt;*&lt;/code&gt; member method!!&lt;/p&gt;


	&lt;p&gt;Well, yes, the &lt;code&gt;final class scala.Int&lt;/code&gt; type does have a &lt;code&gt;*&lt;/code&gt; method, but that&#8217;s not what the word &lt;code&gt;Int&lt;/code&gt; means in the declaration of &lt;code&gt;IntDoubler&lt;/code&gt;. Because he wrote &lt;code&gt;IntDouble[Int]&lt;/code&gt; instead of &lt;code&gt;IntDouble&lt;/code&gt; (without a type parameter), he effectively said that  &lt;code&gt;IntDouble&lt;/code&gt; is &lt;em&gt;still&lt;/em&gt; parameterized and the type parameter now has the name  &lt;code&gt;Int&lt;/code&gt;. The declaration that yields the intended behavior is this:&lt;/p&gt;


&lt;pre&gt;
  &lt;code&gt;
class IntDoubler extends Doubler[Int] {
  def double(t: Int) = t * 2  
}
  &lt;/code&gt;
&lt;/pre&gt;

	&lt;p&gt;This is a common beginner (and not-so-beginner) mistake. We &lt;a href=&quot;http://programming-scala.labs.oreilly.com/ch12.html#ParameterizedTypes&quot;&gt;discussed it&lt;/a&gt; in &lt;a href=&quot;http://programming-scala.labs.oreilly.com/&quot;&gt;Programming Scala&lt;/a&gt; and I posted an &lt;a href=&quot;https://lampsvn.epfl.ch/trac/scala/ticket/2702&quot;&gt;enhancement request&lt;/a&gt; today for the Scala compiler to provide some &#8220;help&#8221;. The compiler could disallow any type name that is in scope to be used as a type parameter name, as in our example, or the compiler could at least warn you that you probably didn&#8217;t mean for the new type to have a type parameter.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://blog.aspectprogramming.com/">
    <author>
      <name>deanwampler</name>
    </author>
    <id>tag:blog.aspectprogramming.com,2009-11-06:1028</id>
    <published>2009-11-06T19:55:00Z</published>
    <updated>2009-11-06T19:58:05Z</updated>
    <category term="Assorted Rants"/>
    <category term="&quot;job hunting&quot;"/>
    <category term="career"/>
    <category term="craftsmanship"/>
    <link href="http://blog.aspectprogramming.com/2009/11/6/cultivateyourcareertoday" rel="alternate" type="text/html"/>
    <title>If You Want a Job Tomorrow, Cultivate Your Career Today</title>
<summary type="html">&lt;p&gt;I just completed a search for a new job. In these economic times, finding a job can be daunting, even in the software industry, which has fared better than most. (Today, it was announced that the official unemployment rate in the U.S. is 10.2%, the highest level in 25 years.) A job search can be harder if you're a software developer &lt;em&gt;of a certain age&lt;/em&gt; (I turn the big Five-Oh in January). &lt;/p&gt;

&lt;p&gt;Despite these obstacles, this was the easiest and most rewarding job search of my career. I had the good fortune to receive several excellent job offers. I regret that I had to turn down all but one of the opportunities. (I start at &lt;a href=&quot;http://www.drwtrading.com/&quot;&gt;DRW Holdings&lt;/a&gt; after Thanksgiving.)&lt;/p&gt;</summary><content type="html">
            &lt;p&gt;I just completed a search for a new job. In these economic times, finding a job can be daunting, even in the software industry, which has fared better than most. (Today, it was announced that the official unemployment rate in the U.S. is 10.2%, the highest level in 25 years.) A job search can be harder if you're a software developer &lt;em&gt;of a certain age&lt;/em&gt; (I turn the big Five-Oh in January). &lt;/p&gt;

&lt;p&gt;Despite these obstacles, this was the easiest and most rewarding job search of my career. I had the good fortune to receive several excellent job offers. I regret that I had to turn down all but one of the opportunities. (I start at &lt;a href=&quot;http://www.drwtrading.com/&quot;&gt;DRW Holdings&lt;/a&gt; after Thanksgiving.)&lt;/p&gt;
&lt;p&gt;The job search was easy because of investments I've made in my career over the years, investments that paid dividends this Fall. Let me share some of the lessons I've learned about keeping your employment prospects bright, despite your age or experience. My remarks mostly apply to those of you who want to &quot;stay technical&quot;, rather than move into management or other roles. However, some of the points are more broadly applicable.&lt;/p&gt;

&lt;p&gt;The elevator pitch is this: I made myself interesting to potential employers by developing a public reputation for software craftsmanship. I kept my skills up to date. I developed a local network of colleagues through active participation in user groups and local conferences. I developed an international reputation by speaking at larger conferences, blogging, tweeting, and writing &lt;a href=&quot;http://programmingscala.com&quot;&gt;Programming Scala&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Not everyone can do all these things, so I'll offer suggestions for making the most of what opportunities you have. I owe a great debt to &lt;a href=&quot;http://objectmentor.com&quot;&gt;Object Mentor&lt;/a&gt; and &lt;a href=&quot;http://twitter.com/unclebobmartin&quot;&gt;Uncle Bob Martin&lt;/a&gt;, in particular, for encouraging conference participation, blogging, writing, &lt;em&gt;etc.&lt;/em&gt; My skills as a craftsman grew enormously at Object Mentor. &lt;/p&gt;

&lt;h2&gt;Cultivate Your Skills&lt;/h2&gt;

&lt;p&gt;I've met older developers who struggle to stay employed. In particular, there are many ex-telecom developers who lost their jobs at Lucent, Motorola, &lt;em&gt;etc.&lt;/em&gt; here in the Chicago area. Most of these guys (and they have all been guys...) wrote C++ code for many years, even decades, on telecom switches, radios, and so forth. Justified or not, they are perceived as stale by web companies and IT teams.&lt;/p&gt;

&lt;p&gt;Our industry is evolving at an extraordinary pace. Staying current with newer technologies and development practices is difficult. &lt;/p&gt;

&lt;p&gt;Most companies aren't willing to invest in career development for their employees. Yes, it's short sided, but easy to understand. They also make conservative technology and process choices. They avoid risking failure on ideas they think are unproven when what they know seems good enough.&lt;/p&gt;

&lt;p&gt;So, how do you stay current? How do you avoid growing stale? How do you become expert in Ruby on Rails if you work in a Java shop, for example?&lt;/p&gt;

&lt;p&gt;During his talk at the recent &lt;a href=&quot;http://scna.softwarecraftsmanship.org/&quot;&gt;Software Craftsmanship North America conference&lt;/a&gt;, Uncle Bob said it's your responsibility to grow your career, not your employers. You'll have to find a way to stay current, balancing a 40-hour work week, family, and other obligations. Note that I said a &quot;40-hour work week&quot;. If your employer isn't investing in your career, they certainly can't expect more than 40 hours of your time each week (but it's in your best interests to give them a productive 40 hours...).&lt;/p&gt;

&lt;p&gt;Here are some ideas to help you stay current.&lt;/p&gt;

&lt;h3&gt;Keep Your Finger on the Pulse of Change&lt;/h3&gt;

&lt;p&gt;Find good sources for news and trending topics. Can you name three of the new &quot;NoSQL&quot; database projects?&lt;/p&gt;

&lt;p&gt;These days, I use &lt;a href=&quot;http://twitter.com&quot;&gt;Twitter&lt;/a&gt; for keeping informed. Almost all the people I follow are other technologists. Websites like &lt;a href=&quot;http://digg.com&quot;&gt;Digg&lt;/a&gt; and &lt;a href=&quot;http://reddit.com&quot;&gt;Reddit&lt;/a&gt; can be useful. So can blogs and trade magazines. The hard part is knowing how to drink from the fire hose of information without wasting your time.&lt;/p&gt;

&lt;p&gt;I discuss conferences below. They are also invaluable for staying informed.&lt;/p&gt;

&lt;h3&gt;Master Something New Each Year&lt;/h3&gt;

&lt;p&gt;In &lt;a href=&quot;http://pragprog.com/titles/tpp/the-pragmatic-programmer&quot;&gt;The Pragmatic Programmer&lt;/a&gt;, Andy Hunt and Dave Thomas say a developer should learn a new language each year. It's hard to underestimate how learning a new language broadens your perspective and informs your work in whatever languages you use. Note that the new language should be very different from languages you already know. Otherwise, what's the point?&lt;/p&gt;

&lt;p&gt;You can generalize this advice; learn a new technology or set of development practices each year. It might be Agile if you've never worked on an Agile project (or Kanban if you have). It might be Functional Programming if you know Object Oriented Programming (or vice-versa).&lt;/p&gt;

&lt;p&gt;Because it's unlikely your employer will give you the time for learning new things (at least on a consistent basis), you'll have to do this on your own time. &lt;/p&gt;

&lt;h3&gt;Develop &quot;Resum&amp;eacute; Quality&quot; Experience&lt;/h3&gt;

&lt;p&gt;It won't mean a lot to potential employers if you say you learned Rails by playing around with it at home, for example. How do you get real experience worth adding to your resum&amp;eacute;?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Try to use it at work:&lt;/strong&gt; You might sometimes succeed in convincing management to adopt a new technology or set of practices. Write an objective report that analyzes the pros and cons of the idea, targeted for a particular need in the organization. For the cons, develop mitigation strategies, such as using a prototype or trial of some kind to demonstrate viability and develop confidence in the idea. Can you use the new idea in a non-production role, &lt;em&gt;e.g.,&lt;/em&gt; as a testing tool, before committing to it for production use?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Get involved in an open-source project:&lt;/strong&gt; Many people who work full-time on a particular open-source technology started working with it in their spare time and one or more events led to full-time work. For example, Charles Nutter and Thomas Enebo worked on JRuby in their spare time before Sun hired them to work on JRuby full time. Note that involvement in open-source not only demonstrates viable skill in that area, but it provides code samples of your work. (Of course, the potential employer has to judge whether or not you actually did that work.) Few things provide more street cred than having a key role in a successful open-source project. &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Read books&lt;/h3&gt;

&lt;p&gt;When was the last time you read a technical book? If you're not reading several books each year, you're not getting the deep content that the &quot;pulse of change&quot; sources can't provide.&lt;/p&gt;

&lt;h3&gt;Several Things to Know&lt;/h3&gt;

&lt;p&gt;Okay, I can't list everything a software craftsman should know or be capable of doing, but here is a grab bag of items that are either historically underrepresented or they are growing in importance. I'll throw in a few general skills you should develop, too.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SQL Databases:&lt;/strong&gt;
It seems that most developers just hate working with databases. (I've been guilty of this.) So, we write lots of boilerplate code to hide the database from our sight, often resulting in bloated and suboptimal applications, but I digress... &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Functional Programming:&lt;/strong&gt;
FP is no longer just for academics. &lt;em&gt;All of us&lt;/em&gt; need to get good at concurrency and FP is the best foundation for it. Also, FP ideas make our code better in other ways. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Concurrency Models:&lt;/strong&gt;
Multithreading, The Actor model, dataflow parallelism, software transactional memory, &lt;em&gt;etc.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agile Methods:&lt;/strong&gt;
It's past time for everyone to be skilled in XP and/or other Agile methods.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Business:&lt;/strong&gt;
This one hurts, I know. Most of us developers don't like dealing with business issues and business people, but years ago, I got tired of burning away years of hard work on projects that failed for business reasons, not technical reasons. Understand the business and you'll be less likely to get involved in bad projects.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Writing and Public Speaking:&lt;/strong&gt;
I'm fortunate to have good writing and speaking skills, and I enjoy doing both. However, I've also worked hard to cultivate those skills. Remember my elevator pitch above? I wouldn't have the reputation I have without some ability to communicate by writing and public speaking.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Interviewing:&lt;/strong&gt;
Have you ever choked in an interview? We all have. Interviews are artificial and not very good at determining actual value, but it's a gate through which we all must pass. Even when you're not looking, consider interviewing occasionally for the practice. Or, practice with friends. Expect to write code and perhaps pair program in the interview. If the organization &lt;em&gt;doesn't&lt;/em&gt; have you write code, then go elsewhere. Organizations that don't test you on &lt;em&gt;what you'll actually be doing&lt;/em&gt; let in a lot of mediocre people.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Any Areas of Personal Weakness:&lt;/strong&gt;
We all have facets of our jobs that we do poorly or reluctantly. If you're shy or lack public-speaking skills, try doing informal talks for your team or local user group. If you don't write well, write blog posts and ask your colleagues to help you improve them. If you have trouble communicating with customers or other stakeholders, spend more time with them. A craftsman is well-rounded.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Cultivate a Reputation&lt;/h2&gt;

&lt;p&gt;A third to a half of the people who interviewed me during this job search were people I already knew! My active involvement in the Chicago tech community got me in the door and made the interviews less stressful. My experience and reputation made the interviews successful.&lt;/p&gt;

&lt;p&gt;Here are some &lt;em&gt;public speaking&lt;/em&gt; ideas that will cultivate your reputation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Conferences:&lt;/strong&gt; Speaking at conferences is one of your best options. They are also great for networking. These days, the slides and even the videos for talks are available on the web, so the reach of a conference talk extends far beyond the physical confines of the venue and those who were there. However, it can be hard to get the opportunity to speak at a conference. You might not be working on anything that can be discussed publicly and your company might not pay for the trip, forcing you to pay and to consume limited vacation time. Look for local conferences, some of which meet on Saturdays, for inexpensive, yet often excellent alternatives to the big conferences.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;User Groups:&lt;/strong&gt; If you live near a major metropolitan area, it's easy to get involved in the local user groups that are there. Most user groups meet once a month, so they don't consume too many evenings when your family expects you to be home. Don't be a passive participant; get involved. Talk about what you've been learning in your spare time. Help organize the group. Get to know the other people in the group. If you can't find a group that interests you, start one! Your employer might let you meet in the office. When I started the &lt;a href=&quot;http://www.meetup.com/chicagoscala/&quot;&gt;Chicago-Area Scala Enthusiasts&lt;/a&gt;, I had no idea if anyone else would come, but we always have 15-25 people for each meeting.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;In-Office Seminars:&lt;/strong&gt; Organize brown-bag lunch seminars at work and speak at them occasionally. If you can't talk about your work outside the office, you don't have that limitation inside!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Post the slides for public talks. Use &lt;a href=&quot;http://slideshare.net&quot;&gt;SlideShare&lt;/a&gt; if you don't have a personal site and the slides aren't publicly available from the conference or user group web site. (Even if you have your own site, you might get better traction at SlideShare.)&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Writing&lt;/em&gt; is another way to establish a reputation with a broad audience:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Blogging and Tweeting:&lt;/strong&gt; Search for people who are good at writing technical blogs and tweets. Follow their examples. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Write for Magazines, Web Sites, etc.:&lt;/strong&gt; Many websites and magazines welcome submissions for publication. For example, Michael Swaine just posted a &lt;a href=&quot;http://www.swaine.com/wordpress/?p=227&quot;&gt;request for contributions&lt;/a&gt; for &lt;a href=&quot;http://www.pragprog.com/magazines&quot;&gt;PragPub&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Write a Book:&lt;/strong&gt; Obviously, this is a big project to take on, but if you write well and you have expertise in a particular topic, writing a well-regarded technical book can't be beat for building your reputation.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Stay Desirable&lt;/h2&gt;

&lt;p&gt;Put yourself in the shoes of an interviewer and ask these questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why should I hire you?&lt;/li&gt;
&lt;li&gt;What makes you unique?&lt;/li&gt;
&lt;li&gt;Why are you more valuable and worth a higher salary than a fresh college graduate or someone with a few years of experience?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What's so great about a craftsman? He or she offers the wisdom that comes from a lifetime of experience. That wisdom guides strategic decision making (like design decisions for software). However, a craftsman can still create the products of his or her craft. When a craftsman mentors novices and apprentices, he or she teaches by example.&lt;/p&gt;

&lt;p&gt;Your best position is one where you have unique, desirable skills or a unique combination of desirable skills (including maturity). The contrast between generic and exceptional is nicely captured in this &lt;a href=&quot;http://www.slideshare.net/oso/the-artisan-internet-and-digital-craftsmanship&quot;&gt;presentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;There are plenty of other developers who know more than me about various software topics and many of them are young and willing to work insane hours. What I offer is a wide range of skills and experience, combined with mature judgment (correct me if I'm wrong!! ;), that I believe are unique and compelling.&lt;/p&gt;

&lt;p&gt;What makes &lt;em&gt;you&lt;/em&gt; indispensable?&lt;/p&gt;

&lt;h2&gt;Final Thoughts&lt;/h2&gt;

&lt;p&gt;You'll still encounter age bias in software development shops. You'll still encounter shops that treat developers as commodities. The organizations worth pursuing know they need to work &quot;smarter&quot;. They value experienced people with sound judgment and wisdom who can guide and mentor less experienced team members. They also want their experienced people to provide technical advice to the business team as they weigh business decisions. &lt;/p&gt;

&lt;p&gt;If you find that you're going through the motions, that you have no passion for the career growth that will keep you employable, then you should find something else to do. Do it now, on your own terms, before a layoff forces you to pick a new career.&lt;/p&gt;

&lt;p&gt;But if you are passionate about software, if you cultivate your career each day, there should always be a place for you in our industry, no matter what happens in the larger economy.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://blog.aspectprogramming.com/">
    <author>
      <name>deanwampler</name>
    </author>
    <id>tag:blog.aspectprogramming.com,2009-11-06:1027</id>
    <published>2009-11-06T16:52:00Z</published>
    <updated>2009-11-06T17:04:49Z</updated>
    <category term="Ruby and Ruby on Rails"/>
    <category term="Scala"/>
    <category term="conferences"/>
    <category term="jrubyconf"/>
    <category term="qcon"/>
    <category term="rubyconf"/>
    <category term="scala"/>
    <category term="tutorials"/>
    <link href="http://blog.aspectprogramming.com/2009/11/6/scala-tutorial-at-qcon-san-francisco-nov-16th-plus-rubyconf-and-jrubyconf" rel="alternate" type="text/html"/>
    <title>Scala Tutorial at QCon San Francisco, Nov. 16th, plus RubyConf and JRubyConf</title>
<content type="html">
            &lt;p&gt;I&#8217;m teaching an all-day, introductory tutorial on Scala at QCon San Francisco, November 16&lt;sup&gt;th&lt;/sup&gt;. You can find out more about it at the &lt;a href=&quot;http://qconsf.com&quot;&gt;QConSF web site&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;QCon San Francisco is a new conference (this is its second year), but it is already my favorite conference in the US for general coverage of software industry topics. It&#8217;s jointly organized by &lt;a href=&quot;http://infoq.com&quot;&gt;InfoQ&lt;/a&gt; and &lt;a href=&quot;http://www.trifork.com/&quot;&gt;Trifork&lt;/a&gt;, the people who produce the highly-regarded &lt;a href=&quot;http://jaoo.dk&quot;&gt;&lt;span class=&quot;caps&quot;&gt;JAOO&lt;/span&gt;&lt;/a&gt; conference in Denmark.&lt;/p&gt;


	&lt;p&gt;The end of QCon overlaps with the start of &lt;a href=&quot;http://rubyconf.org&quot;&gt;RubyConf&lt;/a&gt;, so I&#8217;ll be attending that one, too, and also the one-day  &lt;a href=&quot;http://jrubyconf.com&quot;&gt;JRubyConf&lt;/a&gt; on Sunday, November 22&lt;sup&gt;22&lt;/sup&gt;.&lt;/p&gt;


	&lt;p&gt;I hope to see you at any or all of those conferences!&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://blog.aspectprogramming.com/">
    <author>
      <name>deanwampler</name>
    </author>
    <id>tag:blog.aspectprogramming.com,2009-11-05:1026</id>
    <published>2009-11-05T14:39:00Z</published>
    <updated>2009-11-05T15:49:36Z</updated>
    <category term="IEEE Software Multiparadigm Programming Issue"/>
    <category term="Polyglot Programming"/>
    <category term="&quot;ieee software&quot;"/>
    <category term="multiparadigm"/>
    <category term="polyglot"/>
    <category term="polyparadigm"/>
    <link href="http://blog.aspectprogramming.com/2009/11/5/call-for-articles-ieee-software-special-issue-on-multiparadigm-programming" rel="alternate" type="text/html"/>
    <title>Call for Articles: IEEE Software Special Issue on "Multiparadigm Programming"</title>
<content type="html">
            &lt;p&gt;I have the pleasure of guest editing, along with Michael Feathers and Tony Clark, a special issue of &lt;a href=&quot;http://www.computer.org/software&quot;&gt;&lt;span class=&quot;caps&quot;&gt;IEEE&lt;/span&gt; Software&lt;/a&gt; on &lt;a href=&quot;http://www.computer.org/portal/web/computingnow/swcfp5&quot;&gt;Multiparadigm Programming&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;Obviously, multiparadigm, a.k.a. polyparadigm, and polyglot programming have been topics I&#8217;ve thought a lot about recently (Hence the &lt;a href=&quot;http://polyglotprogramming.com&quot;&gt;polyglotprogramming.com&lt;/a&gt; web site). Here is the opening paragraph of the CfP:&lt;/p&gt;


	&lt;p&gt;&amp;lt;q&gt;For most of today’s applications, using one language and one paradigm—for instance, object-oriented programming—is inadequate. Today’s applications are often polyglot, involving multiple languages, and multiparadigm, involving a mixture of deployment directives as well as functional, relational, object-oriented, aspect-oriented, and other paradigms. &lt;span class=&quot;caps&quot;&gt;IEEE&lt;/span&gt; Software is soliciting articles for a special issue on multiparadigm programming, or &lt;span class=&quot;caps&quot;&gt;MPP&lt;/span&gt;. It will explore &lt;span class=&quot;caps&quot;&gt;MPP&lt;/span&gt; technologies, advantages, disadvantages, and applications ranging from embedded and IT systems to the Internet.
&amp;lt;/q&gt;&lt;/p&gt;


	&lt;p&gt;You can find out more information about the kinds of articles we are looking for, guidelines for submitters, &lt;em&gt;etc.&lt;/em&gt; on the &lt;a href=&quot;http://www.computer.org/portal/web/computingnow/swcfp5&quot;&gt;CfP home page&lt;/a&gt;. Note that we also welcome people who would be willing to review submissions.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://blog.aspectprogramming.com/">
    <author>
      <name>deanwampler</name>
    </author>
    <id>tag:blog.aspectprogramming.com,2009-11-05:1025</id>
    <published>2009-11-05T14:36:00Z</published>
    <updated>2009-11-05T14:39:00Z</updated>
    <category term="Scala"/>
    <category term="clojure"/>
    <category term="drw"/>
    <category term="job"/>
    <category term="scala"/>
    <link href="http://blog.aspectprogramming.com/2009/11/5/i-m-joining-drw-trading-group" rel="alternate" type="text/html"/>
    <title>I'm Joining DRW Trading Group</title>
<content type="html">
            &lt;p&gt;My time at Object Mentor has come to an end. On November 30&lt;sup&gt;th&lt;/sup&gt;, I start at &lt;a href=&quot;http://drwtrading.com&quot;&gt;&lt;span class=&quot;caps&quot;&gt;DRW&lt;/span&gt; Trading&lt;/a&gt;, where I&#8217;ll write all kinds of software for trading applications, some of which is written in Scala, Clojure, &lt;i&gt;etc.&lt;/i&gt;&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://blog.aspectprogramming.com/">
    <author>
      <name>deanwampler</name>
    </author>
    <id>tag:blog.aspectprogramming.com,2009-05-19:408</id>
    <published>2009-05-19T13:58:00Z</published>
    <updated>2009-11-05T15:47:45Z</updated>
    <category term="Java and AspectJ"/>
    <category term="cjug"/>
    <category term="java"/>
    <category term="javaone"/>
    <link href="http://blog.aspectprogramming.com/2009/5/19/speaking-at-cjug-5-21" rel="alternate" type="text/html"/>
    <title>Speaking at CJUG, 5/19</title>
<content type="html">
            &lt;p&gt;&lt;b&gt;Update:&lt;/b&gt; The talk is &lt;i&gt;tonight&lt;/i&gt; (Tuesday). The 4th Chicago Area Scala Enthusiasts meeting is &lt;a href=&quot;http://www.meetup.com/chicagoscala/calendar/10202869/&quot;&gt;Thursday evening&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;I&#8217;m giving my &lt;a href=&quot;http://java.sun.com/javaone/&quot;&gt;JavaOne&lt;/a&gt; &lt;a href=&quot;http://bit.ly/1a6Fge&quot;&gt;talk&lt;/a&gt; at &lt;a href=&quot;http://www.cjug.org/Wiki.jsp?page=2009.05.19.downtown&quot;&gt;&lt;span class=&quot;caps&quot;&gt;CJUG&lt;/span&gt;&lt;/a&gt; this &lt;a href=&quot;http://www.cjug.org/&quot;&gt;Tuesday evening&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;The title is &lt;i&gt;Don&#8217;t Do This! How Not to Write Java Software&lt;/i&gt;. I&#8217;ll discuss ten issues I often encounter in Enterprise Java applications, why they are bad, and how to correct them.&lt;/p&gt;


	&lt;p&gt;Please join me!&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://blog.aspectprogramming.com/">
    <author>
      <name>deanwampler</name>
    </author>
    <id>tag:blog.aspectprogramming.com,2009-02-04:369</id>
    <published>2009-02-04T20:10:00Z</published>
    <updated>2009-11-05T15:43:42Z</updated>
    <category term="case"/>
    <category term="chicagoscala"/>
    <category term="scala"/>
    <link href="http://blog.aspectprogramming.com/2009/2/4/ann-1st-ever-chicago-area-scala-enthusiasts-case-meeting" rel="alternate" type="text/html"/>
    <title>ANN: 1st Ever Chicago-Area Scala Enthusiasts (CASE) Meeting</title>
<content type="html">
            &lt;p&gt;We finally got organized; I&#8217;m pleased to announce that we&#8217;re holding our first meeting at 6:00 on Thursday, Feb. 19, at the Chicago ThoughtWorks offices.  Our google group is &lt;span&gt;chicagoscala&lt;/span&gt; and more information about the meeting can be found in this &lt;a href=&quot;http://groups.google.com/group/chicagoscala/browse_thread/thread/4ebd65d66301b324&quot;&gt; message&lt;/a&gt;. We hope to see you there!&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://blog.aspectprogramming.com/">
    <author>
      <name>deanwampler</name>
    </author>
    <id>tag:blog.aspectprogramming.com,2009-01-17:351</id>
    <published>2009-01-17T16:46:00Z</published>
    <updated>2009-11-05T15:47:40Z</updated>
    <category term="Polyglot Programming"/>
    <category term="Scala"/>
    <category term="case"/>
    <category term="chicago"/>
    <category term="scala"/>
    <link href="http://blog.aspectprogramming.com/2009/1/17/organizing-a-chicago-area-scala-enthusiasts-case-group" rel="alternate" type="text/html"/>
    <title>Organizing a Chicago Area Scala Enthusiasts (CASE) Group</title>
<content type="html">
            &lt;p&gt;I&#8217;m organizing a group in Chicago for people interested in Scala, called the Chicago Area Scala Enthusiasts (CASE). If you&#8217;re interested, join the &lt;a href=&quot;http://groups.google.com/group/chicagoscala&quot;&gt;google group&lt;/a&gt; for more information.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://blog.aspectprogramming.com/">
    <author>
      <name>admin</name>
    </author>
    <id>tag:blog.aspectprogramming.com,2008-12-16:263</id>
    <published>2008-12-16T23:00:00Z</published>
    <updated>2009-01-04T17:44:50Z</updated>
    <category term="Java and AspectJ"/>
    <category term="Polyglot Programming"/>
    <category term="Scala"/>
    <category term="cjug"/>
    <category term="scala"/>
    <link href="http://blog.aspectprogramming.com/2008/12/16/the-seductions-of-scala-presentation" rel="alternate" type="text/html"/>
    <title>"The Seductions of Scala" Presentation</title>
<content type="html">
            &lt;p&gt;I posted an S5-based presentation called &lt;a href=&quot;http://aspectprogramming.com/papers/seductions-of-scala.zip&quot;&gt;The Seductions of Scala&lt;/a&gt; (Zip). I'm giving this presentation tonight at &lt;a href=&quot;http://www.cjug.org/Wiki.jsp?page=2008.12.16.downtown&quot;&gt;CJUG&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;To view it, unzip the file and open &lt;i&gt;html/all.html&lt;/i&gt; in your browser. Use the arrow keys to navigate or the controls in the lower right-hand corner (visible when you mouse over). &lt;/p&gt;

&lt;p&gt;The corresponding code is in the &lt;i&gt;code&lt;/i&gt; directory.&lt;/p&gt;

&lt;p&gt;Feedback welcome and I hope to see you tonight!&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://blog.aspectprogramming.com/">
    <author>
      <name>admin</name>
    </author>
    <id>tag:blog.aspectprogramming.com,2008-11-20:164</id>
    <published>2008-11-20T19:46:00Z</published>
    <updated>2009-11-05T15:48:03Z</updated>
    <category term="AOP"/>
    <category term="Aquarium"/>
    <category term="Polyglot Programming"/>
    <category term="Ruby and Ruby on Rails"/>
    <category term="Scala"/>
    <link href="http://blog.aspectprogramming.com/2008/11/20/qcon2008" rel="alternate" type="text/html"/>
    <title>Slides from My QCon Talk</title>
<content type="html">
            &lt;p&gt;I posted an extended version of the slides from my &lt;a href=&quot;http://qconsf.com/sf2008/schedule/wednesday.jsp&quot;&gt;QCon San Francisco&lt;/a&gt; talk, &lt;a href=&quot;http://aspectprogramming.com/papers/SimplificationThroughPolyglotAndPolyParadigm_v2.pdf&quot;&gt;Radical Simplification Through Polyglot and Poly-Paradigm Programming&lt;/a&gt; (PDF). The &lt;span class=&quot;caps&quot;&gt;PDF&lt;/span&gt; includes some slides I skipped in the actual talk, for time&#8217;s sake.&lt;/p&gt;


	&lt;p&gt;&lt;a href=&quot;http://infoq.com&quot;&gt;InfoQ.com&lt;/a&gt; may offer a video of this talk. Stay tuned.&lt;/p&gt;&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://blog.aspectprogramming.com/">
    <author>
      <name>deanwampler</name>
    </author>
    <id>tag:blog.aspectprogramming.com,2008-10-06:69</id>
    <published>2008-10-06T02:03:00Z</published>
    <updated>2008-10-06T02:08:45Z</updated>
    <category term="Polyglot Programming"/>
    <category term="Scala"/>
    <category term="book"/>
    <category term="scala"/>
    <link href="http://blog.aspectprogramming.com/2008/10/6/writing-a-book-on-scala" rel="alternate" type="text/html"/>
    <title>Writing a Book on Scala</title>
<content type="html">
            &lt;p&gt;I&#8217;m pleased to announce to &lt;a href=&quot;http://twitter.com/al3x&quot;&gt;Alex Payne&lt;/a&gt; (of Twitter fame) and I are writing a book on &lt;a href=&quot;http://www.scala-lang.org/&quot;&gt;Scala&lt;/a&gt;, a new language for the &lt;span class=&quot;caps&quot;&gt;JVM&lt;/span&gt; that combines a succinct syntax, an improved object model and type system, and full support for functional programming. O&#8217;Reilly will be the publisher.&lt;/p&gt;


	&lt;p&gt;I&#8217;ve &lt;a href=&quot;http://blog.objectmentor.com/articles/tag/scala&quot;&gt;blogged about Scala&lt;/a&gt; on the Object Mentor blog.&lt;/p&gt;
          </content>  </entry>
</feed>
