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. ! 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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…
  8. 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.
  9. 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”.
  10. 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.
  11. Programmer However, that first title upon graduating and starting at

    Shell was “Programmer/Analyst”. Since the creation of the first programmable device…
  12. not actually Charles Babbage’s Analytical Engine, although his & Ada

    Lovelace’s story is a favourite of mine…
  13. 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.
  14. 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
  15. 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.
  16. 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.
  17. 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”.
  18. 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
  19. 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
  20. Distinguished This is rarified territory now. You get called distinguished

    when your accomplishments are known far and wide, OUTSIDE your company or industry.
  21. 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.
  22. 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.
  23. 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
  24. Graphic (thank you Bootstrap and App Templates), and to appreciate

    the value a professional designer brings to my projects.
  25. UI

  26. Tester Software testing is a sub-specialty you may find yourself

    attracted to. Certainly coding is a part of testing.
  27. 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.
  28. 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
  29. 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…
  30. I’m afraid I’ll have to argue that it CAN BE

    all three. At least, that’s what it has been for me.
  31. 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
  32. 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.
  33. 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.
  34. 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.
  35. 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.
  36. Certification And oh, myyyyy the certifications. Big corps just LOVE

    to have their staff certified, and certification programs are happy to oblige.
  37. 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.
  38. 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.
  39. 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.
  40. The thing to remember is… you need to enjoy the

    work. And if you don’t enjoy it any more...
  41. Craft Ok, let’s get out of the corporate world for

    a while, and talk about the craft of software.
  42. 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.
  43. 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.
  44. 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.
  45. 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
  46. 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?
  47. 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
  48. 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.
  49. 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
  50. 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
  51. 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
  52. 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.
  53. Schools of Thought And along with the masters, we also

    have schools of thought for software.
  54. XP

  55. 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.
  56. 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.
  57. Groups So, it’s not always individual masters you need to

    learn from. Sometimes you can learn from the collective
  58. 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
  59. 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.
  60. 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
  61. 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.
  62. 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
  63. Projects A need that manifested for me, when I started

    working on projects, “just because”
  64. 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
  65. 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.
  66. 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.
  67. 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.
  68. 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.
  69. 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.
  70. 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.
  71. 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.
  72. Canada Learning Code now Canada Learning Code, got started here

    in Canada, I signed up as soon as I could.
  73. 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.
  74. 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...
  75. 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.
  76. 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.
  77. Future And as I look to the future, I don’t

    really see my passion wearing itself out.
  78. Stitchkit And they have just spun off their own crowd-sourced

    kit, to encourage others to start to MAKE FASHION
  79. 3D Printing Needs 3D modelling software And slicing software to

    translate your model into something your device understands Software controllers for the hardware
  80. And ooh boy, and I ever looking forward to the

    delivery of my MOOZ 3 in 1 crowdsource device later this month.
  81. X10

  82. Webcam Keep in mind, it was crazy that I had

    a full-time Internet connection, dialup at 28.8k, at the time.
  83. 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.
  84. Fini I’d have to say… I don’t see the end

    of my career yet. Too much fun stuff to do.