Fork me on GitHub
Drew Verlee02:03:14

@slipset if you allow for remote and you looking for clojure,I sincerely doubt your going to get many ppl here that can't code fizzbuzz.


@nilrecurring It might play a role that the more experienced the person, not only in terms of coding but in terms of business experience the higher the likelihood they go freelance, open their own business or 'do their own thing'. So they won't apply to job offers.


Indeed. We’re also witnessing a big flourishing of small consultancies in the city, so that might be a factor as well.


So what should an aspiring junior developer with no computer science or programming background put on their CV to be as employable as possible? I’m about to dedicate six months to getting to that point, I want to make sure I don’t miss anything.


@amelia I can't speak for anyone but myself, but a nicely written cover-letter is


My cover letter, CV writing, interview and presentation skills are all good, it’s the technical requirements I don’t currently meet


I want to make sure I use this six months as well as I can


1) short 2) relates to the job-description, eg shortly describe how you match the required skills. If you don't have them, describe why you will be able to achieve them 3) Leave out the personality traits, I'll figure that out during the interview. Noone ever wrote "I don't work well in teams and I suck at solving problems", which means that "I work well in teams and am a great problem solver" is non-information.


companies like to see that you can get things done and that you can code; publishing smth to github that is properly done works wonders


@amelia if you have the time/possibility, putting up something on github, with a link to your github profile, will be good. Make sure to mention that in your cover letter.


blablabla don't have experience from X, but as you can see from my github project Y, I have have done some work in a related area.


I will definitely be able to do this. Can you give me more detail on what kind of skills I should be able to demonstrate, or what kinds of projects look best? Or does it not matter?


being a beginner yourself, you could do something like 4clojure that helps beginners. this kind of project demonstrates many skills


Something like 4Clojure that doesn’t rely on pre-existing programming knowledge would be really useful too... Thanks!


yep...almost no-one learns how to program starting with clojure. you can take advantage of that to know what to focus on


That’s a really good point. I’ll take any competitive advantage I can get.


When I look at someones code, I don't care too much about what it does, as in, it might be a todo list, or something spectacular, but I do look for


Consistency, simple things as indentation, naming, project layout.

Drew Verlee15:03:11

Out of the curiosity, have you written anywhere what you consider good indentation, naming and project layout?


Clear code that's fairly easy to read.


Trade-offs that we can discuss during the interview.


If you set up your project to build on travis/circle-ci and it deploys to heroku/aws etc, I'd be very happy, as it shows that you understand that there is more to developing than just writing the code.


This gives us a lot to talk about during the interview.


That’s really useful, thank you!


I’ve got a busy six months ahead :)


And do ask questions along the way of your project. A big part of doing something like that is that you learn a lot.


No worries on that front - I’m single-handedly populating #programming-beginners at the moment (though I hope more programming newbies will join me there someday...)


@amelia I'd heavily suggest to got to meetups in your location and start networking. In my place most meetups are hosted by it businesses and its very easy to get to know each other and also get to know the people that work there. Depending on the meetup its also often a pitch for hiring, as most businesses here are looking for developers. So go to meetups, get to know the people there and ask them specifically which skills they are looking for. Maybe you can also get an internship somewhere which could be more efficient than working for yourself for 6 months.


Ah, to clarify I have other projects I want to work on for six months, planning to devote half my day to that and the other half to developer training, but networking in that time is great advice, thank you. 🙂 I like going to meetups anyway, I’ll have to find out what exists in my new home and what I’ll have to travel to London for.


@amelia I’ll also put in a plug for — they’ve got a ton of online classes related to computing, including a class on Clojure that’s not too bad (not my favorite, but not too bad). Unlimited access for US$25 per month, and generally really nicely done. My son is using them to learn data science so he can try to break into tech (with a college degree in music).


how exactly does one learn "data science"? any concrete examples?

manutter5114:03:33 has a track for “Learn Data Science” IIRC. It’s got courses in Python, R, statistics, etc.

hubert02:03:47 has a Clojure courses also.


