Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Software - Profession, Craft, or Passion?

Software - Profession, Craft, or Passion?

Not everyone has the same understanding of just what a software engineering (or software development if you prefer) career is all about. Is it a profession? Is it a craft? Or is it your life's passion? Why not all three?

Lori M Olson

January 12, 2018
Tweet

More Decks by Lori M Olson

Other Decks in Technology

Transcript

  1. Software
    Profession, Craft, or Passion?

    View full-size slide

  2. I’m sure some of you are asking yourself, who is this?

    View full-size slide

  3. Freelance
    I’m a freelance developer

    View full-size slide

  4. !
    I’m a Canadian freelance developer, trainer and mentor. I could say more, but... let’s just leave that for the moment, because I have this sneaking suspicion at the end of
    this talk, you all will know me better than most people.

    View full-size slide

  5. Question
    For now, let’s get down to the question.

    When I was asked to keynote here at CUSEC, they said I could talk about “anything”. Ya sure. Ok, so I could retread one of my more popular talks... or... hey, I could
    finally give that talk I’ve pitched to about 15 conferences, and been turned down, every time.... or maybe something completely new.

    I’m told that all great presentations start with… a question.

    View full-size slide

  6. How?
    So let’s start with the question.

    Seemed like a good place to start, actually. Over the last few years, it seems l’ve been asked this question a lot. Why NOT finally try to answer it?

    And the question is … how.

    View full-size slide

  7. Career
    How do you have a career…

    View full-size slide

  8. Software
    How do you have a career in software

    View full-size slide

  9. 30 years
    How do you have a career in software for 30 years…

    View full-size slide

  10. Coding
    and still be coding….

    View full-size slide

  11. Story
    They also say, that the very best talks tell a story.

    So, that’s what I’ll do. Tell the story of my 30+ year software career.

    View full-size slide

  12. Profession
    A career that started out as a profession,

    View full-size slide

  13. Craft
    evolved into a craft,

    View full-size slide

  14. Passion
    and today it’s still what I am passionate about.

    View full-size slide

  15. Software. That’s why we’re all here at CUSEC, right? I’ve been here, in the software biz, for my entire career, since I graduated from the University of Calgary in 1986
    (yes, that’s 32 years ago for the temporal math challenged). That year, we had about 42% women in my graduating class of Computer Science. It seemed like the battle
    for equality of the sexes in this profession was over, and the future was bright for all of us.

    Looking back, that was premature. But looking out here now, I see the promise of that future returning. I’d like to think that my being up here today helps demonstrate
    that it’s not just possible for a woman to have a successful software career, but it’s so much DAMN FUN to be in software today, and it’s open season. Anyone can do it.
    They just have to want to.

    But this isn’t a talk about diversity, so… let’s carry on with the story.

    View full-size slide

  16. Interviews
    As I was graduating, I interviewed with lots of companies that recruited at the university. Pro tip. If they show up to interview you, and seem surprised by anything on your
    resume, or not on your resume, as the case may be... you didn’t want to work there anyway.

    In the end, I only seriously considered 2 offers.

    View full-size slide

  17. Nortel
    One from Nortel

    View full-size slide

  18. Shell
    And the other was from Shell. In retrospect, seems like I made the right decision. There were times when I didn’t always think so.

    So anyway, fresh out of school, I started at Shell. Seemed like a step backwards. We’d learned all the modern languages at school (C, PL/1, Simula, Prolog), but working
    with the engineering departments at Shell, and they were all about the Fortran.

    And my title, was…

    View full-size slide

  19. What’s in a name?
    If I may digress for a moment...

    The number of titles and qualifiers hung off of software jobs seems to proliferate like bunnies.

    View full-size slide

  20. Engineer
    Let’s start with -

    Engineer is a loaded term back home in Alberta.

    View full-size slide

  21. APEGA
    We have APEGA - the association of professional engineers & geoscientists of Alberta.

    APEGA’s primary role is to protect public interest and safety. APEGA serves the public interest by ensuring individuals and companies that practise engineering or
    geoscience in Alberta are competent, ethical, and professional. APEGA’s authority to regulate the professions comes from the Engineering and Geoscience Professions
    Act (EGP Act).

    So yes, there is actually a law, that regulates the use of the word “engineer”.

    View full-size slide

  22. Developer
    Thus my personal preference for the word, developer. This is what I tell the uninitiated that I do… I am a software developer.

    But there are so many words and titles that will be used to describe software people throughout their careers.

    View full-size slide

  23. Programmer
    However, that first title upon graduating and starting at Shell was “Programmer/Analyst”.

    Since the creation of the first programmable device…

    View full-size slide

  24. not actually Charles Babbage’s Analytical Engine, although his & Ada Lovelace’s story is a favourite of mine…

    View full-size slide

  25. but the Antikythera mechanism from the 1st century BC.

    In fact, basic automata have existed since before the 5th century BC, there have always been people who required special knowledge to “program” these devices.

    View full-size slide

  26. Analyst
    After I’d worked at Shell for a couple of years, I was promoted to “Analyst/Programmer”, which would seem to indicate somehow that the act of “programming” wasn’t
    lesser importance than the “analysing” of problems that were going to be solved by writing of programs.

    As long as there are companies, there will be ladders of advancement

    View full-size slide

  27. Junior
    The ladder of titles for “technical” stream people at Shell (and most large corporations) was “programmer/analyst”, “analyst/programmer”, “systems analyst”, “senior
    systems analyst”, “staff systems analyst” and finally “senior staff systems analyst”.

    Now let’s think about that a bit…

    There was an implication in these titles. The ones with “programmer” in the title were junior people.

    View full-size slide

  28. Intermediate
    The “systems analyst” grouping was intermediate.

    And the elusive “staff” was most definitely senior.

    View full-size slide

  29. Senior
    I was employed at Shell for almost 8 years, and was on the verge of “senior systems analyst” when I left. One certainly could not expect to reach the base staff level
    without at least 10 years of experience under ones’ hat.

    Today, in smaller companies, you frequently see the bare junior/intermediate/senior, where 5 years of experience is almost always considered “senior”. I suspect this is
    the reason why I am constantly asked how one progresses in a software career, and how you can still BE a coder after 10, 15, 20 years, if one reaches the top “senior”
    after only 5.

    View full-size slide

  30. Coder
    And yes, I just introduced yet another term.

    Coder is a tag in far greater use today. Someone who writes code. While there doesn’t seem to be a lot of difference in the output of “coders” and “programmers”, today
    people prefer to be coders. “to code” seems to imply a higher pristege activity than “to program”.

    View full-size slide

  31. Staff
    Staff still gets used in larger organizations. It’s a generic enough modifier that it can be applied across a wide range of professions, so that keeps it fresh.

    It’s also implied that these people can “lead” a team of developers

    View full-size slide

  32. Principal
    Principal is another common modifier you will see on jobs. It’s not quite “lead” and not quite “senior” but encompasses qualities of both.

    Principal developers or engineers are considered a cut above, and probably work with several teams, in their area of specialty

    View full-size slide

  33. Distinguished
    This is rarified territory now. You get called distinguished when your accomplishments are known far and wide, OUTSIDE your company or industry.

    View full-size slide

  34. Fellow
    Fellow… is the elite of the elite. Their accomplishments have improved our industry in general. They are trusted researchers, working with full autonomy.

    Ya, after Shell, I decided I’d never work for a large corporation again, so I’m never gonna be a “Fellow”. Maybe that’s a good thing.

    View full-size slide

  35. Architect
    I might have missed a few titles along the way, but …there’s another way of naming used… not by a “ladder” of accomplishments, but by the kind work you perform.

    Architect is one of these names, that is loaded and overloaded with meaning. Architects are regulated almost as extensively as engineers.

    And of course, now there’s an implication that you no longer dirty your hands with actual coding, but simply think higher thoughts and draw lots of diagrams. ;-)

    Not to worry. I was a senior architect for years, and still managed to keep my hands on the code.

    View full-size slide

  36. Designer
    Lets not forget there are a HUGE number of career paths in software where coding is a sideline.

    Designer is one. There are many aspects to design, and I have to admit to having only dabbled enough to get by when I don’t have a real one on staff

    View full-size slide

  37. Graphic
    (thank you Bootstrap and App Templates), and to appreciate the value a professional designer brings to my projects.

    View full-size slide

  38. UX
    All these specialties require additional skills

    View full-size slide

  39. Tester
    Software testing is a sub-specialty you may find yourself attracted to. Certainly coding is a part of testing.

    View full-size slide

  40. Operations
    Operations. Ops. Or as we call it today,

    View full-size slide

  41. DevOps
    DevOps. I’d argue that ops is still a separate speciality, but a good developer will have some ops expertise, just like picking up some design skills.

    View full-size slide

  42. Systems
    Systems is a sub set (or is it a super set?) of Operations. Operations implies day-to-day stuff, while systems is more about crafting interrelated sets of services into a
    harmonious whole.

    My husband (of 15 years, yesterday) is a systems and network operations guy. Thank heavens, I’ve managed to forget most of what I knew about systems. That’s why I
    keep him around, lol

    View full-size slide

  43. Meaning is in the
    work, not the title
    Ok, that was a fairly long interlude, but the point I wanted to make was…

    Just remember as you try on all those different hats…

    View full-size slide

  44. Bugs Bonnets

    View full-size slide

  45. So is Software
    So now lets circle back to our premise.

    View full-size slide

  46. a Profession?

    View full-size slide

  47. I’m afraid I’ll have to argue that it CAN BE all three. At least, that’s what it has been for me.

    View full-size slide

  48. Profession
    Let’s get back to the beginning. I started working in software as a profession, at a large company, where you usually start thinking about

    View full-size slide

  49. Career
    career paths, and

    View full-size slide

  50. Corporate
    how to scratch your way up the corporate ladder. So, we are talking about big companies. That’s how I started. Straight out of university into the multi-national oil &
    gas biz. It was an eye opener for sure.

    View full-size slide

  51. Secure
    the thing about big corporations, is that they are fairly secure. Once you get in, get trained up in the corporate processes, they’ve invested a lot in you, as a professional.

    View full-size slide

  52. Safe
    So, those big corporate jobs are pretty Safe. This means that you will often find a higher percentage of women in corporate development roles. This safety includes
    things like maternity leave, solid benefits, etc, that are quite appealing when you start thinking about taking a break to start a family, or need to take time to care for sick
    kids, aging parents, etc. These are burdens that fall, unfairly perhaps, on women more than men.

    View full-size slide

  53. Further Education
    Large corporations also tend to have good programs for further education. Training budgets that need spending. They’ll sponsor you to speak at conferences, send you
    on job-related training, and generally level up their “professionals” with soft-skill courses like time management and public speaking.

    View full-size slide

  54. Certification
    And oh, myyyyy the certifications. Big corps just LOVE to have their staff certified, and certification programs are happy to oblige.

    View full-size slide

  55. Transition
    You will also find, if spending 20 or 30 years coding seems not so appealing after a few years at it, that big corp will happily transition you into new roles.

    View full-size slide

  56. Manager
    There are oh so many manager roles open to the experienced professional.

    Aside, this is one of the main reasons I left Shell. The persistent pressure to move into a management role.

    View full-size slide

  57. People
    Manager of people is the most straightforward way up the corporate ladder. You can even stay and manage some of your former team mates… this didn’t seem like
    something I wanted, but YMMV. It’s an easy transition for some to make from team lead to manager.

    View full-size slide

  58. Project
    Project management is another good one. If you like moving around a lot.

    View full-size slide

  59. Product
    And of course, product manager. Is a pretty stable position

    View full-size slide

  60. The thing to remember is… you need to enjoy the work. And if you don’t enjoy it any more...

    View full-size slide

  61. Craft
    Ok, let’s get out of the corporate world for a while, and talk about the craft of software.

    View full-size slide

  62. Little companies
    I got out of Shell, and started working for a leetle company called WNDX. You might notice I’m still working at WNDX. But the company has evolved, from a product
    company, to a professional services company, to my personal freelancing consultancy today.

    Now with little companies, you have to start taking control of your own career, because no one will do it for you. If I wanted to be the best of the best, I’d have to start
    working on that myself.

    View full-size slide

  63. What do other crafts
    do?
    So I asked myself, what do other crafts / trades do?

    View full-size slide

  64. Electrician
    I’m reasonably able to compare software with another “craft” / trade like electrician, because my brother, who was only 2 years older than I, followed this path.

    View full-size slide

  65. Apprentice
    when you are talking about any craft or trade, you generally start out as an apprentice. Apprentices must put in a certain amount of time, both in real work sites, and in
    formal training. You must pass the courses of your formal training, and you must work for a master electrician, under the supervision of a master or journeyperson.

    Now electrician takes approximately 4 years. First year apprentices aren’t allowed to do much of anything really technical, just boring stuff like pulling wires, and hooking
    up wall switches and outlets, which will all be supervised and inspected, but each year that goes by adds to their skills and capabilities.

    Think about how that would compare to software while we continue …

    I considered my time at Shell to be a more than adequate apprenticeship, in terms of on-the-job, and my degree certainly covered the formal training part.

    View full-size slide

  66. Journeyperson
    So I was more than ready to act as a journeyperson.

    The term of apprenticeship for an electrician is 4 years (four 12-month periods) including a minimum of 1560 hours of on-the-job training and 8 weeks of technical training
    in each of the first three years, and a minimum of 1440 hours of on-the-job training and 12 weeks of technical training in the fourth year.

    Journeypersons are then certified to work, unsupervised. It is expected that they understand the electrical code, and why, if they perform work that isn’t up to code, they
    could kill someone.

    Let’s continue pondering how that would compare to software

    View full-size slide

  67. Master
    A master electrician must work as a journeyperson for *at least* another 3 years, and undergo an additional level of certifications. Once you have achieved master, you
    can pull electrical work permits…

    So, it seems you need to have at least 7 years of work experience, before being in charge of electrical permit work… hmmmm.

    From a software perspective, this would mean you could not bid on a software development project until you had 7 years of experience, two levels of certifications, and
    36+ weeks of classroom education. Interesting, no?

    View full-size slide

  68. Software as a Craft
    So I asked myself: how did this translate to software as a craft or trade?

    So if you want to become a software craftsperson, how does one do this? This was my question

    View full-size slide

  69. Craftmaster
    Let us step back from our electrician metaphor, and look at a broader range of crafts, you will also find a position or title of Craftmaster.

    These are the masters, who are so proficient at their craft, that they are sought out to teach, to demonstrate their craft to apprentices and journeypersons.

    View full-size slide

  70. Masters
    So we look to the masters of the software craft.

    And so I did. As I progressed, working for a small company, and eventually striking out on my own, I needed to “level up” in order to keep progressing (that is to say...
    charging people more money) in my craft

    View full-size slide

  71. Dave Thomas
    Guys like

    View full-size slide

  72. Pragmatic
    Programmer
    who, with his partner Andy Hunt, wrote the “Pragmatic Programmer” and was also the

    writer of the book that brought Ruby from Japan into the West “Programming Ruby”.

    For which I, personally, can never thank him enough. I encountered Ruby at a low point in my career, where I was actively seeking alternatives to coding. Ruby brought
    back some of the joy to my work, and I still use it today.

    Anyway, Dave and Andy went on to found the Pragmatic Book Store, which has done an excellent job disrupting the traditional publishing model for technical books

    View full-size slide

  73. Pete McBreen
    Local Canuck, lives in Cochrane, AB

    View full-size slide

  74. Software
    Craftsmanship
    who literally wrote THE BOOK - Software Craftsmanship

    View full-size slide

  75. Sandi Metz
    Software developer, author, and trainer

    View full-size slide

  76. 99 Bottles of OOP
    And Practical Object Oriented Design course

    View full-size slide

  77. Corey Haines
    Experienced developers, looking to hone their skills, and improve their understanding of the craft of software could do worse than to look to Corey Haines.

    He literally “journeyed” around the world, looking for projects to work on and masters to learn from

    View full-size slide

  78. Code Retreat
    Corey is also the founder of

    Code Retreats are amazing one day events, and make coders think different, poke holes in your preconceived notions, and broaden your coding perspectives. Every
    year in November we have the Global Day of Code Retreat. Consider looking one up, and attending if you are feeling stale.

    View full-size slide

  79. Schools of Thought
    And along with the masters, we also have schools of thought for software.

    View full-size slide

  80. Martin Fowler
    Founder of Thoughtworks writes some amazing stuff on different schools of thought.

    View full-size slide

  81. Software Development
    Processes
    Things about the process of software development, and how they can be improved.

    View full-size slide

  82. Agile
    I’ve worked on projects using one or another form of all of these, and I can safely say... there is no one true way that works for every team or every product, 100% of the
    time. You need to just start, and if you have a bad fit, be flexible enough to change.

    After all, that’s what “agile” means.

    View full-size slide

  83. Programming
    Paradigms
    Fowler also talks about programming paradigms, like Jim touched on yesterday…

    View full-size slide

  84. Procedural
    C, C++, back to C

    View full-size slide

  85. Object Oriented
    On to Java and Ruby

    View full-size slide

  86. Functional
    Now there’s Clojure & Elixir.

    Again, no one language or language form is sufficient to solve every problem. Too many developers fall victim to hammer/nail syndrome, or shiny object syndrome.
    Different classes of problems need to be solved differently. I’ve learned to find the right tool for my problems.

    View full-size slide

  87. Groups
    So, it’s not always individual masters you need to learn from. Sometimes you can learn from the collective

    View full-size slide

  88. TeamB
    As I did. In my Java days, I learned a lot from Team B, eventually going on to become a member. TeamB worked with a company called Borland

    View full-size slide

  89. Microsoft MVP
    TeamB was a lot like MS MVP, but existed long before the MVP program came along. In fact, the MVP program, when it started, was based in no small part on TeamB.

    View full-size slide

  90. Stack Overflow
    Outside the MS ecosystem, we now learn collectively from Stack Overflow.

    View full-size slide

  91. Core Contributors
    We also learn from open source, and if you learn enough, you can even become a core contributor on one of your favorite projects

    View full-size slide

  92. Volunteer
    Volunteering ones’ time to help other coders. To answer the questions, and help the newbies.

    One can become an expert programmer, without ever achieving true mastery. Mastery is what comes after you start teaching others. At which point you start to get a
    good handle on HOW MUCH YOU STILL HAVE TO LEARN.

    View full-size slide

  93. Little boy boo

    View full-size slide

  94. Passion
    So now we come down to passion.

    What passion comes down to after perfecting your craft (or rather acknowledging that you will never ever perfect it, but can only keep learning and improving) is that you
    develop a passion for it.

    A passion that needs to find a way out

    View full-size slide

  95. Projects
    A need that manifested for me, when I started working on projects, “just because”

    View full-size slide

  96. WIMBY
    For many years, I worked on (and am still working on) an app called WIMBY. It’s gone through about 3 iterations now. Wells In My Back Yard. I’ve given MULTIPLE
    conference talks based on WIMBY. On what it means, and what it meant to work on, and what it taught me to work on it.

    Some of the problems I needed to solve to create the WIMBY app I envisioned were quite difficult and time consuming, and it took me weeks to figure it all out, so I
    figured all that research I did… it would be a CRIMINAL WASTE just to file it and forget it

    View full-size slide

  97. Core Data in Motion
    So I decided to write a book…

    That took about 3 years, LOL, but it was still a useful process and it taught me even more.

    Gawd knows, it got me a whole slough of conference invitations to talk about it.

    And eventually I even got back to WIMBY to actually finish the app.

    View full-size slide

  98. Teaching
    Now about teaching… I dabbled in teaching right from the very early days, when I was a teaching assistant at university. Over the years, I have taken many courses,
    some paid by my employers, but later on I educated myself.

    And eventually I took that next step of mastery: to teach.

    View full-size slide

  99. Rails Workshops
    Created a series of well received workshops. Rails for Real Developers, Rails 4 iOS Developers, RubyMotion for Rails Developers

    I’ve taught these workshops to a local audience in my former home of Calgary, and taken them around the world, teaching at RubyConfAU, NSScotland, and RailsConf in
    Phoenix.

    View full-size slide

  100. Rails for Real
    Developers
    Created a series of well received workshops. Rails for Real Developers, Rails 4 iOS Developers, RubyMotion for Rails Developers

    I’ve taught these workshops to a local audience in my former home of Calgary, and taken them around the world, teaching at RubyConfAU, NSScotland, and RailsConf in
    Phoenix.

    View full-size slide

  101. Rails for iOS
    Developers
    Created a series of well received workshops. Rails for Real Developers, Rails 4 iOS Developers, RubyMotion for Rails Developers

    I’ve taught these workshops to a local audience in my former home of Calgary, and taken them around the world, teaching at RubyConfAU, NSScotland, and RailsConf in
    Phoenix.

    View full-size slide

  102. RubyMotion for Rails
    Developers
    Created a series of well received workshops. Rails for Real Developers, Rails 4 iOS Developers, RubyMotion for Rails Developers

    I’ve taught these workshops to a local audience in my former home of Calgary, and taken them around the world, teaching at RubyConfAU, NSScotland, and RailsConf in
    Phoenix.

    View full-size slide

  103. Rails Bridge
    And with all that learning about teaching, I wanted to give back. To start to make a dent in that diversity problem.

    I volunteered at one of the first Rails Bridge events, teaching Ruby on Rails to absolute novices. But that was in the US, at Madison Ruby.

    View full-size slide

  104. Ladies Learning Code
    And when Ladies Learning Code

    View full-size slide

  105. Canada Learning Code
    now Canada Learning Code, got started here in Canada, I signed up as soon as I could.

    View full-size slide

  106. Mentor
    First as mentor for the HTML & CSS workshops in Calgary

    View full-size slide

  107. Instructor
    Later as an instructor for the Ruby workshop, both for adults and for kids.

    And if I thought I’d learned a lot, in the course of teaching other experienced developers, WOW, did I ever learn a lot more, teaching all those novices.

    View full-size slide

  108. Chapter Lead
    And finally after I moved to Lethbridge, I started a chapter there. And found out that leading a chapter is a lot more like being a manager than I signed up for...

    Still accepting applications for anyone who wants to take that Chapter over...

    View full-size slide

  109. Destination
    Exploration
    The University of Lethbridge is big on outreach and fostering STEM education to girls in the community. I’ve volunteered through their DE program as an instructor at
    their Friday afternoon science club for middle school girls. Teaching 3d modelling and basic programming with robots.

    View full-size slide

  110. WNDX School
    All of which eventually lead me to… starting my own online coding school, which I am just getting off the ground. There’s a lot of value in the CLC workshops, but they
    are mostly introductory. There needs to be a way forward from there. That’s what WNDX School is all about.

    View full-size slide

  111. Future
    And as I look to the future, I don’t really see my passion wearing itself out.

    View full-size slide

  112. Maker
    There’s the Maker movement

    View full-size slide

  113. Hardware
    So much interesting hardware and gadgets...

    View full-size slide

  114. Raspberry Pi

    View full-size slide

  115. Jewelbots
    From Sara Chipps

    View full-size slide

  116. MakeFashion
    Again a Canadian/Calgary success story, splicing together the maker movement with high fashion

    View full-size slide

  117. Stitchkit
    And they have just spun off their own crowd-sourced kit, to encourage others to start to MAKE FASHION

    View full-size slide

  118. Maker tools
    primary maker tools are software

    View full-size slide

  119. 3D Printing
    Needs 3D modelling software

    And slicing software to translate your model into something your device understands

    Software controllers for the hardware

    View full-size slide

  120. Laser Engraving

    View full-size slide

  121. And ooh boy, and I ever looking forward to the delivery of my MOOZ 3 in 1 crowdsource device later this month.

    View full-size slide

  122. Automation
    And what about automation? I started automating my first condo over 20 years ago.

    View full-size slide

  123. Webcam
    Keep in mind, it was crazy that I had a full-time Internet connection, dialup at 28.8k, at the time.

    View full-size slide

  124. but my whole office was utterly enthralled with the re-freshed every 5 minutes pictures of my dog, hanging out in the living room of my townhouse, looking out the
    window.

    View full-size slide

  125. Apple Homekit
    Now of course we have

    View full-size slide

  126. Google Home
    So many possibilities, the projects are literally endless

    View full-size slide

  127. So really, when people ask, where does it end…

    Sheep in the Deep

    View full-size slide

  128. Fini
    I’d have to say… I don’t see the end of my career yet. Too much fun stuff to do.

    View full-size slide

  129. All those little video clips are copyright TimeWarner.

    View full-size slide