Live data from Hacker News

Ask HN: What does mastery look like in software engineering?

news.ycombinator.com

151–160 of 290 posts

Re: Ask HN: What does mastery look like in software engineering?

#151
Lots of people here seem to think they know what mastery looks like, but to tell whether someone is a master in something takes another master. And I doubt most of the people who think they are one, actually are.

I will try to avoid doing that myself, specially I will avoid implying I am one, but I think it's possible to come up with a few criteria to help you "judge" the level of mastery one has in software engineering:

* can create a project from scratch without pondering forever about each and every choice, while picking reasonable choices that, together, approach optimality given the circumstances (notice that this depends mostly on the team/company involved so there's not one right universal answer).

* can break up the work in manageable pieces so that progress can be made (regardless of how many people actually work on the project) and measured easily. This is really hard and can only be done properly by a practitioner (meaning, no, your PM can't do that for you).

* can establish a good base design that facilitates achievement of the project's objectives (e.g. if performance-focused, then architecture might differ significantly from a more maintainability-focused one).

* knows to apply the right amount of testing/automation (too much or too little can be damaging).

* can focus on the task at hand, avoiding unnecessary work (many great technical developers fail to do this due to their preference for harder challenges that may not be the right ones to address).

* can communicate well (because knowing it all but not being able to pass the knowledge on or convince others will cause most of your knowledge to become inaccessible).

Notice that to be able to effectively rate a person or team against each criterion is itself something subjective sometimes, so you won't get a clear-cut answer no matter how you look at it... but I am sure that there are ways to use metrics for each one, though we all know the problem with metrics (people will game it), so yeah, it's difficult to figure this out. Just make sure you don't fall into the trap of judging people solely on subjective grounds though as our natural biases are quite crippling (see psychological studies about human bias) and will cause you to misjudge others, sometimes disastrously.

Re: Ask HN: What does mastery look like in software engineering?

#152
post #124

I’ve been pondering this a lot lately, as an engineering leader. Masters in my organization have an extremely high ratio of value shipped to hours worked. This means two things. They are able to discern and avoid work that does not provide value (this is often their greatest skill), and the best ones can direct a whole team away from large swaths of work that is not valuable. And they are able to build systems such t…

I think sometimes this means they do the unsexy stuff. For instance, having an easy build process, or understanding version numbers, or preventing an upgrade to this year's compiler.

Enabling the org to accomplish more with less (or keep it from falling into different pitfalls) is sexy.

I feel it's a core part of my job to keep the rest of the eng team happy and producing value. A lot of times this comes down to seeing problems as they arise (ideally before them, but it gets harder to convince management of future issues if they haven't manifested yet).

Re: Ask HN: What does mastery look like in software engineering?

#153
In my experience it means you rarely write software but you've moved into architecting software platforms and telling other people how to write software.

I'm just a devops guy but my current project is like that, where our lead architect has really impressed me by drawing up the design of a very scalable system. My task is merely to implement and manage kubernetes for it and we have other devs who are using java, .net and golang to write the components.

This impresses me a lot how our lead can come up with such a design and make it work from paper to practice.

Re: Ask HN: What does mastery look like in software engineering?

#154

Earlier quoted context omitted.

> They are able to discern and avoid work that does not provide value (this is often their greatest skill) junior dev here...could elaborate a little on what this means? Generally speaking the PM is the one creating a roadmap and informing what is the highest value item to work on. I must be misunderstanding what you're referring too.

I can give you an example from my career. We were building out a new webapp feature to deliver medical textbooks, which we had as xml documents direct from the publisher. Our customers, mostly large academic libraries and medical research companies, would get the electronic access to the books for much less than it would cost to get sufficient physical copies, and our cost for supplying the books would be minimal. A…

It is ridiculous they don't think of this themselves. Not in technical detail, but just the general idea. It has nothing to do with tech, just thinking. I feel thinking in general has been outsourced.

Re: Ask HN: What does mastery look like in software engineering?

#156
In the field of programming languages design and implementation look no further than Erlang, MIT Scheme (a true gem), GHC, Scala and Go.

Those are creations of exceptional masters.

For smaller projects take a look at nginx, Tokyo cabinet (a DB), redis, and, perhaps, python's requests and Clojure (one man's effort to unify obvious things).

Again, these are masterpieces, not just merely good things.

Re: Ask HN: What does mastery look like in software engineering?

#158
post #49

Earlier quoted context omitted.

It’s just a simple and objective yet general measure of mastery If you have these skills there is a very high likelihood that you can do most other things that are thrown at you Most of the other answers have all these high level wishy washy specifications, I thought I’d take a more brass tacks approach.

It is mostly beginners and students that think learning programming languages is difficult or is a big part of the difficulty of writing software.

Well I’m neither of these so ...

I suppose this list could be called necessary but not sufficient. The question is what does a master “look like”. If you can only work with one or two languages you are by no means a master.

Re: Ask HN: What does mastery look like in software engineering?

#159
Software Engineering doesn't exist in isolation.

You can't master Software Engineering without mastering interfacing with the rest of the organisation.

I don't care how intellectually pure your implementation is or how fast you deliver things. If it can't easily connect to, use and get used by the rest of the business, it's a folly.

A master of software engineering delivers what the business needs in the minimum time possible.

Some businesses care about maintenance. Some don't.

Some care about UI/UX, others with a trapped audience don't.

Some care about efficiency and optimisation, others don't.

You can't be a "master" until you have a sense of what your business is interested in. Not what it CLAIMS to be interested in, but really cares about.

It's been different in every company I've ever worked for.

Good luck.

Re: Ask HN: What does mastery look like in software engineering?

#160

I don't think there is mastery in this work. I've been doing this for decades, and I still think my code from 6 months ago is crap, no matter how much I learn and improve. Mastery would imply that you can do it all, and do it right, on any project, and there is just too much change and evolution for that to ever be true. My goal is simply that I continue to improve.

I also have this battle. It feels like each time I take another step up the mountain, the mountain itself grows.

Doesn't matter how much time/effort I expend, there is just no way to keep up to date with every moving piece in our industry (from hardware, to firmware, to software, to laws, to programming languages, to cryptography/security, to web standards, to multimedia standards/codecs, to physics etc). It seems like every single action that we take comes with trade-offs and that we can never make an ultimate good choice - that choice is only valid for a short time before it's trade-off gets triggered.

A carpenter has a set of tools. He has a set of materials. He has a set of blueprints/techniques. He can consistently build table with x qualities. When he is done with the table, it is done. He doesn't have to spend all of his time relearning how to build tables over and over, and for old tables to quickly self-destruct if he stops baby-sitting them. Or for some 12 year old carpenter in Russia to cause his table's wood to rot.

Every year that passes by, humans accumulate more and more knowledge. It would be impossible for a few individuals to know everything as their time in this life is limited. Thus we get forced to specialize, else we can get pulled into the general knowledge stream which can be overwhelming.

Post reply on HN