Thank you! I’ve generally not done too well with video tutorials, but I’ve joined and have enjoyed what I’ve seen of that so far, so maybe it would actually appeal to me more with programming.


I’d say is a much better source for Clojure-specific stuff, but will let you look over things like database stuff, javascript, React, etc. The surrounding ecosystem as it were


That’s another question I have, and thank you for giving me the right phrasing to ask it precisely! Which bits of the ecosystem should I study alongside Clojure?


That depends on where you’d like to be working (or in other words, what would you like to build)?


Most web sites need a database on the back end, so that’s the first bit that comes to mind


Also CSS if you need a nice looking front end


And possibly Sass (or Less) if CSS drives you too nuts 😉


I think CSS is a definite 🙂 I’ve learned bits and pieces before, but need to get better. Let’s say I’d want to build a web app, what would I need to learn to be able to do that end to end?


Bookmarked, thank you very much!


@amelia to complement the previous answers, here are some the main fears of an employer when considering hiring a programmer: 1. He/she won't play well with the rest of the team 2. He/she won't get stuff done 3. He/she will make a mess of our code 4. He/she won't learn fast enough So you should demonstrate achievements, abilities or strong willingness to improve yourself in these areas. To assess these, I would consider what you've made, what you've read, and what you say, in that order.


@amelia I would also strongly advise that you learn at least 2 (significantly different) programming languages. This is one of the most efficient ways to learn the distinction between the essential and the superficial - which is what many, many programmers miss in our industry.


For building a web site or web-based app, I’d say database, HTML, CSS. Also good to have some familiarity with Java (for Clojure) and JavaScript (for ClojureScript), just because that’s what they’re based on. I’d also recommend a framework like re-frame for the browser side, which implies some familiarity with React. But first things first, I’d say SQL for the database, and HTML/CSS for the front end


Thank you both, that’s really helpful! Going off @val_waeselynck’s advice, what is a significantly different programming language to Clojure that would be useful to learn alongside it?


Python would be a good example


JavaScript is closer to Clojure, but it's very useful in a lot of places


Thank you!


Oh and statically typed languages are interesting as well. So maybe Elm or PureScript or Scala, depending on what you want to build.


I have ideas of what I’d want to build as a learning project, but no idea yet what I need to know in order to do that. Part of the learning experience will be to find out as I go what tools are best suited to the job.


That's the spirit 🙂


I would advise not learning two languages at once.


I meant once I’m feeling confident in Clojure, what should I add to my plate. I’m assuming that you never feel like you’ve fully learned a language and there’s always more to learn and further to go, but that at some stage you feel grounded enough that you can start learning other useful things while your initial learning continues. It’s certainly not something I want to start just yet!


I recommend focusing on one language for at least six months or a year, especially if it's a half-time project. The thing to add to your plate would be different kinds of projects using the same language, for instance first building a small website, then making a few art or music projects with one of Clojure's drawing libraries, then finding a data set to analyze also in Clojure. Put the best results on Github—or, for the website, deploy it publicly with Heroku or AWS). This kind of spiral approach to learning the language, where you cover similar material from different angles after periods of disuse, is what I recommend.


Good to know, thank you very much!


I heavily second @U05092LD5 advice to start with one language. As a beginner ramp up time is much higher than a few years down the road.


More generally, I would recommend to learn only one topic at a time, dealing with 2 unknowns is confusing at best


But since it’s hard to know everything about a language, surely there gets a point where you’re on firm enough ground that it’s ‘done enough’ that you can start learning something else at beginner level? I did a degree in Japanese, and after our first intensive year we were allowed to study Chinese or Korean on top of that because by that point they knew it would be possible not to fudge your learning. Is it not the same for programming languages?


It is, but three months are not enough from my point of view. Before I started studying I needed more than three months of self learning to understand the pointer concepts in C. And that was just one concept alone.


That makes sense, thank you.


apart from Clojure, you can learn JS as a mainstream lang, Haskell to know what's possible with static typing, and PHP to know how good it is to have CLJ


Actually Java and JavaScript would be the most useful 2 IMO


I used to program in PHP full time. My fondest goal at this point is to forget PHP so thoroughly that I can no longer even spell it.


exactly the same here


I've worked in PHP after learning Clojure. Boy did that hurt


…I’m guessing the PHP recommendation was a joke then? 😅


it will not be useful but you will learn a lot about the industry and why clojure is better....or just avoid it...yeah (edit: it could be useful since more than half of current code used in the web is written in it, however it's legacy)


@amelia yes and no. To be a good programmer, you also have to learn to get your hands dirty, and PHP almost guarantees that your hands will get VERY dirty


Or just read "PHP: a fractal of bad design" and skip the insanity altogether.


Right… maybe I should save the PHP question for a little while then, until I’m a bit more confident in other things…


Despite all the jokes, PHP >5.0.0 (the good parts) is a fine language these days.


It is, but telling the good parts from the bad parts is not always easy, and the ecosystem still has a lot to catch up


Agreed, same as JavaScript


Definitely not a language to recommend to new programmers, especially not in isolation. Rasmus Lerdorf's philosophy and practice also deeply concerns me. I always come back to that 'Fractal of Bad Design' article, and this:


Hi @amelia, I would have to agree with @manutter51. Java and JavaScript would be solid choices to invest some time to learn (apart from Clojure(Script) of course 🙂).


I’d skip learning a new language for someone who still hasn’t finished their first one 🙂 — I’d only add HTML/CSS just because you need those for any website, and perhaps a little bit of SQL. With those 3, and any other language of choice, you should be able to make your own Web 1.0 style ToDo app. You’d have to learn about a lot of stuff along the way, e.g. HTTP, database connection, creating HTML on-the-fly, serving static files… no need to complicate that further. It’s easy to forget how many things someone needs to learn when we’ve been doing this for so long…


The crucial thing is that HTML/CSS/SQL are all declarative so are quite easier to wrap your head around.


@kwcharllie379 to answer you question: I would say that even though remote jobs are getting more and more common, finding a remote job is still complicated, even for people with a lot of experience. So, while there is a chance to land a remote job if you network a lot, you might have more luck by being willing to move around. If you’re from EU it’s pretty easy to get work anywhere in Europe, less easy to get Clojure work, but definitely at reach, there is a lot of people hiring onsite.


@seancorfield discussed the scarcity of "mid-range" clojure devs. Anyone care to chime in on minimum clojure skills to be considered "mid-range"?


Depending on how active each developer is, I'd think a mid-range Clojure dev is someone that has been using it on the job for around 3 years, but YMMV


I would define it quite broadly as “with enough knowledge of clojure to be able to carry on a project alone and with a team, and knowledgeable about practices, version control, databases, etc”


Setting a time in years is quite tricky, as working on one single project for 3 years develops different skills than picking up a new project every 6 months for 3 years


But I think there is a scarcity of mid-range developers in general, not only in clojure


Yip, hence why I say YMMV. I think there are people that completely immerse themselves in technologies and can make the same headway in 6 months as others will make in 6 years. It all comes down to someone's desire to put in the effort


As @nilrecurring says, very hard to put a time on it because it also depends how experienced the dev is in other languages (and what those languages are) before they tried to learn Clojure. I'd probably expect someone who has 2-5 years of commercial, on-the-job Clojure experience to be roughly "mid-range" tho'. Some of those will still be "junior", some will be "senior" by that point. There are some skills that just take time in any language (learning to write maintainable, extensible, readable code) and some folks do that almost "naturally" and others spend a lifetime and never achieve that.


Yes, I agree on everything. And it would probably help to define “senior” in here: e.g. I think a senior dev is someone capable to lead a team and tutor and assist teammates into writing that maintainable and readable code you mentioned. (but I’m very curious to hear better definitions, as I’m not very happy with this one)


Agreed: "senior" should be able to lead a team -- from a technical point of view -- and mentor other devs. Lead a team from a management p.o.v. is often a different skill tho' 🙂


I agree, but leading a team from a tech point of view means also being able to constructively argue and motivate choices (and communicate a lot in general), so having a certain amount of social skills is necessary to have progress

Karol Wójcik17:03:33

@nilrecurring Thank you, I will keep try